ZabbixでDockerコンテナを監視する方法を詳しく解説

DockerコンテナをZabbixで監視する方法を詳しく解説します。最後にクラウドサービスを使って同じ監視を無料かつ短時間で始める方法も紹介しているので参考にしてみてください。

はじめに

DockerとはDocker社が開発しているコンテナ型の仮想環境を構築、実行するための基盤です。DockerはLinuxのコンテナ技術を使ったもので、VMwareなどのハイパーバイザ型の仮想マシンとよく比較されます。仮想マシンではゲストOSを利用し、その上でミドルウェアやアプリケーションを実行しますが、それに対してコンテナはホストマシンのカーネルを利用しプロセスなどを隔離することで、あたかも別のマシン上でミドルウェアやアプリケーションが動いているかのように動かすことができます。軽量で高速に起動や停止をすることができ、ゲストOSの管理を行う必要がない(サーバーレス)というメリットがあります。これらコンテナ管理を総合的に行えるKubernetesというツールもありますが、今回はDockerに絞って解説します。

ZabbixでDockerコンテナを監視する手順

Zabbixを使ってDockerで構成されたコンテナを監視します。Zabbixの構築とDocker環境の構築は済んでいるものとします。今回使用するDocker環境は以下の通りです。

  • Dockerサーバー
    • サーバーOS:Ubuntu20.04
    • バージョン:5:20.10.14~3-0~ubuntu-focal
    • 実行コンテナアプリ:nginx

1. DockerへZabbixエージェントのインストール

Zabbix用のリポジトリを適用し、エージェントをインストールします。ここではDockerコンテナを監視するためにZabbix Agent2をインストールします。適宜コマンドをsudoで実行してください。

# wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-1+ubuntu20.04_all.deb
# dpkg -i zabbix-release_6.0-1+ubuntu20.04_all.deb
# apt update
# apt install zabbix-agent2 -y

ZabbixでDockerコンテナを監視する手順1

再起動したときにエージェントが自動的に立ち上がるよう起動設定し、ステータスの状態を確認します。

# systemctl enable zabbix-agent2
# systemctl status zabbix-agent2

ZabbixでDockerコンテナを監視する手順2

Zabbixマネージャーと通信するための設定を行います。Zabbix Agent2の設定ファイルは/etc/zabbix/zabbix_agent2.confになるので、自身の環境に合わせてviなどで編集します。

80行目:
Server=zabbixマネージャーのIP

126行目:
ServerActive=zabbixマネージャーのIP

137行目:
Hostname=監視対象Dockerの名前(デフォルトがZabbix Serverなので注意)

ZabbixでDockerコンテナを監視する手順3

エージェントを再起動し、ステータスの状態を確認します。

# systemctl restart zabbix-agent2
# systemctl status zabbix-agent2

ZabbixでDockerコンテナを監視する手順4

Zabbix Agent2はDockerコンテナの情報を取得する際に、dockerグループに所属するユーザーでないとアクセスできないファイル/var/run/docker.sockにアクセスするため、zabbixユーザーをdockerグループに所属させます。

# usermod -aG docker zabbix
# cat /etc/group | grep docker

ZabbixでDockerコンテナを監視する手順5

2. ZabbixマネージャーでのDockerホスト登録

Zabbixマネージャーの管理画面からDockerホストを追加します。[設定]→[ホスト]→[ホストの作成]の順にクリックします。

ZabbixでDockerコンテナを監視する手順6

次の項目を入力し[追加]をクリックします。

ホスト名:設定したhostname(今回はDocker Server)
テンプレート:Docker by Zabbix agent 2 , Linux by Zabbix agent
グループ: 任意(今回はLinux ServersとTemplates/Server hardware)
インターフェース:agent2をインストールしたDocker ServerのIPアドレス

ZabbixでDockerコンテナを監視する手順7

追加されました。

ZabbixでDockerコンテナを監視する手順8

以上でDockerへのエージェントのインストールと監視設定は完了です。しばらくしてコンテナ内部にあるnginxアプリを認識すると[監視データ]→[最新データ]から[名前]で「nginx」と入力し[適用]をクリックして検索することで、「Container /nginx-server: Running」などの値が取得できていることが分かります。

ZabbixでDockerコンテナを監視する手順9

コンテナで動いているnginxのWebに対して、IPアドレスでブラウザから接続することで動作の確認もできました。

ZabbixでDockerコンテナを監視する手順10

3. コンテナの障害を通知するためのトリガー設定

このままでもデフォルトのテンプレートが、コンテナで異常が起きた際のトリガーを設定してくれますが条件が複雑です。単純にコンテナのnginxが停止したときに検知できるよう手動でトリガーを設定します。

[設定]→[ホスト]から監視対象のDocker Serverの[トリガー]をクリックします。

ZabbixでDockerコンテナを監視する手順11

[名前]で「nginx」と入力し[適用]をクリックして検索すると自動で設定されたトリガーが表示されます。これを参考に「Container /nginx-server: Running」が「False(0)」の際に障害と検知するように設定するので[トリガーの作成]をクリックします。

ZabbixでDockerコンテナを監視する手順12

次の項目を入力し画面下の[追加]をクリックします。

名前:任意(今回自動設定されたトリガーに合わせています)
深刻度:重度の障害
条件式:[追加]をクリックして設定

ZabbixでDockerコンテナを監視する手順13

[アイテム]の[選択]をクリックするとDocker Serverで取得している値の一覧が出てきますので、そこで「Container /nginx-server: Running」を選択します。nginxが起動している時は「True(1)」で停止しているときは「False(0)」なので、[結果]の条件式はそのまま「= 0」とし、[挿入]をクリックします。

ZabbixでDockerコンテナを監視する手順14

トリガーが追加されました。

ZabbixでDockerコンテナを監視する手順15

Docker Serverでnginxを停止すると、障害として検知されます。メール通知の設定を済ませておくと、メールが送信されます。

ZabbixでDockerコンテナを監視する手順16

無料かつ5分でDockerコンテナ監視を始める方法

Dockerのコンテナを監視する場合、ZabbixではDockerへのエージェントのインストールと設定、ホストの追加やトリガー設定が必要でしたが、エージェントをインストールするだけでコンテナが認識され、5分で監視を始められるのがSaaS型のSite24x7(サイトトゥエンティーフォーセブン)です。クラウドサービスですのでどこからでも操作することが可能で、アラートの種類や発報方法も豊富で分かりやすいのが特徴です。

ここからはSite24x7でDockerコンテナを監視する手順を詳しく紹介します。

1. FREEプランにサインアップしログイン

まずはFREEプランのサインアップフォームからSite24x7にサインアップします。サインアップフォームは非常にシンプルで、氏名とメールアドレス、パスワード、電話番号を入力するのみです。

FREEプランを試すのにクレジットカードの入力が不要なので、サブスクリプションタイプにありがちな課金停止漏れが発生しない安心設計となっています。

サインアップすると自動的にログインします。

2. Dockerコンテナ監視の始め方

まず、エージェントをDockerサーバー(Ubuntu)にインストールして、Site24x7から監視できるようにします。[管理]→[インベントリー]→[監視の追加]の順にクリックし、[Containerization]の項目から[Docker]をクリックします。

監視対象のDockerサーバーで実行するコマンドが表示されますので[クリップボードへコピー]をクリックしてコピーし、実行します。

さほど待たずにSite24x7の画面に自動的に表示され、Dockerコンテナの監視が始まります。すでにアプリのnginxが監視できていますね。ここまで5分で完了できました。

[DOCKER]はDockerサービスそのものの監視、[docker-~数字列]はDockerが動いているLinuxサーバーの監視、[コンテナー]はDocker上で稼働しているコンテナアプリの監視になります。試しに[DOCKER]をクリックしてみると、稼働しているコンテナの状況を可視化できます。

Zabbixと同様nginxの障害を起こしてみます。Docker Server上でnginxを停止するとしばらくしてアラートになります。複雑な条件などを考えて設定する必要はありません。

メール通知の設定を済ませておくと、分かりやすいアラートメールが受信できます。

まとめ

ZabbixでDocker監視をするにはZabbixマネージャーの構築と、監視対象Dockerへのエージェントのインストール、ホストの追加やトリガーの設定が必要となりますが、Site24x7では同じことを5分で実現できました。

管理画面上でコンテナの稼働状況も分かりやすく可視化してくれるので、SaaS型サービスの強みが活きています。Kubernetes監視も標準でサポートしています。

このように手軽にDockerコンテナの監視ができるSite24x7。サーバーの運用管理に頭を悩ませ、Dockerコンテナ基盤を選択・検討している担当者の方は、SaaS型の監視ソリューションSite24x7を採用してみてはいかがでしょうか。

プランと価格の詳細はこちら:
https://www.site24x7.jp/pricing.html

FREEプランのサインアップはこちら:
https://www.site24x7.jp/signup.html?pack=1&l=ja

ZabbixとSite24x7の機能比較一覧はこちら:
https://www.site24x7.jp/zabbix-alternative.html

関連記事