11.3.2 コマンドの実行による情報の取得
「表11-2 スナップショットログ収集機能の収集対象情報と収集方法」で収集方法が「コマンド」になっている収集対象情報は,uCARTがOSのコマンドを実行することで取得されます。ここでは,OSのコマンド実行による情報取得の仕組みと,取得される情報について説明します。
次のファイルに記載されない,障害の解析に必要な情報は,uCARTがOSのコマンドを実行することで取得されます。
-
定義ファイル
-
ログファイル
コマンドを実行した場合の標準出力および標準エラー出力の内容は,コマンド実行結果格納ディレクトリ以下に出力され,スナップショットログに収集されます。コマンド実行結果格納ディレクトリは,次のパスに作成されます。
<Tomcatプロセスモニタの一時領域>/snapshot_<yyyy-MM-dd_HH-mm-ss.SSS>_<n>
<Tomcatプロセスモニタの一時領域>については,「8.8 Tomcatプロセスモニタの一時領域」を参照してください。パスの<yyyy-MM-dd_HH-mm-ss.SSS>の部分は,時刻情報を示します。<n>の部分は,Tomcatプロセスモニタを起動してから何番目の取得要求かを表す通番※を示します。
- 注※
-
一番目の取得要求を1とします。
コマンド実行結果格納ディレクトリは,スナップショットログの取得要求時に作成され,スナップショットログのファイルの出力後に削除されます。出力処理中にエラーが発生した場合もコマンド実行結果格納ディレクトリは削除されます。
次に,uCARTがOSのコマンドを実行することで取得される情報について説明します。
- 〈この項の構成〉
(1) Tomcat稼働中情報の取得
スナップショットログの取得時に,Tomcatサーバプロセスが稼働している場合だけTomcat稼働中情報が取得されます。Tomcat稼働中情報とは,次に示す「モニタリング情報」と「スレッドダンプ情報」を指します。Tomcat稼働中情報は,コマンド実行結果格納ディレクトリ以下に出力されます。
(a) モニタリング情報
実行環境のメモリおよびCPUの使用状況を測定し,マシンリソースの使用情報が取得されます。測定には少なくとも5秒は掛かるため,次の場合だけ測定します。
出力トリガー |
取得条件 |
---|---|
Tomcatサーバプロセスの停止要求時 |
snapshot.onshutdownrequest.watchcommand.enabled※の指定値がtrueのとき |
稼働監視の異常検知時 |
snapshot.onhealthcheck.watchcommand.enabled※の指定値がtrueのとき |
スナップショットログ収集コマンド |
「16.2 スナップショットログ収集コマンド」で指定した値 |
スナップショットログ収集REST API |
「17.2 スナップショットログ収集REST API」で指定した値 |
モニタリング情報の取得時に実行されるコマンド,出力先,およびその説明を次の表に示します。なお,各コマンドは並列で実行されます。
コマンド |
出力先 |
説明 |
---|---|---|
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 |
各種マシンリソースの使用状況をモニタリングして取得します。※ |
(b) スレッドダンプ情報
Tomcatサーバプロセスのスレッドダンプ情報が取得されます。スレッドダンプ情報はTomcatサーバプロセスに負荷をかけるため,稼働監視で障害を検知した場合だけ取得されます。ただし,スレッドダンプ情報の取得回数,および取得間隔を設定することで,そのほかのタイミングでも取得できます。
スレッドダンプ情報の出力トリガー,取得回数,および取得間隔を次の表に示します。
出力トリガー |
取得回数 |
取得間隔 |
---|---|---|
稼働監視の異常検知時 |
|
|
Tomcatサーバプロセスの停止要求時 |
|
|
スナップショットログ収集コマンド |
「16.2 スナップショットログ収集コマンド」で指定した値 |
|
スナップショットログ収集REST API |
「17.2 スナップショットログ収集REST API」で指定した値 |
出力トリガーの詳細については,「11.5.1(2) Tomcat稼働中情報の取得」を参照してください。
(c) スレッドダンプ情報(日立JavaVMを使用する場合)
日立JavaVMを利用する場合,kill -3コマンドの実行によってTomcatサーバプロセスのスレッドダンプ情報が取得されます。
スレッドダンプ情報は,次のとおりに出力されます。
<スレッドダンプの出力先>/<スレッドダンプのファイル名>
- スレッドダンプの出力先
-
スレッドダンプの出力先は,次のどちらかです。
-
環境変数JAVACOREDIRの値
-
common.java.hitachi.javacoredir※の指定値
注※ config.properties(uCART設定ファイル)のプロパティです。詳細は,「12.2.4(1) uCART全体に関するプロパティ」を参照してください。
スレッドダンプの出力先を変更したい場合は,「11.8.5 スレッドダンプの出力先を変更したい場合(日立JavaVM使用時)」を参照してください。
-
- スレッドダンプのファイル名
-
「表11-10 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には,シグナルを送信した結果を出力します。 |
(d) スレッドダンプ情報(他社製JavaVMを使用する場合)
他社製JavaVMを使用する場合で,jcmdコマンドを利用できるときは,jcmdコマンドの実行によってTomcatサーバプロセスのスレッドダンプ情報が取得されます。スレッドダンプに出力される内容は,使用しているJavaVMのマニュアルを参照してください。
次の表に,jcmdコマンド実行時の出力先およびその説明を示します。
コマンド |
出力先 |
説明 |
---|---|---|
jcmd <pid> Thread.print |
jcmd_thread_<n>.txt |
スレッドダンプ情報を出力します。 |
jcmd <pid> GC.heap_info |
jcmd_heapinfo_<n>.txt |
ヒープ情報を出力します。 |
次のどちらかの場合は,kill -3 <pid>コマンドの実行によってスレッドダンプが取得されます。
-
jcmdコマンドが存在しない場合
-
jcmdコマンドが失敗した場合
kill -3 <pid>コマンド実行時の出力先およびその説明を次の表に示します。
コマンド |
出力先 |
説明 |
---|---|---|
kill -3 <pid> |
sigquit_<n>.txt |
|
(2) 環境情報の取得
スナップショットログの取得時に,Tomcatサーバプロセスが稼働しているかどうかに関係なく,必ず環境情報が取得されます。環境情報は,コマンド実行結果格納ディレクトリ以下に出力されます。
(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のバージョン情報を取得します。 |