[Zabbix 3.2][Ubuntu 16.04] Zabbix環境構築手順まとめ

サーバーの監視用途にZabbix環境を作成したため、手順をメモ

# Zabbix公式
[Zabbixオフィシャル日本語サイト :: エンタープライズクラスの分散監視オープンソースソリューション](http://www.zabbix.com/jp/)

ドキュメント：
[Zabbix documentation [Zabbix Documentation 3.2]](https://www.zabbix.com/documentation/3.2/start)

# Zabbix Server セットアップ手順
今回は以下の環境で作成しました。（実際は[Vagrantで作成した仮想マシン上のUbuntu](http://qiita.com/koara-local/items/e5d1226e2942cf36ef42)ですが手順は省略します）

| 項目 | 詳細 |
|:-:|:-:|
| OS | Ubuntu 16.04 LTS / 64bit  |
| Zabbix  | 3.2 |
| PostgreSQL | 9.5 |

## [Option] 日本語化対応

ZabbixのWebUIの日本語化の際に、localeの選択ができるようになっている必要があります。

```console:日本語化対応
$ sudo apt-get install language-pack-ja
```

## Zabbixのリポジトリの設定

Ubuntu16.04のデフォルトでもzabbixを取得することはできますが、2.xと古いため、今回は3.2をインストールします。
(マイナーバージョンが上がっていることが考えられるため、以下のリンク先から取得して下さい）

[1 Repository installation [Zabbix Documentation 3.2]](https://www.zabbix.com/documentation/3.2/manual/installation/install_from_packages/repository_installation#for_ubuntu)

```bash
$ wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb
$ sudo dpkg -i zabbix-release_3.2-1+xenial_all.deb
$ sudo apt-get update
```

## Zabbix(PostgreSQL)向けパッケージのインストール

データの保存先として、MySQLまたはPostgreSQLを選択することができます。

[2 Server installation with MySQL database [Zabbix Documentation 3.2]](https://www.zabbix.com/documentation/3.2/manual/installation/install_from_packages/server_installation_with_mysql#debianubuntu)
[3 Server installation with PostgreSQL database [Zabbix Documentation 3.2]](https://www.zabbix.com/documentation/3.2/manual/installation/install_from_packages/server_installation_with_postgresql#debianubuntu)

本記事では、3のPostgreSQLを利用した環境作成で検証した結果を記載します。

```bash:zabbix-serverとwebフロントエンドのインストール
$ sudo apt-get install zabbix-server-pgsql zabbix-frontend-php
```

Zabbixが稼働しているサーバーも監視対象にするため、zabbix-agentもインストールします。

```bash:zabbix-agentのインストール
$ sudo apt-get install zabbix-agent
```

## 依存パッケージのインストール

後の手順でパッケージが不足していると言われたため、以下を追加でインストールします、

```
$ sudo apt-get install php7.0-bcmath php7.0-xml php7.0-mbstring php7.0-pgsql fonts-vlgothic
```

php7.0-pgsql => これがないと初期設定でPostgreSQLが認識されない。
fonts-vlgothic => 日本語フォント。グラフのレンダリング時に日本語を使用する場合に必要。

## zabbix 用のDBの作成

以下は作成例です。PostgreSQLの[認証方式](https://www.postgresql.jp/document/9.3/html/auth-methods.html)に関しては使用している環境に合わせて適切に設定して下さい。

```text:PostgreSQLの設定
$ sudo sed -i -e '/^local.*all.*all.*/s/peer/trust/' /etc/postgresql/9.5/main/pg_hba.conf
$ sudo -u postgres createuser -a -U postgres -P zabbix
Enter password for new role:
Enter it again:

$ sudo -u postgres psql

postgres=# create database zabbix owner zabbix encoding UTF8;
postgres=# \q
```

## 作成したDBの初期化

DBの作成後、作成したDBをZabbix用に初期化します。

```
$ zcat /usr/share/doc/zabbix-server-pgsql/create.sql.gz | psql -U postgres zabbix
```

## /etc/zabbix/zabbix_server.conf の変更

作成したDBに合わせてzabbix-server設定ファイルを修正します。

```
$ vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=<zabbix db user password>
DBPort=5432
```

DBName, DBUser, DBPasswordは前段で作成したDBの設定に合わせて設定して下さい。
DBPortの`5432`はPostgreSQLのデフォルト値になります。

こちらの設定はZabbixのWebからの初期設定時にデフォルト値にもなりますが、Web画面で設定する内容はあくまでも `zabbix-frontend` 向けの設定のため、`zabbix_server.conf` 自体もちゃんと設定しておかないと後々エラーになりますので必ず設定して下さい。

## zabbixのサービスの起動

systemdからzabbix-serverを起動します。(Ubuntu15.04よりupstartからsystemdに変わっています）

```
$ sudo service zabbix-server start
$ sudo update-rc.d zabbix-server enable
```

## /etc/zabbix/apache.conf の date.timezone を変更する

date.timezoneの箇所のみコメントアウトしてありますので、環境に合わせて変更します。
基本的には `Asia/Tokyo` にするかとは思うんですが、その他にする必要がある場合の設定値は以下で確認できます。
[PHP: List of Supported Timezones - Manual](http://php.net/manual/en/timezones.php)

```apache:/etc/zabbix/apache.conf
    <IfModule mod_php5.c>
        php_value max_execution_time 300
        php_value memory_limit 128M
        php_value post_max_size 16M
        php_value upload_max_filesize 2M
        php_value max_input_time 300
        php_value always_populate_raw_post_data -1
        php_value date.timezone Asia/Tokyo
    </IfModule>
    <IfModule mod_php7.c>
        php_value max_execution_time 300
        php_value memory_limit 128M
        php_value post_max_size 16M
        php_value upload_max_filesize 2M
        php_value max_input_time 300
        php_value always_populate_raw_post_data -1
        php_value date.timezone Asia/Tokyo
    </IfModule>
```

## apacheのサービスの再起動

```
$ sudo service apache2 restart
```

## サービスの起動確認

ブラウザから `http://<serverのip>/zabbix` にアクセスします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/37721/f7f08053-373f-d77f-9d87-733f546835e2.png)

残りの手順は以下のページを参照して下さい。（上記の設定が行われていれば基本的に次へなどを押すだけのはず）

[3 Installation from sources [Zabbix Documentation 3.2]](https://www.zabbix.com/documentation/3.2/manual/installation/install#installing_frontend)

初期パスワードでログインします。（初回ログイン後にパスワードは変更して下さい）

| Username | Password |
|:-:|:-:|
| Admin  | zabbix  |

初回にWebUIで行った設定は以下で変更できます。

```php:/etc/zabbix/web/zabbix.conf.php
<?php
// Zabbix GUI configuration file.
global $DB;

$DB['TYPE']     = 'POSTGRESQL';
$DB['SERVER']   = 'localhost';
$DB['PORT']     = '5432';
$DB['DATABASE'] = 'zabbix';
$DB['USER']     = 'zabbix';
$DB['PASSWORD'] = 'zabbixuserpass';

// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';

$ZBX_SERVER      = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = '';

$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;

```

## [Option] WebUIの日本語化
WebUIを日本語化する場合は以下のようにします。

Administration => Users => Admin => LanguageでJapanese(ja_JP)を選択

![image.png](https://qiita-image-store.s3.amazonaws.com/0/37721/85a1a087-afae-774f-2adc-91e1c3b4ffd7.png)


# Zabbix Agentの設定
## Zabbix Server自身の設定（Ubuntu）

Zabbixが稼働しているサーバー自体も監視対象にする。
基本的には `zabbix-agent` をインストール後、zabbix-serverと同様にserviceを立ち上げれば良いです。

初期状態だとZabbix Serverからのアクセスが無効化されているため、有効化する必要があります。
Configuration => Hosts => 「Zabbix server」のStatusがDisabledになっているのでクリックして有効化

## Linux

注意点として、ファイヤーウォールの設定等でZabbix AgentがServerに接続する際に使用するポート10050（デフォルト値）を遮断しないようにする必要がある。

### Ubuntu

```bash:自動起動設定(Ubuntu 16.04 ~)
$ sudo systemctl enable zabbix-agent.service
```

### CentOS
[Zabbixエージェントの設定 (CentOS編) - Qiita](http://qiita.com/skouno/items/39d1cfa5f56df3107ed6)

## Windows

注意点として、ファイヤーウォールの設定等でZabbix AgentがServerに接続する際に使用するポート10050（デフォルト値）を遮断しないようにする必要があります。ファイヤーウォールの受信の規則で10050を許可して下さい。

### パッケージ
[Zabbixダウンロード](http://www.zabbix.com/jp/download)
### 設定手順（公式）
[2 Zabbix agent on Microsoft Windows [Zabbix Documentation 3.2]](https://www.zabbix.com/documentation/3.2/manual/appendix/install/windows_agent)
### 参考
[Zabbixエージェントの設定 (Windows Server編) - Qiita](http://qiita.com/skouno/items/9ec7fcd5d7db9ef02fdd)


# 参考
[統合監視ツール「Zabbix」によるサーバー監視 - さくらのナレッジ - Part 2](http://knowledge.sakura.ad.jp/tech/585/2/)
[Ubuntu 16.04にZabbix 3.2(PostgreSQL)をインストールする。 - truffe093のブログ](http://truffe093.hatenablog.com/entry/2017/01/08/000147)
[Zabbix 3.0をCentOS 7にインストール(PostgreSQL編) - Qiita](http://qiita.com/atanaka7/items/920dd3edcaefe2b7e1fa)
[【連載Zabbix】Zabbix 3.0/3.2 基礎構築手順【Zabbix Advent Calendar 2016】 – サーバーワークスエンジニアブログ](http://blog.serverworks.co.jp/tech/2016/12/10/zabbixinstall/)
[Zabbix3.2サーバのインストール - JunkBoxWiki](http://junkbox.wicurio.com/index.php?Zabbix3.2%E3%82%B5%E3%83%BC%E3%83%90%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)