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
再起動したときにエージェントが自動的に立ち上がるよう起動設定し、ステータスの状態を確認します。
# systemctl enable zabbix-agent2 # systemctl status zabbix-agent2
Zabbixマネージャーと通信するための設定を行います。Zabbix Agent2の設定ファイルは/etc/zabbix/zabbix_agent2.confになるので、自身の環境に合わせてviなどで編集します。
80行目:
Server=zabbixマネージャーのIP
126行目:
ServerActive=zabbixマネージャーのIP
137行目:
Hostname=監視対象Dockerの名前(デフォルトがZabbix Serverなので注意)
エージェントを再起動し、ステータスの状態を確認します。
# systemctl restart zabbix-agent2 # systemctl status zabbix-agent2
Zabbix Agent2はDockerコンテナの情報を取得する際に、dockerグループに所属するユーザーでないとアクセスできないファイル/var/run/docker.sockにアクセスするため、zabbixユーザーをdockerグループに所属させます。
# usermod -aG docker zabbix # cat /etc/group | grep docker
2. ZabbixマネージャーでのDockerホスト登録
Zabbixマネージャーの管理画面からDockerホストを追加します。[設定]→[ホスト]→[ホストの作成]の順にクリックします。
次の項目を入力し[追加]をクリックします。
ホスト名:設定したhostname(今回はDocker Server)
テンプレート:Docker by Zabbix agent 2 , Linux by Zabbix agent
グループ: 任意(今回はLinux ServersとTemplates/Server hardware)
インターフェース:agent2をインストールしたDocker ServerのIPアドレス
追加されました。
以上でDockerへのエージェントのインストールと監視設定は完了です。しばらくしてコンテナ内部にあるnginxアプリを認識すると[監視データ]→[最新データ]から[名前]で「nginx」と入力し[適用]をクリックして検索することで、「Container /nginx-server: Running」などの値が取得できていることが分かります。
コンテナで動いているnginxのWebに対して、IPアドレスでブラウザから接続することで動作の確認もできました。
3. コンテナの障害を通知するためのトリガー設定
このままでもデフォルトのテンプレートが、コンテナで異常が起きた際のトリガーを設定してくれますが条件が複雑です。単純にコンテナのnginxが停止したときに検知できるよう手動でトリガーを設定します。
[設定]→[ホスト]から監視対象のDocker Serverの[トリガー]をクリックします。
[名前]で「nginx」と入力し[適用]をクリックして検索すると自動で設定されたトリガーが表示されます。これを参考に「Container /nginx-server: Running」が「False(0)」の際に障害と検知するように設定するので[トリガーの作成]をクリックします。
次の項目を入力し画面下の[追加]をクリックします。
名前:任意(今回自動設定されたトリガーに合わせています)
深刻度:重度の障害
条件式:[追加]をクリックして設定
[アイテム]の[選択]をクリックするとDocker Serverで取得している値の一覧が出てきますので、そこで「Container /nginx-server: Running」を選択します。nginxが起動している時は「True(1)」で停止しているときは「False(0)」なので、[結果]の条件式はそのまま「= 0」とし、[挿入]をクリックします。
トリガーが追加されました。
Docker Serverでnginxを停止すると、障害として検知されます。メール通知の設定を済ませておくと、メールが送信されます。
無料かつ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
関連記事
- Zabbix 6.0 サーバー構築手順(インストールから初期設定まで)
- Zabbix Agentのインストールと設定手順
- Zabbixでログ監視する手順(Windowsイベントログ監視・Syslog監視)
- Zabbixでプロセス監視する手順
- Zabbixでアラートをメール通知する手順
- ZabbixのPing実行手順とPing監視する手順
- ZabbixでWeb監視とシナリオ監視する手順
- ZabbixのSNMP監視手順とNetFlowでトラフィックを可視化する方法
- ZabbixでCPU使用率を監視する手順
- Zabbixで死活監視する手順
- Zabbixでポート監視する手順
- Zabbixでサービス監視する手順(Windowsサービス監視)
- Zabbixでメモリ使用率を監視する手順
- Zabbixでリソース監視する手順
- Zabbixでディスク使用率を監視する手順
- ZabbixでDNS監視する手順
- ZabbixでDockerコンテナを監視する手順
免責事項:ここに記載されているすべての著作権、商標、商号は、元の所有者の所有物です。このWebページに含まれる情報は、一般的な情報提供のみを目的としており、そのような情報は、正確性、信頼性、または完全性について調査、監視、または確認されていません。 当社は、ここに含まれる情報への依存に起因する誤り、または損失に対する責任を明示的に否認します。