8
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Docker監視用のZabbix Server/Agentをdocker-composeでまとめて立ち上げて簡単に監視する

Last updated at Posted at 2019-06-03

あるホスト上に動いているDockerの監視をZabbix Server/Agentで行います。
以下のように監視対象のdockerが動いてるhost上にZabbix一式を立ち上げて監視して、downしたらアラートを発行するようにします。

zabbix0.png

この方法の場合1host = 1 Zabbix Agentになるのでホストが複数あるときは各ホストにZabbix Agentコンテナを立ち上げることになります。
今回は1hostの場合の手順です。

Zabbix Server/Agentの用意

まずはZabbix Server/Agentを立ち上げます。
以下のdocker-compose.ymlを作成してdocker-compose up -d

docker-compose.yml
version: '3'
services:
  zabbix-agent:
    image: monitoringartist/dockbix-agent-xxl-limited:latest
    hostname: zabbix-agent
    environment:
      ZA_Server: 0.0.0.0/0
      ZA_ServerActive: zabbix-server
    volumes:
      - /:/rootfs
      - /var/run:/var/run
    restart: always
  zabbix-db:
    image: monitoringartist/zabbix-db-mariadb
    environment:
      MARIADB_USER: zabbix
      MARIADB_PASS: my_password
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./zabbix-db-data:/var/lib/mysql
    restart: always
  zabbix-server:
    image: monitoringartist/dockbix-xxl:latest
    environment:
      ZS_DBHost: zabbix-db
      ZS_DBUser: zabbix
      ZS_DBPassword: my_password
      #XXL_zapix: 'true'
      #XXL_grapher: 'true'
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./zabbix-server/alertscripts:/usr/local/share/zabbix/alertscripts
    ports:
      - 38080:80
    restart: always

これでhttp://<ホストIP>:38080にブラウザから接続すればZabbixのWebUIが見れます。
ちなみに私の環境では起動完了まで数分かかりました。

Zabbix-Serverの設定

WebUIから監視設定を入れていきます。
初期状態ではAdmin/zabbixでログインできます。
下の参考画像を見ながら以下の設定を行ってください。

  • templateの追加
  • hostの追加
    • Configration > Hostsに移動後右上のCreate hostをクリック
    • 以下を設定(参考画像①)
      • Hostタブ
        • Host name: zabbix-agent
        • Groups: docker
        • Agent interfaces
          • DNS name: zabbix-agent
          • Connect to: DNS
          • Port: 10050
      • Templatesタブ
        • Link new templatesTemplate App Docker - www.monitoringartist.com
          • (注意) 上のAddを押してから下のAddを押す(参考画像②)

これで設定は終了でConfigration > Hostsに戻ってZBXが緑になれば成功です(参考画像③)。
※ 緑になるまで時間がかかることがあります。

[参考画像]

  • ①Create host

zabbix01.PNG

  • ②Create host-Template追加

zabbix02.PNG

  • ③Zabbix Agent有効可の確認

zabbix3.PNG

モニタリング状況の確認

Monitoring > Latestdataに移動しHost groupsdockerにしてApplyすると一覧が表示されると思います。

今回のTemplateで取得できる情報は各コンテナごとの

  • Container is running
  • CPU utilization
  • Used cache memory
  • Used RSS memory
  • Used swap

になります。

アラートの設定

ここまでで監視はできるようになりましたが、コンテナに何かあっても特に表示されません。
今回はコンテナがdownしたらアラートが出るようにします。

  • Configration > Template > Template App Docker - www.monitoringartist.com > Discovery rulesタブに移動
  • 表示されているRunning containers列のTrigger prototypesをクリック(参考画像④)
  • 右上のCreate trigger prototypesをクリックし以下を設定をAdd
    • Name: Container {#HCONTAINERID} is down
    • Severity: Heigh
    • Expression: {Template App Docker - www.monitoringartist.com:docker.up[/{#HCONTAINERID}].last()}=0
      • 横のAddからGUIで設定(参考画像⑤)

最終的にできたものは参考画像⑥になります。
これで適当なコンテナをStopすると参考画像⑦のようにWebUIのトップに障害が表示されるようになります。

[参考画像]

  • ④Trigger prototypes

zabbix04.PNG

  • ⑤Expression

zabbix05.PNG

  • ⑥Trigger

zabbix06.PNG

  • ⑦障害画面

zabbix07.PNG

おまけ: Slackに通知

解説は探せば出てくると思うのでここには書きませんが、アラートをSlackに連携しておくと便利です。
いくつか方法があるみたいですが私は https://github.com/ericoc/zabbix-slack-alertscript を使うことにしました。
今回のdocker-compose.ymlではzabbix-serverはvolumeで./zabbix-server/alertscripts:/usr/local/share/zabbix/alertscriptsを指定しているので./zabbix-server/alertscriptsに上記github urlのslack.shを配置すると使えるようになります。

8
14
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?