2021年1月25日月曜日

コンテナ時代もお任せあれ。Dockerコンテナ監視とトラフィック分析の実現方法

基幹システムでコンテナ型仮想化を広く活用している事例が急速に増えております。

そこで本ブログ記事では、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ホスト側で設定した証明書と秘密鍵を登録します。

証明書の設定に関しましては、Dockerホスト側の設定となりますので詳細はここでは触れません。

次のマニュアルが参考となりますので、興味がある方はご一読ください。


図4 センサーの設定

図4で「OK」をクリックすると、監視対象コンテナを選択する画面が表示されます。

監視対象とする、mysql, wordpress, centosのコンテナtest01とtest02を選択します。

図5 監視対象コンテナの選択

Dockerホストにコンテナセンサーが4つ登録されていることを確認してください。

図6 コンテナセンサー追加確認

wordpressのコンテナセンサーをクリックし、登録されているチャネルを確認しましょう。

稼働時間、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の日本語インタフェースをぜひお試しください!





ntopngのお問い合わせ

本記事で扱っているntop社のnProbe, ntopng製品にご興味のある方は、以下のリンクから弊社までお問い合わせください!