基幹システムでコンテナ型仮想化を広く活用している事例が急速に増えております。
そこで本ブログ記事では、Dockerコンテナの死活監視とコンテナが利用しているネットワークトラフィックの分析方法をご紹介します。
文:ジュピターテクノロジー よしひろ
(2021/01/27変更 図1 PRTGとntopngそれぞれの監視スコープを追加)
監視ソリューションの世界では、オンプレミス、ハイバーバイザー型の仮想OS、コンテナを一元管理するというのは既に必須な要件となりました。
弊社が取り扱う2製品、ドイツPaessler社のPRTG及びイタリアntop社のntopngを組み合わせることによって、容易にコンテナ監視とコンテナが利用するトラフィックの詳細分析を実現できることをご紹介したいと思います。
図1は、PRTGとntopngが監視するスコープとなります。
※本ブログで掲載している図は、サイズが小さいのでそれぞれの図をクリックして内容をご覧ください。
図1 PRTGとntopngそれぞれの監視スコープ
Dockerコンテナの死活監視
弊社で販売するドイツPaessler社のPRTGは、様々な監視要件に応えるべくセンサーと呼ばれる監視方式を日々精力的に開発しております。
読者の皆様が死活監視と聞くと、先ず最初に思い浮かべるのがpingによる確認なのではないでしょうか?
PRTG内では、これをPingセンサーと名付けております。
PRTGは、こういったセンサーを200種類以上実装し、ユーザーの様々な監視要件に日々応えているといっても過言ではありません。
このセンサーの中に、Dockerコンテナステータスセンサーが存在します。
扱いはBeta(正式なサポート前)ではありますが、今後必須なセンサーとなりますので、先行して検証しました。
Dockerコンテナステータスセンサーの追加
今回の検証では、DockerホストはUbuntuです。
このホストにmysql, wordpress, centos x 2、合計4つのコンテナを起動し、死活監視を実現してみたいと思います。
監視対象のDockerホストとコンテナ、PRTGの連携イメージは図2の通りです。
図2 PRTGによるDockerコンテナの監視
PRTGの管理画面にアクセスし、Dockerホストを選択、センサーを追加します。
図3は、PRTGの管理画面でDockerコンテナステータスセンサーを追加している様子を表しています。
図3 Dockerコンテナステータスセンサーの追加
証明書の設定に関しましては、Dockerホスト側の設定となりますので詳細はここでは触れません。
次のマニュアルが参考となりますので、興味がある方はご一読ください。
監視対象とする、mysql, wordpress, centosのコンテナtest01とtest02を選択します。
図5 監視対象コンテナの選択
Dockerホストにコンテナセンサーが4つ登録されていることを確認してください。
図6 コンテナセンサー追加確認
稼働時間、NICのトラフィック量、CPU使用率、メモリ使用率といったチャネルを確認することができます。
ここまでで、コンテナの死活監視とリソース監視を実現することができました。
図7 コンテナセンサーのチャネル確認
Dockerコンテナのトラフィック分析
コンテナの生死確認は出来たものの、PRTGのDockerコンテナステータスセンサーで確認できるのは、図7で確認できる通りトラフィック量とパケット数に留まります。
インフラ技術者であれば、コンテナが利用しているアプリケーションや帯域情報を視覚化し、システム基盤の最適化を計画したいものです。
そこで、イタリアのntop社が提供するntopngの登場です。
LinuxでDockerホストを運用する場合は、DockerホストにntopngをインストールしてDockerネットワークのブリッジインターフェイスを監視対象とすれば、それぞれのネットワークに所属するコンテナのトラフィックを分析することができます。
Dockerホスト、コンテナ、ntopngのモニタリングイメージは、図8の通りです。
図8 Docker環境、コンテナトラフィックのモニタリング
Linuxホストであれば、図8のデフォルトブリッジである「docker0」及びユーザー定義ブリッジである「br-9a17863b4dab」をホスト側から監視することができます。
※DockerホストがWindowsである場合、ホスト側からブリッジの監視はできません。
ntopngの設定ファイルで、これらのブリッジを追加するように変更します。
ntopngを知らない方は、「ntopng and nProbeによる高速トラフィック分析入門」をご一読ください。
ntopng設定ファイルの編集
/etc/ntopng/ntopng.confに以下2行を追記します。
-i=docker0-i=br-9a17863b4dab
ntopngを再起動してください。
$sudo systemctl restart ntopng
Dockerコンテナのトラフィック監視
ntopngの管理画面にログインし、上記で追加したブリッジインターフェイスが追加されていることを確認し、選択してください。
図9 ブリッジインターフェイスの追加
各コンテナのトラフィックを確認してください。
図10では、wordpress, mysqlが所属するユーザー定義ブリッジを監視しています。
図10 ユーザー定義ブリッジの監視
図11は、リアルタイムでユーザー定義ブリッジに流れるフロー情報を表示しています。
wordpress.orgへのTLS通信やmysqlコンテナへのSQL通信、クライアント端末からwordpressコンテナへのHTTP通信を確認することができます。
図11 ブリッジに流れるフロー
図12はユーザー定義ブリッジインターフェイスで分析したアプリケーションの統計情報です。
図11での分析と同様に、TLS,HTTP,MySQLの通信が占有していることが分ります。
図12 ブリッジインターフェイス、アプリケーション分析
如何でしたでしょうか?
PRTGとntopngを組み合わせれば、Dockerの監視やDockerネットワークトラフィックの可視化を簡単に実現できることが分っていただけたかと思います。
PRTGのお問い合わせ
新しくなったPRTGの日本語インタフェースをぜひお試しください!