Zabbix 3.0をCentOS 7にインストール

**注記：** 以前、Blogspotで書いていた[記事](http://tnk77.blogspot.jp/2015/03/zabbixcentos-7.html)のZabbix 3.0対応版です。

ようやくZabbix 3.0がリリースされました！

折角リリースされたので、まずは手順を整理して公開しなおします。

# 注意点
Zabbixサーバーをインストールする先のOSは、CentOS 7とします。
これは、Zabbix 3.0の新機能を利用するためには、各種ライブラリのバージョンの制限があって、CentOS 6だと標準のパッケージだけでは実現できないからです。

特に、Zabbix 3.0では、PHPのバージョンとして5.4以上が必須となりました。CentOS 6でもSCLを利用すればphp54パッケージでPHP 5.4を動かすことができるのですが、まずは、標準のパッケージ構成でもZabbix 3.0の新機能を利用できるCentOS 7での環境構築をご紹介します。

# システム構成
とりあえず、Zabbixサーバーを構築して、Zabbixエージェントもインストールすることで、そのZabbixサーバーの状態も監視できるような環境を構築します。

利用する主なソフトウェアとそのバージョンは以下の通りです。

- Zabbix : Zabbix 3.0.0
- OS : CentOS 7 (バージョン7.2.1511)
- PHP : PHP 5.4 (CentOS 7標準)
- DBMS : MariaDB 5.5 (CentOS 7標準)

# １．OSのインストール
最初にCentOS 7をインストールします。

インストールするパッケージは、デフォルトの「最小限のインストール」で構いません。プロキシ経由でも構わないので、インターネットへの接続とyumコマンドが利用できるような環境を用意します。

CentOS 7をインストールし終えたら、必ずyum updateでOSを最新の状態にしてください。

```shell-session
# yum update
```

SELinuxは、enforcingでチャレンジしてみます。

# ２．OS再起動
yumで更新したパッケージやカーネルなどを反映させるためにOSを再起動しておきます。

```shell-session
# reboot
```

# ３．firewalldの設定
rebootしたら、firewalldの設定を行います。
Zabbixサーバーが外部から接続を受けるのは、Zabbixエージェントからのアクセスと、Webインターフェースへのアクセスです。
SNMPトラップや他のアクセスを許可する場合は、それらも許可するようにしてください。

つまり、Zabbixサーバーには、以下のような設定を行います。

```shell-session
# firewall-cmd --add-port=10051/tcp --zone=public --permanent
# firewall-cmd --add-service=http --zone=public --permanent
# systemctl restart firewalld
```

そして、Zabbixエージェントをインストールしたサーバーがfirewalldを利用しているなら、以下のような設定を行います。

```shell-session
# firewall-cmd --add-port=10050/tcp --zone=public --permanent
# systemctl restart firewalld
```

Zabbixエージェントへのアクセスが、ローカルのループバックを利用するのであれば、10050をあける必要はありません。つまり、Zabbixエージェントが外部のIPアドレスからアクセスされる場合には、10050をあけます。
Zabbixサーバーが、各監視対象にインストールしたZabbixエージェントからのアクセスを外部から受ける時には、10051をあけます。

上記のコマンド実行例では、publicからならアクセスOKにしてしまっているので、セキュリティを重視する環境であれば、もっとアクセス可能なゾーンを特定するなど厳密に設定した方が良いでしょう。

# ４．Zabbix LLCのリポジトリ登録
Zabbix LLCが、RHEL 7用のyumのリポジトリを公開しているので、それを登録します。

3.0系用のリポジトリ登録は以下のように行います。

```shell-session
# yum install http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
```

# ４．Zabbix関連のパッケージインストール
Zabbixサーバーの本体、ZabbixサーバーのWebインターフェース、自分自身を監視するためにZabbixエージェントをインストールします。
ここでインストールするのは、MySQLまたはMariaDB用です。

```shell-session
# yum install zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese zabbix-agent
```

zabbix-web-japaneseというパッケージは、Webインターフェースで日本語のフォントを利用できるようにするための設定用パッケージです。

あと、これまでのバージョンとはパッケージ構成が変更されているのでご注意ください。
具体的には、「zabbix」「zabbix-server」「zabbix-proxy」というパッケージは無くなっています。ZabbixサーバーやZabbixプロキシに関しては、利用するDBMSに合わせてパッケージを選択するだけになります。

# ５．MariaDBのインストール
CentOS 7から、標準ではMySQLのサーバのパッケージ(mysql-server)が含まれなくなったので、その代わりにMariaDBのサーバ(mariadb-server)をインストールします。

```shell-session
# yum install mariadb-server
```

MariaDB用の設定を行っておきます。

```shell-session
# vi /etc/my.cnf.d/server.cnf
```

変更内容は以下の通りです。

```
[mysqld]
character-set-server = utf8
collation-server     = utf8_bin
skip-character-set-client-handshake
innodb_file_per_table
```

メモリに余裕がある場合は、メモリの割り当てなどの設定も行うようにしてください。
設定を追加したら、データベースの起動と自動起動の設定を行います。

```shell-session
# systemctl start mariadb
# systemctl enable mariadb
```

# ６．初期データベースの作成
DBMS上にデータベースとそれにアクセスするためのユーザを作成します。

ここでは、DBMS上のrootにパスワードつけないままで説明してしまっていますが、必ずrootのパスワードを付けて運用するようにしてください。
zabbixユーザーのパスワードも以下の例とは別の物にしてください。

```shell-session
# mysql -uroot
MariaDB [(none)]> create database zabbix;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'password' ;
MariaDB [(none)]> exit
#
```


テーブルを作成して、初期データも投入します。

```shell-session
# zcat /usr/share/doc/zabbix-server-mysql-3.0.0/create.sql.gz | mysql -uroot zabbix
```

今回のパッケージから、SQLファイルがまとめて圧縮されて提供されています。
ソースのtarball(zabbix-3.0.0.tar.gz)の方には、schema.sql、images.sql、data.sqlがありますので、それぞれのファイルを確認されたい場合は、tarballを展開してご確認ください。
tarballのダウンロードは[ここ](http://www.zabbix.com/download.php)からできます。

パス名は、バージョンごとにバージョン番号をパスに含んでいますので、インストールしたバージョンに合わせてパスを変更してください。

# ７．Zabbixの設定ファイルの更新
ここまでの設定のままであれば、最低限の設定としては、DBPasswordを設定するだけです。
DB作成時のパスワードをDBPasswordに設定してください。

```shell-session
# vi /etc/zabbix/zabbix_server.conf
```

設定内容は以下の通りです。

```shell-session
DBPassword=password
```

# ８．ZabbixのWebインターフェース用設定修正
Zabbixのパッケージのデフォルトでは、PHPのtimezoneの設定がコメントアウトされているので、設定を有効にしてタイムゾーンが日本ならば、Asia/Tokyoに設定します。

```shell-session
# vi /etc/httpd/conf.d/zabbix.conf
```

設定箇所は以下の部分です。

```shell-session
php_value date.timezone Asia/Tokyo
```

# ９．各種デーモン起動
以下のコマンドで、各サービスを起動して自動起動も設定します。

```shell-session
# systemctl start zabbix-server
# systemctl start zabbix-agent
# systemctl start httpd
# systemctl enable zabbix-server
# systemctl enable zabbix-agent
# systemctl enable httpd
```

# １０．Webインターフェースにアクセス
ブラウザを利用して、
http://ZabbixサーバーのIPアドレス/zabbix/
にアクセスします。

最初のアクセス時は、Zabbix設定のウィザードが実行されるので、DBへのアクセス情報などを入力して次へ次へと進めてください。
「Configure DB connection」では、データベース作成時に指定したUserとPasswordを必ず入力してください。

設定が終わるとログイン画面になります。アカウント「Admin」、パスワード「zabbix」でログインしてください。

# １１．Zabbix serverの監視を有効に設定
ログイン後、まずは日本語画面に切り替えます。

右上の人型のアイコンをクリックしてUser Profileを開き、LanguageとしてJapaneseを選択してSaveボタンを押してください。

# １２．SELinuxの制限解除
ここまでの手順をそのまま行うと、Webインターフェースにログイン後、「監視データ」をクリックして「ダッシュボード」をクリックしてダッシュボードを表示させると、「Zabbixサーバーの起動」の状態が「いいえ」になっていると思います。

これは、SELinuxによって、httpdプロセスからzabbix_serverプロセスへの接続が拒否されているからです。
/var/log/audit/audit.log にもエラーが記録されているはずです。

そこで、httpdからzabbix_serverにアクセスできるよう、SELinuxの設定を変更します。
CentOS 7であれば、こんな時のための設定が用意されています。

まず、zabbix用にどんな設定があるか確認してみましょう。
確認には、getseboolコマンドを利用します。zabbix関連に限定したいので、ついでにgrepしてしまいましょう。

```shell-session
# getsebool -a|grep zabbix
httpd_can_connect_zabbix --> off
zabbix_can_network --> off
#
```

1つめの「httpd_can_connect_zabbix」は、さきほどのhttpdからzabbix_serverにアクセスを許可するかどうかですので、これをonにします。
ついでに、zabbix_serverプロセスから他のネットワークにアクセスできるよう2番目の設定もonにします。

```shell-session
# setsebool -P httpd_can_connect_zabbix on
# setsebool -P zabbix_can_network on
#
```

これで、ダッシュボードの「Zabbixサーバーの起動」の状態が「はい」になったはずです。

# １３．Zabbixサーバー自体の監視開始

そして続いて、「設定」をクリック後に「ホスト」をクリックしてホスト一覧を表示させ、表示された「Zabbix server」というホストのステータスの「無効」をクリックして「有効」に変更すれば、Zabbixサーバ自体の監視が開始されます。 

ただし、デフォルトのテンプレート「Template OS Linux」だと、環境によってはトリガーの「Too many processes on {HOST.NAME}」が閾値を超えてしまうので、状態をご確認頂いて問題が無いようであれば、閾値を例えば500などと変更して正常な状態に戻してください。

条件式の設定例は以下のようになります。

```
{Template OS Linux:proc.num[].avg(5m)}>500
```

こんな画面になりました。(テーマとしてDarkを選択)

![Dashboard2.png](https://qiita-image-store.s3.amazonaws.com/0/101989/fbd10a3d-ab5a-ded4-bc00-01cc14dd068f.png)


# 最後に
Zabbix 3.0の紹介は、[OSC 2016 Tokyo/Spring](http://www.ospn.jp/osc2016-spring/)でも行う予定ですので、興味のある方はOSCにもご参加ください。

ご質問は随時お受けいたします。