Zabbix入門のメモ（インストール）

仕事で使うので、Zabbixのメモ。
書籍「Zabbix統合監視実践入門」をベースにお勉強します。
使用するバージョンは2.2.3。書籍とバージョンが違うけれども気にしない。

# インストール
## Zabbixエージェント
LinuxにもWindowsにも入る。
とりあえずCentOSに対して、yumでzabbixのリポジトリを追加してインストール。

[Linuxの設定ファイル](https://www.zabbix.com/documentation/2.2/manual/appendix/config/zabbix_agentd)
[Windowsの設定ファイル](https://www.zabbix.com/documentation/2.2/manual/appendix/config/zabbix_agentd_win)

```rb:recipes/agent.rb
# zabbixのリポジトリを追加
include_recipe 'zabbix-origin::yumrepo'

# zabbix-agentのインストール
package "zabbix-agent"

# サーバのIPアドレス、自身のホスト名とIPアドレスを設定ファイルに記載
template "/etc/zabbix/zabbix_agentd.conf" do
  source "zabbix_agentd.conf.erb"
  variables(
    :server_ipaddr  => node['zabbix']['server']['ipaddr'],
    :agent_hostname => node['zabbix']['agent']['hostname'],
    :agent_ipaddr   => node['zabbix']['agent']['ipaddr']
  )
  notifies :restart, "service[zabbix-agent]"
end

# zabbix-agentの自動起動設定と起動
service "zabbix-agent" do
  supports :status => true, :restart => true
  action   [:enable, :start]
end
```

## Zabbixサーバ
ZabbixサーバにはバックエンドとしてDBが必要で、`MySQL`、`PostgreSQL`などが利用できる。
`PostgreSQL`を使いたいけど、ネットで見てる感じだとみんなMySQLを使っているようなので、`MySQL`で構築。
テンプレートとかの設定はDBの値で保持しているみたいなので、設定を変更したい場合はインポートするためのSQLを自動生成してあげればいいのかな。

[設定ファイルのリファレンス](https://www.zabbix.com/documentation/2.2/manual/appendix/config/zabbix_server)

```rb:recipes/server.rb
# リポジトリの追加とZabbixエージェントのインストール
include_recipe 'zabbix-origin::yumrepo'
include_recipe 'zabbix-origin::agent'

# MySQLのインストール、設定、自動起動設定、起動
package 'mysql-server'

template "/etc/my.cnf" do
  source "mysql_my.cnf.erb"
  variables(
    :buffer_pool_size   => node['zabbix']['server']['mysql']['buffer_pool_size']
    :log_file_size      => node['zabbix']['server']['mysql']['log_file_size']
    :log_files_in_group => node['zabbix']['server']['mysql']['log_files_in_group']
  )
  notifies :restart, "service[mysqld]"
end

service "mysqld" do
  supports :status => true, :restart => true
  action   [:enable, :start]
end

# zabbix-serverのパッケージをインストール
%w[
  zabbix-server-mysql
  zabbix-web-mysql
  zabbix-web-japanese
].each do |p|
  package p do
    version "#{node['zabbix']['version']}-1.el6"
  end
end

# MySQLへのデータ初期投入
import_sql_dir = "/usr/share/doc/zabbix-server-mysql-#{node['zabbix']['version']}/create"
template File.join(import_sql_dir, "create.sql") do
  source "mysql_create.sql.erb"
  variables(
    :dbhost     => node['zabbix']['server']['mysql']['dbhost']
    :dbname     => node['zabbix']['server']['mysql']['dbname']
    :dbuser     => node['zabbix']['server']['mysql']['dbuser']
    :dbpassword => node['zabbix']['server']['mysql']['dbpassword']
  )
end

execute "create zabbix database and user" do
  command "mysql -uroot < create.sql && touch create.sql.executed"
  creates "create.sql.executed"
  cwd     import_sql_dir
end

%w[
  schema.sql
  images.sql
  data.sql
].each do |sql|
  execute "import #{sql}" do
    command "mysql -uroot #{node['zabbix']['server']['mysql']['dbname']} < #{sql} && touch #{sql}.executed"
    creates "#{sql}.executed"
    cwd     import_sql_dir
  end
end

# Zabbixサーバの設定ファイルの編集
template "/etc/zabbix/zabbix_server.conf" do
  source "zabbix_server.conf.erb"
  variables(
    :dbhost     => node['zabbix']['server']['mysql']['dbhost']
    :dbname     => node['zabbix']['server']['mysql']['dbname']
    :dbuser     => node['zabbix']['server']['mysql']['dbuser']
    :dbpassword => node['zabbix']['server']['mysql']['dbpassword']
  )
  notifies :restart, "service[zabbix-server]"
end

template "/etc/httpd/conf.d/zabbix.conf" do
  source   "httpd_zabbix.conf.erb"
  notifies :restart, "service[httpd]"
end

template "/etc/zabbix/web/zabbix.conf.php" do
  source "web_zabbix.conf.php.erb"
  variables(
    :dbhost     => node['zabbix']['server']['mysql']['dbhost']
    :dbname     => node['zabbix']['server']['mysql']['dbname']
    :dbuser     => node['zabbix']['server']['mysql']['dbuser']
    :dbpassword => node['zabbix']['server']['mysql']['dbpassword']
  )
  notifies :restart, "service[zabbix-server]"
end

# zabbix-serverとapacheの自動起動設定と起動
service "zabbix-server" do
  supports :status => true, :restart => true
  action   [:enable, :start]
end

service "httpd" do
  supports :status => true, :restart => true
  action   [:enable, :start]
end
```

# クイックスタートガイド
* Webインタフェースへのログインはhttp://＜サーバ＞/zabbix
* デフォルトのアカウントはアカウント：Admin、パスワード：zabbix
* 日本語化するにはWebインタフェースから[管理] - [ユーザー]　→　メンバーを選択して言語を日本語にするか、データ初期投入前に`/usr/share/doc/zabbix-server-mysql-2.2.3/create/data.sql`の`users`テーブルへの`INSERT`文を`en_US`→`ja_JP`に変更しておく