17.3.2 コマンドの実行による情報の取得
「表17-2 スナップショットログ収集機能の収集対象情報と収集方法」で収集方法が「コマンド」になっている収集対象情報は,本製品がOSのコマンドを実行することで取得されます。ここでは,OSのコマンド実行による情報取得の仕組みと,取得される情報について説明します。
定義ファイルおよびログファイルに記載されない,障害の解析に必要な情報は,本製品がOSのコマンドを実行することで取得されます。
コマンドを実行した場合の標準出力および標準エラー出力の内容は,コマンド実行結果格納ディレクトリ以下に出力され,スナップショットログに収集されます。コマンド実行結果格納ディレクトリは,次のパスに作成されます。
<プロセスモニタの一時領域>/snapshot_<yyyy-MM-dd_HH-mm-ss.SSS>_<n>
プロセスモニタの一時領域については,実行可能JAR/WAR形式の場合は「14.1.9 プロセスモニタの一時領域」,WARデプロイ形式の場合は「14.2.8 プロセスモニタの一時領域」を参照してください。
パスの<yyyy-MM-dd_HH-mm-ss.SSS>の部分は,時刻情報を示します。<n>の部分は,プロセスモニタを起動してから何番目の取得要求かを表す通番※を示します。
- 注※
-
一番目の取得要求を1とします。
コマンド実行結果格納ディレクトリは,スナップショットログの取得要求時に作成され,スナップショットログのファイルの出力後に削除されます。出力処理中にエラーが発生した場合もコマンド実行結果格納ディレクトリは削除されます。
次に,本製品がOSのコマンドを実行することで取得される情報について説明します。
- 〈この項の構成〉
(1) モニタ対象稼働中情報の取得
スナップショットログの取得時に,モニタ対象プロセスが稼働している場合だけモニタ対象稼働中情報が取得されます。モニタ対象稼働中情報とは,次に示す「モニタリング情報」と「スレッドダンプ情報」を指します。モニタ対象稼働中情報は,コマンド実行結果格納ディレクトリ以下に出力されます。
(a) モニタリング情報
実行環境のメモリおよびCPUの使用状況を測定し,マシンリソースの使用情報が取得されます。測定には少なくとも5秒は掛かるため,次の表に示す場合だけ測定します。
出力トリガー |
取得条件 |
---|---|
モニタ対象プロセスの停止要求時 |
snapshot.onshutdownrequest.watchcommand.enabled※の指定値がtrueのとき |
稼働監視の異常検知時 |
snapshot.onhealthcheck.watchcommand.enabled※の指定値がtrueのとき |
スナップショットログ収集コマンド |
「22.2 スナップショットログ収集コマンド」で指定した値 |
スナップショットログ収集REST API |
「23.2 スナップショットログ収集REST API」で指定した値 |
- 注※
-
config.properties(本製品の設定ファイル)のプロパティです。詳細は,「18.2.4(4) スナップショットログ収集機能に関するプロパティ」を参照してください。
出力トリガーについては,「17.5.1(2) モニタ対象稼働中情報の取得」を参照してください。
モニタリング情報の取得時に実行されるコマンド,出力先,およびその説明を次の表に示します。なお,各コマンドは並列で実行されます。
コマンド |
出力先 |
説明 |
---|---|---|
vmstat 1 5 |
vmstat.txt |
CPU,メモリ,およびディスクI/Oなどのマシンリソースの使用状況をモニタリングして取得します。 |
iostat 1 5 |
iostat.txt |
I/Oデバイスの使用状況を取得します。 |
top -b -n 5 |
top.txt |
プロセスごとのCPUの使用状況をモニタリングして取得します。 |
sar -A 1 5 |
sar.txt |
各種マシンリソースの使用状況をモニタリングして取得します。※ |
- 注※
-
プロセスモニタの実行ユーザがroot権限を持っている場合に,結果が格納されます。
(b) スレッドダンプ情報
モニタ対象プロセスのスレッドダンプ情報が取得されます。スレッドダンプ情報を取得する際,モニタ対象プロセスに負荷が掛かります。そのため,スレッドダンプ情報は,稼働監視で障害を検知した場合だけ取得されます。ただし,スレッドダンプ情報の取得回数,および取得間隔を設定することで,そのほかのタイミングでも取得できます。
スレッドダンプ情報の出力トリガー,取得回数,および取得間隔を次の表に示します。
出力トリガー |
取得回数 |
取得間隔 |
---|---|---|
稼働監視の異常検知時 |
|
|
モニタ対象プロセスの停止要求時 |
|
|
スナップショットログ収集コマンド |
「22.2 スナップショットログ収集コマンド」で指定した値 |
|
スナップショットログ収集REST API |
「23.2 スナップショットログ収集REST API」で指定した値 |
- 注※
-
config.properties(本製品の設定ファイル)のプロパティです。詳細は,「18.2.4(4) スナップショットログ収集機能に関するプロパティ」を参照してください。
表の内容について説明します。
-
稼働監視の異常検知時のスレッドダンプの取得
デフォルトでは,1000ミリ秒間隔で3回取得されます。ただし,取得回数および取得間隔は変更できます。取得回数および取得間隔を変更する方法については,「17.9.4 稼働監視で障害を検知したときのモニタ対象稼働中情報取得時の条件をカスタマイズしたい場合」を参照してください。
-
モニタ対象プロセスの停止要求時のスレッドダンプの取得
デフォルトでは取得されません。設定すれば取得できます。設定方法については,「17.9.3 モニタ対象プロセスの停止要求時,停止する前にモニタ対象稼働中情報を取得したい場合」を,出力トリガーについては,「17.5.1(2) モニタ対象稼働中情報の取得」を参照してください。
(c) スレッドダンプ情報(日立JavaVMを使用する場合)
日立JavaVMを利用する場合,kill -3コマンドの実行によってモニタ対象プロセスのスレッドダンプ情報が取得されます。
スレッドダンプ情報は,次のとおりに出力されます。
<スレッドダンプの出力先>/<スレッドダンプのファイル名>
- スレッドダンプの出力先
-
スレッドダンプの出力先は,次のどちらかです。
-
環境変数JAVACOREDIRの値
-
common.java.hitachi.javacoredir※の指定値
注※ config.properties(本製品の設定ファイル)のプロパティです。詳細は,「18.2.4(1) 本製品全体に関するプロパティ」を参照してください。
スレッドダンプの出力先を変更したい場合は,「17.8.5 スレッドダンプの出力先を変更したい場合(日立JavaVM使用時)」を参照してください。
-
- スレッドダンプのファイル名
-
「表17-12 kill -3 <pid>コマンド実行時の出力先とその説明(日立JavaVMを使用する場合)」を参照してください。
取得されたスレッドダンプファイルは,スナップショットログの出力処理が完了したあとに削除されます。スレッドダンプのファイル名,およびスレッドダンプに出力される内容については,マニュアル「uCosminexus Application Runtime - Cosminexus Developer's Kit for Java 機能解説・リファレンス」を参照してください。
次の表に,kill -3 <pid>コマンド実行時の出力先およびその説明を示します。
コマンド |
出力先 |
説明 |
---|---|---|
kill -3 <pid> |
sigquit_<n>.txt |
sigquit_<n>.txtには,シグナルを送信した結果を出力します。 |
- (凡例)
-
<pid>:モニタ対象プロセスのPIDを示します。
<n>:ある出力要求での何回目の取得かを示します。
(d) スレッドダンプ情報(他社製JavaVMを使用する場合)
他社製JavaVMを使用する場合で,jcmdコマンドを利用できるときは,jcmdコマンドの実行によってモニタ対象プロセスのスレッドダンプ情報が取得されます。スレッドダンプに出力される内容は,使用しているJavaVMのマニュアルを参照してください。
次の表に,jcmdコマンド実行時の出力先およびその説明を示します。
コマンド |
出力先 |
説明 |
---|---|---|
jcmd <pid> Thread.print |
jcmd_thread_<n>.txt |
スレッドダンプ情報を出力します。 |
jcmd <pid> GC.heap_info |
jcmd_heapinfo_<n>.txt |
ヒープ情報を出力します。 |
- (凡例)
-
<pid>:モニタ対象プロセスのPIDを示します。
<n>:ある出力要求での何回目の取得かを示します。
次のどちらかの場合は,kill -3 <pid>コマンドの実行によってスレッドダンプが取得されます。
-
jcmdコマンドが存在しない場合
-
jcmdコマンドが失敗した場合
kill -3 <pid>コマンド実行時の出力先およびその説明を次の表に示します。
コマンド |
出力先 |
説明 |
---|---|---|
kill -3 <pid> |
sigquit_<n>.txt |
|
- (凡例)
-
<pid>:TomcatサーバプロセスのPIDを示します。
<n>:ある出力要求での何回目の取得かを示します。
(2) 環境情報の取得
スナップショットログの取得時に,モニタ対象プロセスが稼働しているかどうかに関係なく,必ず環境情報が取得されます。環境情報は,コマンド実行結果格納ディレクトリ以下に出力されます。
(a) ホストマシン情報
ホストマシン情報およびネットワーク使用状況が取得されます。これらの情報の取得時に実行されるコマンド,出力先,およびその説明を次の表に示します。なお,各コマンドは並列で実行されます。
コマンド |
出力先 |
説明 |
---|---|---|
df |
df.txt |
ディスクの使用状況を取得します。 |
ps -eflm |
ps.txt |
プロセスの状況を取得します。 |
netstat -s |
netstat_s.txt |
ネットワーク統計情報を取得します。 |
netstat -an |
netstat_an.txt |
ネットワークの使用状況を取得します。 |
sysctl -a |
sysctl.txt |
サービスの状況を取得します。 |
rpm -qa |
rpm_qa.txt |
ホストマシンにインストールされているPP情報を取得します。 |
rpm -qai |
rpm_qai.txt |
ホストマシンにインストールされているPP情報の詳細を取得します。 |
dpkg -l |
dpkg.txt |
ホストマシンにインストールされているPP情報を取得します。 |
uname -a |
uname_a.txt |
OSのバージョン情報を取得します。 |
env |
env.txt |
環境変数を取得します。 |
set |
set.txt |
シェル変数およびシェル関数を取得します。 |
ipcs |
ipcs.txt |
プロセス間通信機能の状況を取得します。 |
ipcs -t |
ipcs_t.txt |
プロセス間通信機能の制御時刻を取得します。 |
ipcs -p |
ipcs_p.txt |
プロセス間通信機能のプロセス情報を取得します。 |
ipcs -c |
ipcs_c.txt |
プロセス間通信機能のユーザ情報を取得します。 |
ipcs -u |
ipcs_u.txt |
プロセス間通信機能のサマリを取得します。 |
ipcs -l |
ipcs_l.txt |
プロセス間通信機能の制限値情報を取得します。 |
${CATALINA_HOME}/bin/version.sh |
tomcat_version.txt |
Tomcatのバージョン情報を取得します。WARデプロイ形式の場合だけ取得します。 |