こちらのサイトを参考に進めています。
https://dev.classmethod.jp/cloud/zabbix-docker-monitoring/
概要
対象のホスト機へ監視用のDockerコンテナを作成し、zabbix_serverで監視することで、その他のDockerコンテナも監視できる。
取得できる値 -> CPU MEM SWAP 死活監視
その他にも未検証ですが、ネットワーク監視用のテンプレートもありました。
https://raw.githubusercontent.com/cavaliercoder/zabbix-module-sockets/master/templates/Template_App_TCP_Sockets_3.2.xml
注意
以下手順では、Dockerimageを「zabbix-agent-xxl」ではなく一つ古い「dockbix-agent-xxl-limited」を使用してます。
(dockbix-agent-xxl-limited はCPUの値が取得できず断念...)
テンプレートの入手 -> インポート
テンプレートURL: https://github.com/monitoringartist/zabbix-docker-monitoring/blob/master/template/Zabbix-Template-App-Docker.xml
リンクのままだと使えないので以下のように編集する
(zabbix2.2ではfilerが使えないようです。ここでだいぶハマりました...)
52行目の「filter」をコメントアウト
<!-- <filter>
<evaltype>0</evaltype>
<formula/>
<conditions/
</filter>
-->
■zabbix-server へテンプレートをインポート
設定 -> テンプレート -> インポート -> ファイルを選択 しインポート
##dockerコンテナの作成
docker監視対象へモニタリング用のdockerコンテナを起動させる。
(portは適宜使用していないportを使用。下記では、ホスト機もzabbix-agentを入れているので、10150使用。)
には監視元serverのIPを入力
docker pull monitoringartist/dockbix-agent-xxl-limited
docker run \
--name=dockbix-agent-xxl-limited \
-h docker-host-1 \
-p 10150:10050 \
-v /:/rootfs \
-e "ZA_Server=<ZABBIX SERVER IP/DNS NAME>" \
-d monitoringartist/dockbix-agent-xxl-limited:latest
zabbix管理画面で新たにホストの追加
- ホスト名はわかりやすいように {$HOSTNAME}_docker_monitoring など
- 設定 -> ホスト -> ホストの作成
ホスト名: example_docker_monitoring
グループ: 適宜
IP: ホストのIP
ポート: 10150
テンプレート: Templates -> Template App Docker - www.monitoringartist.com
しばらくすると値が取得できます。
監視サーバーから以下コマンド実行すると値が取得できているかわかります。
zabbix_get -s <監視対象IP> -k docker.discovery -p 10150
追伸 (トリガーの設定,不具合など)
トリガー設定
■5分間値が取得できなかったら (dockbix-agent-xxlが停止したことを想定)
Container {#HCONTAINERID} is not running
条件式: {Template App Docker - www.monitoringartist.com:docker.up[/{#HCONTAINERID}].nodata(5m)}=1
■5回連続でdocker.upが0の値(Exited 状態の場合)
Container {#HCONTAINERID} is not running
条件式: {Template App Docker -www.monitoringartist.com:docker.up[/{#HCONTAINERID}].count(#5,0,"eq")}=5
■dockbix-agent-xxlを一度停止すると起動できなくなるので(謎ですが)
再度作成し直す。
docker stop dockbix-agent-xxl
docker rm dockbix-agent-xxl
docker run \
--name=dockbix-agent-xxl \
-h docker-host-1 \
-p 10150:10050 \
-v /:/rootfs \
-e "ZA_Server=<ZABBIX SERVER IP/DNS NAME>" \
-d monitoringartist/dockbix-agent-xxl-limited:latest
参考
https://dev.classmethod.jp/cloud/zabbix-docker-monitoring/
https://github.com/anapsix/zabbix-haproxy/issues/1
https://github.com/anapsix/zabbix-haproxy/pull/2
https://hub.docker.com/r/monitoringartist/dockbix-agent-xxl-limited/