概要
公式の docker-compose ファイルがあったので試してみました
環境
- Ubuntu 16.04 LTS
- docker 18.09.6
- docker-compose 1.24.0
- Zabbix 4.2
Zabbix サーバ構築
git clone https://github.com/zabbix/zabbix-docker.git
cd zabbix-docker
デフォルトブランチは master ではなくバージョンのブランチになっているようです
git branch
=> 4.2
いくつか docker-compose ファイルを選択できます
alpine + mysql だったり ubuntu + postgres などが選択できます
今回は alpine + mysql にしました
また _local
を使うと git clone した各種リソースを使ってイメージをビルドしてから立ち上がります
docker-compose -f docker-compose_v3_alpine_mysql_latest.yaml up -d
イメージのダウンロードが始まるので待ちましょう
最終的に 9 つのコンテナが起動すれば OK です
docker-compose -f docker-compose_v3_alpine_mysql_latest.yaml ps
Name Command State Ports
--------------------------------------------------------------------------------------------------------------------------------
zabbix-docker_db_data_mysql_1 sh Exit 0
zabbix-docker_mysql-server_1 docker-entrypoint.sh mysql ... Up
zabbix-docker_zabbix-agent_1 /sbin/tini -- /usr/bin/doc ... Up
zabbix-docker_zabbix-java- docker-entrypoint.sh Up
gateway_1
zabbix-docker_zabbix-proxy-mysql_1 /sbin/tini -- /usr/bin/doc ... Up 0.0.0.0:10071->10051/tcp
zabbix-docker_zabbix-proxy- /sbin/tini -- /usr/bin/doc ... Up 0.0.0.0:10061->10051/tcp
sqlite3_1
zabbix-docker_zabbix-server_1 /sbin/tini -- /usr/bin/doc ... Up 0.0.0.0:10051->10051/tcp
zabbix-docker_zabbix-snmptraps_1 /usr/bin/supervisord -c /e ... Up 0.0.0.0:162->162/udp
zabbix-docker_zabbix-web-apache- docker-entrypoint.sh Up (health: starting) 0.0.0.0:443->443/tcp,
mysql_1 0.0.0.0:80->80/tcp
zabbix-docker_zabbix-web-nginx- docker-entrypoint.sh Up (healthy) 0.0.0.0:8443->443/tcp,
mysql_1 0.0.0.0:8081->80/tcp
各役割ごとにコンテナが起動しています
ホストのポートを結構たくさんバインドするのですでに使っているポートがある場合は該当のプロセスを停止してから起動しましょう
管理画面にアクセスするには http://192.168.99.200
などのホストの IP に接続すれば OK です
パスワードは Admin/zabbix
です (これはいいのだろうか、、)
ログインするといきなり zabbix-agent が zabbix-server を見つけられないエラーが、、
バグっぽいですが解決してあげます
docker-compose -f docker-compose_v3_alpine_mysql_latest.yaml logs zabbix-agent
no active checks on server [zabbix-server:10051]: host [07890bd93e4d] not found
なるエラーが出ていました
この 0be108601a3f
は zabbix-agent のホスト名でした
設定ファイルを確認してみます
docker-compose -f docker-compose_v3_alpine_mysql_latest.yaml exec zabbix-agent grep -v '^\s*#' /etc/zabbix/zabbix_agentd.conf |grep -v '^\s*$'
特に問題なさそうです
エラー的には zabbix-server が 0be108601a3f
という名前のホスト名を探せないということなので怪しいのは Zabbix Server 側っぽいです
サーバ側のログを見てみます
docker-compose -f docker-compose_v3_alpine_mysql_latest.yaml logs zabbix-server | grep 'cannot send list of active checks to'
cannot send list of active checks to "172.16.239.6": host [0be108601a3f] not found
つまり agent が 0be108601a3f
というホストが Zabbix Server だよ送っているのに実際に zabbix-server コンテナが 0be108601a3f
に聞きにいこうとしてもそんなホストは見つからないと言っているのです
で実際どこを変更すれば良いかと言うと Configuration -> Hosts で Zabbix Server の設定を開きます
そして Host name に zabbix-agent
入力し Agent interfaces の DNS name にも zabbix-agent
を入力します
Connect to のトグルスイッチも DNS 側に変更しましょう
これで Zabbix Server 用の agent である zabbix-agent コンテナに名前でアクセスできるようになるため問題が解決します
また実は YAML ファイルも変更しています
やらなくてもステータスは緑になりますがエラーログが出続けるのでやってもよいかなと思います
git diff
git diff
diff --git a/docker-compose_v3_alpine_mysql_latest.yaml b/docker-compose_v3_alpine_mysql_latest.yaml
index 166b431..d82e759 100644
--- a/docker-compose_v3_alpine_mysql_latest.yaml
+++ b/docker-compose_v3_alpine_mysql_latest.yaml
@@ -269,6 +269,7 @@ services:
zabbix-agent:
image: zabbix/zabbix-agent:alpine-4.2-latest
+ hostname: zabbix-agent
ports:
- "10050:10050"
volumes:
ただこれは結局 Zabbix Server のためのエージェントではなく zabbix-agent コンテナのエージェントの情報を監視しているだけなので意味はありません
proxy のエラーも出ている
以下のエラーも Zabbix Server のログに出ていました
必須ではないですが何となく対応してみました
zabbix-server_1 | 175:20190619:095634.153 cannot parse proxy data from active proxy at "172.16.238.7": proxy "zabbix-proxy-mysql" not found
zabbix-server_1 | 178:20190619:095634.154 cannot parse proxy data from active proxy at "172.16.238.4": proxy "zabbix-proxy-sqlite3" not found
これも UI にデータを入れれば OK です
Administration -> Proxies -> Create proxy でエラーになっているホストと IP アドレスの情報を登録すれば OK です
- Proxy name・・・zabbix-proxy-mysql
- Proxy address・・・172.16.238.7
- Proxy name・・・zabbix-proxy-sqlite3
- Proxy address・・・172.16.238.4
ステータスが緑になれば OK です
ただしこの方法だと各プロキシの IP がコンテナの再作成で変わる可能性があるので、その場合は再度登録してください
ZabbixAgent をコンテナとして動作させるには
方法としてはシステムディレクトリをマウントすればエージェントをコンテナで起動できるっぽいのですがあまりよろしい感じはしません (参考)
正直自分でも zabbix/zabbix-agent コンテナの使い方というか用途というか使う場面が思い浮かびません
docker ホストの監視をしたい場合は素直に zabbix-agent をインストールするのが良いと思います
強いて言えば適当なホストを追加したいときに zabbix-agent コンテナを立ち上げればホストの追加になるのでテスト用途として使う感じかなと思います
コンテナを監視するには
Zabbix Docker Monitoring というコンテナを開発してくれている方がいるのでこれを使います
テンプレートなどもあるのでそれを使えばアイテムなども Zabbix Server に登録されます
Zabbix Docker Monitoring については別記事で紹介したいと思います
やり直したい場合は
MySQL などのデータはコンテナを再作成しても残ります
なので再度一からやり直したい場合は以下のディレクトリのデータを削除しましょう
sudo rm -rf zbx_env/var/lib/mysql/*
最後に
Zabbix を docker で使う場合には
- Zabbix Server はコンテナで OK
- Zabbix Agent は素直にバイナリをホストにインストールする
- コンテナの監視には Zabbix Docker Monitoring を使う
というのが無難かなと思います
0 件のコメント:
コメントを投稿