これは何?
Zabbix はオープンソースで自由に使える監視ツールです。 Zabbix 公式 Docker イメージ を使い、Docker Compose で MySQL 等のデータベースを一括セットアップする手順をまとめました。
慣れれば Zabbix 5.0 の環境を 5 分程度でセットアップできるでしょう。
公式に Docker Compose 用 YAML ファイルが配布されているため、そちらを利用します。
背景は、Zabbix 5.0 を簡単に試す環境を作りたかったからです。Zabbix 4.0 までは zabbix/zabbix-appliance という環境が1つにまとまった Docker イメージが公式から配布されていました。Zabbix 5.0 は、現時点では RHEL 対応のものしか公開されていないため、Docker Compose を使う手順で検証をしました。
手順
Docker と Docker Compose をセットアップ
(既に設定済みの環境では次へ)
参考:CentOS 7.x の場合
curl -fsSL https://get.docker.com -o get-docker.sh
sh ./get-docker.sh
systemctl enable dockern
systemctl start docker
yum -y install docker-compose
GitHub のリポジトリを clone して移動
git clone https://github.com/zabbix/zabbix-docker.git
cd zabbix-docker
設定ファイルの準備
今回は CentOS + Nginx + MySQL の組み合わせの Docker Compose ファイル を使用します。同ファイルには latest
と local
がありますが、ここでは前者(latest)の手順です。後者(local)はイメージをローカルでビルドします。 なお、他にも Alpine や Ubuntu をベースイメージのものや、バックエンドが PostgreSQL も配布されています。
cp docker-compose_v3_centos_mysql_latest.yaml docker-compose.yaml
以後、YAML 設定ファイルを明示しない場合は docker-compose.yaml
を指します。
YAML ファイル中、MySQL のユーザやパスワードの設定ファイルは .MYSQL_USER
、 .MYSQL_PASSWORD
、 .MYSQL_ROOT_PASSWORD
です。必要に応じて各ファイルを編集します。
Docker イメージのダウンロード
docker-compose pull
イメージ一覧の確認は、 dokcer images
:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 8.0 a0d4d95e478f 4 hours ago 541MB
busybox latest 78096d0a5478 11 hours ago 1.22MB
zabbix/zabbix-web-apache-mysql centos-5.0-latest 5c3418ac3645 31 hours ago 505MB
zabbix/zabbix-agent centos-5.0-latest 6bd73926b75f 31 hours ago 256MB
zabbix/zabbix-proxy-sqlite3 centos-5.0-latest 4a01689b6f57 32 hours ago 267MB
zabbix/zabbix-server-mysql centos-5.0-latest 465a30a32216 41 hours ago 360MB
zabbix/zabbix-web-nginx-mysql centos-5.0-latest f3a0f8c7659f 46 hours ago 487MB
zabbix/zabbix-java-gateway centos-5.0-latest 1c3c611d4bb8 46 hours ago 395MB
zabbix/zabbix-proxy-mysql centos-5.0-latest 91fd7fd05aec 46 hours ago 358MB
zabbix/zabbix-snmptraps centos-5.0-latest 06c106b449cc 46 hours ago 283MB
起動
YAML ファイルが存在するディレクトリ上で、デタッチドモード( -d
オプション)を付けて起動します。
docker-compose up -d
状態の確認:
# docker-compose ps
WARNING: Some services (zabbix-agent, zabbix-java-gateway, zabbix-proxy-mysql, zabbix-proxy-sqlite3, zabbix-server, zabbix-snmptraps, zabbix-web-apache-mysql, zabbix-web-nginx-mysql) use the 'deploy' key, which will be ignored. Compose does not support 'deploy' configuration - use `docker stack deploy` to deploy to a swarm.
Name Command State Ports
----------------------------------------------------------------------------------------------------
zabbixdocker_db_data_mysql_1 sh Exit 0
zabbixdocker_mysql-server_1 docker-entrypoint.sh mysql Up
...
zabbixdocker_zabbix-agent_1 /sbin/tini -- /usr/bin/doc Up
...
zabbixdocker_zabbix-java- docker-entrypoint.sh /usr/ Up
gateway_1 ...
zabbixdocker_zabbix-proxy- /sbin/tini -- /usr/bin/doc Up 0.0.0.0:10071->10051/tcp
mysql_1 ...
zabbixdocker_zabbix-proxy- /sbin/tini -- /usr/bin/doc Up 0.0.0.0:10061->10051/tcp
sqlite3_1 ...
zabbixdocker_zabbix-server_1 /sbin/tini -- /usr/bin/doc Up 0.0.0.0:10051->10051/tcp
...
zabbixdocker_zabbix- /usr/bin/supervisord -c /e Up 0.0.0.0:162->1162/udp
snmptraps_1 ...
zabbixdocker_zabbix-web- docker-entrypoint.sh Up 0.0.0.0:80->8080/tcp,
apache-mysql_1 0.0.0.0:443->8443/tcp
zabbixdocker_zabbix-web- docker-entrypoint.sh Up 0.0.0.0:8081->8080/tcp,
nginx-mysql_1 0.0.0.0:8443->8443/tcp
※ zabbixdocker_db_data_mysql_1
が Exit 0
の状態ですが、これは正常です。その他は Up
です。
処理状況を見るには docker-compose logs -f
です。次のような Zabbix Server が起動するログが出るまで待ちます。
zabbix-server_1 | Starting Zabbix Server. Zabbix 5.0.0 (revision 9665d62).
zabbix-server_1 | Press Ctrl+C to exit.
zabbix-server_1 |
zabbix-server_1 | 6:20200514:164942.480 Starting Zabbix Server. Zabbix 5.0.0 (revision 9665d62).
zabbix-server_1 | 6:20200514:164942.480 ****** Enabled features ******
zabbix-server_1 | 6:20200514:164942.480 SNMP monitoring: YES
zabbix-server_1 | 6:20200514:164942.480 IPMI monitoring: YES
zabbix-server_1 | 6:20200514:164942.480 Web monitoring: YES
zabbix-server_1 | 6:20200514:164942.480 VMware monitoring: YES
zabbix-server_1 | 6:20200514:164942.480 SMTP authentication: YES
zabbix-server_1 | 6:20200514:164942.480 ODBC: YES
zabbix-server_1 | 6:20200514:164942.480 SSH support: YES
zabbix-server_1 | 6:20200514:164942.480 IPv6 support: YES
zabbix-server_1 | 6:20200514:164942.480 TLS support: YES
zabbix-server_1 | 6:20200514:164942.480 ******************************
zabbix-server_1 | 6:20200514:164942.480 using configuration file: /etc/zabbix/zabbix_server.conf
zabbix-server_1 | 6:20200514:164942.493 current database version (mandatory/optional): 05000000/05000000
zabbix-server_1 | 6:20200514:164942.493 required mandatory version: 05000000
zabbix-server_1 | 6:20200514:164942.555 server #0 started [main process]
zabbix-server_1 | 200:20200514:164942.556 server #1 started [configuration syncer #1]
管理画面に接続
ウェブブラウザで http://<IPアドレスまたはホスト名>
を開きます。
デフォルトのユーザ情報 は、Username が Admin
、 Password が zabbix
です。入力後、 Sign in
をクリックします。
ログイン後、パスワードを変更します。
画面左下の User Settings
をクリック → Change password
をクリック → Password
と Password (once again)
に入力後、 Update
をクリックします。あわせて言語を日本語に変更したい場合は、 Language English (en_GB)
を Japanese (ja_JP)
に変更しておきます(ただし、デフォルトでは画像中の日本語が文字化けします)。
Zabbix Server の 利用不可
を解消する
ログイン直後から、Zabbix Server が「利用不可」の障害となっています。デフォルトのままでは、Zabbix Server の状態を Zabbix agent経由で取得できません(理由は、デフォルトで Zabbix Server が 127.0.0.1
のエージェントに対し接続する設定だからです)。
これを回避するには、以下の手順で設定を変更します。監視先を 127.0.0.1
から zabbix-agent
に変更します(Docker の bridge ネットワーク内では、サービス名で名前解決できるため、 zabbix-agent
のサービス名を指定すると、自動的に zabbix-agent コンテナの IP アドレスに名前解決します)。
左メニューの「設定」→「ホスト」をクリックし、「Zabbix server」の名前をクリックします。
それから「インターフェース」の「IPアドレス」が 「127.0.0.1」になっていますが、これを消します。そして、 「DNS名」に zabbix-agent
を入力し、接続方法の DNS
をクリックし 、 更新
をクリックします。
動作確認は左メニューの「監視データ」→「最新データ」をクリックします。Zabbix server から、各アイテムの値が取れています。グラフをクリックすると、リアルタイムに値が変わるのを確認できるでしょう。
そのあと、ダッシュボードに戻ると「障害」になっていますが、3分後に解消されます(デフォルトでは3分間)。
あとは色々触ってみましょう。リソース一覧グラフを見るには、「監視データ」→「ホスト」→「Zabbix server」をクリック→「グラフ」を選択が手っ取り早いです。
Enjoy!
参考
- Zabbix 公式ドキュメント