Zabbix で CoreOS と Docker コンテナを監視してみよう! | SiTest (サイテスト) ブログ

メニューボタン閉じるボタン

Zabbix で CoreOS と Docker コンテナを監視してみよう!

最近 Docker をはじめとするコンテナ技術がどんどん浸透していることもあり、サービスに取り入れられている現場も多くあると思います。

Docker を使用した場合、ちょっと上手く設定しないと、なかなかコンテナ単位でのリソース監視ができません。
そこで今回は CoreOS 上に展開している Docker コンテナに Zabbix を使って監視する方法をご紹介します!

Zabbix とは?

Zabbix とは OSS の監視ツールの1つであり、
Cacti、Munin、Nagios などと並んでよく使用されています。
監視方法の種類も豊富で、SMTP や HTTP、SNMP 経由等での監視手段がサポートされています。
また、エージェントを監視対象のホストにインストールすることで、ロードアベレージ、ネットワーク IO、ディスク容量などのステートも監視することが出来ます。

CoreOS とは?

CoreOS とは、CoreOS 社が提供している OSS の Linux Distribution です。
コンテナを実行させることに特化しており、パッケージマネージャすらもインストールされていない軽量なものとなっています。
他にも Kubernetes と呼ばれるクラスタリングシステムや、Kubernetes の分散環境を支える etcd という分散システムツールが提供されています。

Docker コンテナを監視しよう!

事前準備

予め Zabbix Server を用意しておきます。

  • OS (Ubuntu 14.04.5 LTS)
  • Zabbix Server (3.0.9)

監視用ホストには以下を想定しています。

  • CoreOS stable (1353.7.0)
  • Docker (version 1.12.6)
  • Zabbix Agent (3.0.9)

また、Zabbix Agent は10050番ポートで Zabbix Server からのアクセスに対応し、Zabbix Server は10051番ポートで Zabbix Agent からのアクセスに対応します。
ポートを開けていない場合は、それぞれ10050、10051番ポートを開けて下さい。

Zabbix にホストを登録


Zabbix Server で監視対象となるホストを登録しましょう。
「エージェントのインターフェース」のIPアドレスには、監視対象ホストのIPアドレスを記入して追加して下さい。

複数台のホストを運用している場合、自動登録アクションを設定することで1つずつホストを追加していく必要がなくなります。

Zabbix Agent をインストール

用意も整ったところで CoreOS に Zabbix Agentをインストールしていきます。
折角 Docker を使える環境ですので、 Zabbix Agent の Docker イメージがないか探してみましたが、いい感じのイメージがなかったため bhuisgen/docker-zabbix-coreos からフォークして glad-cube/docker-zabbix-coreos を作成しました。

Docker hub にも上げていますので、ご自由にお使い下さい。

使い方は下記の通りとなります。
proc や sys ディレクトリ等の必要なディレクトリをリードオンリーでマウントしています。

docker run -d -p 10050:10050 -u 0 --cpu-shares 1024 -m 64M \
  --memory-swap=-1 --net="host" \
  -v /proc:/coreos/proc:ro -v /sys:/sys:ro -v /dev:/coreos/dev:ro \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e MONITOR_DC=true \
  --restart=always \
  --name zabbix-coreos gladcube/zabbix-coreos \
  {Zabbix Servre IP} {HostMeta} {HostName}

MONITOR_DC はデフォルトでは false となっています。
この環境変数に true を入れることでコンテナ毎の監視を行うようになります。
上記コンテナを立てるだけで Zabbix Agent による監視が始まります。

テンプレートを登録

こちらから下記2つのテンプレートをダウンロードし、Zabbix Server にインポートします。

  • Zabbix-Template-App-Docker.xml
  • Zabbix-Template-App-Docker-active.xml

最初に追加したホストにも、どちらかのテンプレートをリンクさせましょう。
少し待つとグラフで下記のようにコンテナ単位でCPU使用率などのリソースを見ることが出来るようになります。

まとめ

今回はコンテナ単位のリソース監視までをご紹介しました。
他にもトリガーを設定しておくことで、コンテナ毎にアラートを出したりすることも出来ます。
Zabbix はカスタマイズがすごく出来ますので、色々なやり方を考えていくことも楽しいですね。

まだまだ Zabbix で出来ることは多いので、今後もブログでどんどんご紹介していきます!