2.3.21 Linuxのコンテナを使用した仮想化システムで収集できるデータ
- 〈この項の構成〉
(1) Linuxのコンテナの概要
Linuxのコンテナは,1つのLinuxシステム内で,ソフトウェア的に仮想化された複数のLinux環境を稼働できます。コンテナは,ホストOSとリソースを共有するため,仮想マシンと比べて,アプリケーション実行のオーバーヘッドが小さくて済みます。
(2) Linuxのコンテナの構造
Linuxのコンテナは,アプリケーション用のワークスペースを提供するSolarisのZoneと同じような構造をしています。
Linuxのコンテナは,コンテナを管理するホスト環境と,ホスト上で動作し,アプリケーションの分離された空間を提供するコンテナ環境から構成されます。
PFM - Agent for Platformでは,ホスト環境およびコンテナ環境の情報を収集できます。
PFM - Agent for PlatformがサポートするコンテナエンジンはDockerとPodmanです。PFM - Agent for PlatformがサポートするDockerホスト環境とPodmanホスト環境を次に示します。
- DockerホストのOSのバージョン
-
-
Red Hat(R) Enterprise Linux(R) Server 7.1以降
-
CentOS 7.1以降
-
- PodmanホストのOSのバージョン
-
-
Red Hat(R) Enterprise Linux(R) Server 8.1以降
-
CentOS 8.1以降
-
以降,DockerとPodmanで共通する説明は,Linuxのコンテナの説明として記載します。
(3) ホスト環境でのプロセス監視
PFM - Agent for Platformがホスト環境上で動作する場合,コンテナ内のプロセス情報を収集できます。ALL Container Collection for Processプロパティの設定によって,コンテナ内のプロセス情報を収集するかどうかを選択できます。ALL Container Collection for Processプロパティの設定値を次に示します。
- Yes
-
ホスト環境およびすべてのコンテナ環境のプロセス情報を収集する。
- No
-
ホスト環境のプロセス情報だけを収集する。
ALL Container Collection for Processプロパティのデフォルト値は「Yes」です。
ホスト環境上でPFM - Agent for Platformが動作する場合に収集するプロセス情報を次の図に示します。
|
(4) コンテナ環境でのプロセス監視
PFM - Agent for Platformがコンテナ環境上で動作する場合,ALL Container Collection for Processプロパティの設定に関係なくPFM - Agent for Platformが動作しているコンテナ環境のプロセス情報だけが収集されます。コンテナ環境上でPFM - Agent for Platformが動作する場合に収集するプロセス情報を次の図に示します。
|
(5) ホスト環境での注意事項
コンテナ環境で運用する場合の注意事項は,JP1のWebサイトで公開しているドキュメントの「JP1/Performance Management LinuxおよびWindowsのコンテナ環境での留意点」を参照してください。
(a) Dockerホスト環境での注意事項
PFM - Agent for PlatformをDockerホスト環境にインストールしてプロセスの情報を収集する場合,Dockerコンテナ上で稼働しているプロセスの情報を取得するために,Docker Engine APIを使用します。
ここでは,Docker Engine APIの注意事項について説明します。
-
PFM - Agent for Platformは,Docker Engine APIを使用し,デフォルトのUNIXドメインソケットの設定でDocker Engineとの通信を行うため,Docker Engine APIのUNIXドメインソケットの設定を変更しないでください。UNIXドメインソケットをデフォルトから変更すると,Docker Engineとの通信に失敗し,PDレコード,PD_APSIレコード,PD_APSレコードで取得するすべてのプロセスのVirtual Env IDフィールドの値が「N/A」となります。
-
PFM - Agent for Platformのレコード情報収集時に,Docker Engineとの通信中にエラーが発生した場合,または,Docker Engineとの通信中にDockerコンテナの起動または停止が行われた場合,一部のプロセスについて,Dockerホスト上で動作しているのか,Dockerコンテナ上で動作しているのかが判断できないことがあります。この場合,動作環境を判断できなかったプロセスについて,PDレコード,PD_APSIレコード,およびPD_APSレコードのVirtual Env IDフィールドの値が「N/A」となります。
(b) Podmanホスト環境での注意事項
PFM - Agent for PlatformをPodmanホスト環境にインストールしてプロセスの情報を収集する場合,PFM - Agent for Platformでは,Podmanコンテナ上で稼働しているプロセスの情報を取得するために,podmanコマンドを使用します。
ここでは,podmanコマンドの注意事項について説明します。
-
PFM - Agent for Platformのレコード情報収集時に,podmanコマンドがエラー終了したり,所定時間内に処理が完了しなかったりすると,Podmanホスト環境とPodmanコンテナ環境のどちらで動作しているプロセスであるかを判別できないことがあります。この場合,該当するプロセスについて,PDレコード,PD_APSIレコード,およびPD_APSレコードのVirtual Env IDフィールドの値は「N/A」となります。
-
PFM - Agent for Platformでは,次のコマンドを実行してコンテナ一覧を取得します。取得対象となるコンテナはステータスが「Up」のコンテナだけです。ステータスが「Up」でないコンテナ上で動作するプロセスは,ホスト環境のプロセスとして扱います。
podman ps --all --filter status=running
-
Podmanコンテナ内で動作しているプロセスのうち,podman topコマンドでHPID項目が取得できないプロセスは,Podmanホスト環境とPodmanコンテナ環境のどちらで動作しているプロセスであるかを判別できません。この場合,コマンドラインが同じプロセスのPDレコード,PD_APSIレコード,およびPD_APSレコードのVirtual Env IDフィールドの値は常に「N/A」となります。
また,podman topコマンドがエラー終了し,Podmanホスト環境とPodmanコンテナ環境のどちらで動作しているプロセスであるかを判別できない場合,該当するプロセスについて,PDレコード,PD_APSIレコード,およびPD_APSレコードのVirtual Env IDフィールドの値は「N/A」となります。
-
PFM - Agent for Platformでは,ルートレスコンテナ(root以外のユーザーが起動したコンテナ)上で稼働しているプロセスの情報を収集できますが,該当するプロセスをホスト環境のプロセスとして扱います。
-
PFM - Agent for Platformで監視するPodmanコンテナの数は30個未満,Podmanコンテナ上のプロセスの数は10個程度を目安としてください。
-
PFM - Agent for Platformがプロセス情報を収集しているタイミングでPodmanコンテナを停止すると,Podmanホスト環境のプロセス,および停止したPodmanコンテナ上のプロセスのVirtual Env IDフィールドの値が「N/A」となることがあります。
-
Linux 8またはCentOS 8で,PFM - Agent for Platformを12-00から12-50以降にバージョンアップインストールする場合,ALL Container Collection for Processプロパティを「No」に設定していると,次のようにPodmanコンテナ環境のプロセス情報が収集できなくなります。PFM - Agent for Platform 12-50以降でもPodmanコンテナ環境のプロセス情報を継続して収集する場合は,ALL Container Collection for Processプロパティの設定内容を「Yes」に変更する必要があります。
ALL Container Collection for Processプロパティを「No」に設定している場合のプロセス情報の収集内容
- バージョンアップインストール前
-
Podmanホスト環境およびすべてのPodmanコンテナ環境のプロセス情報を収集する
- バージョンアップインストール後
-
Podmanホスト環境のプロセス情報だけを収集する
-
Linux 8またはCentOS 8で,PFM - Agent for Platformを12-00から12-50以降にバージョンアップインストールする場合,次のようにプロセス情報の収集内容が変わります。PFM - Agent for Platform 12-50以降で該当するプロセス情報を収集する場合は,プロセス監視の設定を見直す必要があります。
プロセス情報の収集内容
- バージョンアップインストール前
-
PDレコード,PD_APSIレコード,およびPD_APSレコードのVirtual Env IDフィールドに「N/A」が格納される
- バージョンアップインストール後
-
PDレコード,PD_APSIレコード,およびPD_APSレコードのVirtual Env IDフィールドに「0」やコンテナIDが格納される
(6) コンテナ環境での注意事項
PFM - Agent for Platformをコンテナ環境にインストールしてパフォーマンス情報を収集する場合の注意事項を,次に示します。
-
コンテナ環境へのインストールに関する注意事項については,リリースノートを参照してください。
-
コンテナの特性上,分離したアプリケーション環境を提供するため,次に示す情報は取得できません。
-
PFM - Agent for Platformをインストールしたコンテナ以外のコンテナ環境の情報
-
-
PFM - Agent for Platformをコンテナ環境にインストールして,別のホスト環境(当該コンテナ環境を管理するホスト以外のホスト)のPFM - Managerに接続する場合は,ポートフォワード(ポート転送)によって当該コンテナのIPアドレスを固定して,別のホストからアクセスできるようにする必要があります。
-
コンテナ内で動作しているプロセスのプロセスIDは,ホスト環境とコンテナ環境で異なります。
(a) Podmanコンテナ環境での注意事項
ルートレスコンテナ上には,PFM - Agent for Platformをインストールできません。