Hitachi

uCosminexus Application Runtime for Spring Boot ユーザーズガイド


24.3.2 コマンドの実行による情報の取得

表24‒3 【Linux】スナップショットログ収集機能の収集対象情報と収集方法および「表24‒4 【Windows】スナップショットログ収集機能の収集対象情報と収集方法で収集方法が「コマンド」になっている収集対象情報は,本製品がOSのコマンドを実行することで取得されます。ここでは,OSのコマンド実行による情報取得の仕組みと,取得される情報について説明します。

定義ファイルおよびログファイルに記載されない,障害の解析に必要な情報は,本製品がOSのコマンドを実行することで取得されます。

コマンドを実行した場合の標準出力および標準エラー出力の内容は,コマンド実行結果格納ディレクトリ以下に出力され,スナップショットログに収集されます。コマンド実行結果格納ディレクトリは,次のパスに作成されます。

<プロセスモニタの一時領域>/snapshot_<yyyy-MM-dd_HH-mm-ss.SSS>_<n>

プロセスモニタの一時領域については,実行可能JAR/WAR形式の場合は「20.1.9 プロセスモニタの一時領域」,WARデプロイ形式の場合は20.2.8 プロセスモニタの一時領域」を参照してください。

パスの<yyyy-MM-dd_HH-mm-ss.SSS>の部分は,時刻情報を示します。<n>の部分は,プロセスモニタを起動してから何番目の取得要求かを表す通番を示します。

注※

一番目の取得要求を1とします。

コマンド実行結果格納ディレクトリは,スナップショットログの取得要求時に作成され,スナップショットログのファイルの出力後に削除されます。出力処理中にエラーが発生した場合もコマンド実行結果格納ディレクトリは削除されます。

次に,本製品がOSのコマンドを実行することで取得される情報について説明します。

〈この項の構成〉

(1) モニタ対象稼働中情報の取得

スナップショットログの取得時に,モニタ対象プロセスが稼働している場合だけモニタ対象稼働中情報が取得されます。モニタ対象稼働中情報とは,次に示す「モニタリング情報」と「スレッドダンプ情報」を指します。モニタ対象稼働中情報は,コマンド実行結果格納ディレクトリ以下に出力されます。

(a) モニタリング情報

モニタリング情報の取得について説明します。

実行環境のメモリおよびCPUの使用状況を測定し,マシンリソースの使用情報が取得されます。測定には少なくとも5秒は掛かるため,次の表に示す場合だけ測定します。

表24‒16 マシンリソースの使用情報の出力トリガーと取得条件

出力トリガー

取得条件

モニタ対象プロセスの停止要求時

snapshot.onshutdownrequest.watchcommand.enabledの指定値がtrueのとき

稼働監視の異常検知時

snapshot.onhealthcheck.watchcommand.enabledの指定値がtrueのとき

統計情報出力機能の初期化処理失敗時

snapshot.on-init-stats.watchcommand.enabledの指定値がtrueのとき

スナップショットログ収集コマンド

29.2 スナップショットログ収集コマンド」で指定した値

スナップショットログ収集REST API

30.2 スナップショットログ収集REST API」で指定した値

注※

config.properties(本製品の設定ファイル)のプロパティです。詳細は,「(4) スナップショットログ収集機能に関するプロパティ」を参照してください。

出力トリガーについては,「(2) モニタ対象稼働中情報の取得」を参照してください。

モニタリング情報の取得時に実行されるコマンド,出力先,およびその説明を次の表に示します。なお,各コマンドは並列で実行されます。

表24‒17 【Linux】モニタリング情報の取得時のコマンド,出力先,およびその説明

コマンド

出力先

説明

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権限を持っている場合に,結果が格納されます。

表24‒18 【Windows】モニタリング情報の取得時のコマンド,出力先,およびその説明

コマンド

出力先

説明

typeperf "\Processor Information(_Total)\% Processor Utility" "\System\Processor Queue Length" -sc 5

typeperf_cpu.csv

CPU使用率,CPUの処理を待つスレッド数を取得します

typeperf "\Memory\Chache Bytes" "\Memory\Cache Faults/sec" "\Memory\Page Faults/sec" "\Memory\Transition Faults/sec" -sc 5

typeperf_memory.csv

ファイルシステムキャッシュのメモリ使用量,メモリの別の場所やディスクからの取り出し回数,ページフォールト数,フォールト数を取得します

typeperf "\Process(_Total)\Handle Count" "\Process(_Total)\Page Faults/sec" "Process(_Total)\Private Bytes" "\Process(_Total)\Virtual Bytes" "\Process(_Total)\Working Set" -sc 5

typeperf_process.csv

プロセスのハンドル数,ページフォールトの発生率,メモリ使用量,仮想メモリ使用量,物理メモリ使用量を取得します

typeperf "\PhysicalDisk(_Total)\Avg. Disk Bytes/Transfer" -sc 5

typeperf_file_io.csv

ファイルのI/O中にディスク間で転送された平均バイト数を取得します

注※

実行したコマンドの標準出力をそのまま出力します。CSV形式で開く場合は,不要な出力を適宜削除してください。

(b) スレッドダンプ情報

モニタ対象プロセスのスレッドダンプ情報が取得されます。スレッドダンプ情報を取得する際,モニタ対象プロセスに負荷が掛かります。そのため,スレッドダンプ情報は,稼働監視で障害を検知した場合だけ取得されます。ただし,スレッドダンプ情報の取得回数,および取得間隔を設定することで,そのほかのタイミングでも取得できます。

スレッドダンプ情報の出力トリガー,取得回数,および取得間隔を次の表に示します。

表24‒19 スレッドダンプ情報の出力トリガー,取得回数,および取得間隔

出力トリガー

取得回数

取得間隔

稼働監視の異常検知時

  • デフォルトの場合:

    3回

  • 変更した場合:

    <snapshot.onhealthcheck.threaddumpnumの指定値>

  • デフォルトの場合:

    1,000ミリ秒

  • 変更した場合:

    <snapshot.default.threaddumpintervalの指定値>ミリ秒

モニタ対象プロセスの停止要求時

  • デフォルトの場合:

    取得されない

  • 設定した場合:

    <snapshot.onshutdownrequest.threaddumpnumの指定値>

  • デフォルトの場合:

    取得されない

  • 変更した場合:

    <snapshot.default.threaddumpintervalの指定値>ミリ秒

統計情報出力機能の初期化処理失敗時

  • デフォルトの場合:

    3回

  • 変更した場合:

    <snapshot.on-init-stats.threaddumpnumの指定値>

  • デフォルトの場合:

    1,000ミリ秒

  • 変更した場合:

    <snapshot.default.threaddumpintervalの指定値>ミリ秒

スナップショットログ収集コマンド

29.2 スナップショットログ収集コマンド」で指定した値

  • デフォルトの場合:

    1,000ミリ秒

  • 変更した場合:

    <snapshot.default.threaddumpintervalの指定値>ミリ秒

スナップショットログ収集REST API

30.2 スナップショットログ収集REST API」で指定した値

注※

config.properties(本製品の設定ファイル)のプロパティです。詳細は,「(4) スナップショットログ収集機能に関するプロパティ」を参照してください。

表の内容について説明します。

(c) スレッドダンプ情報(日立JavaVMを使用する場合)

日立JavaVMを利用する場合,コマンドの実行によってモニタ対象プロセスのスレッドダンプ情報が取得されます。

実行するコマンドは次のとおりです。

  • Linuxの場合:kill -3コマンド

  • Windowsの場合:javacoreコマンド

スレッドダンプ情報は,次のとおりに出力されます。

<スレッドダンプの出力先>/<スレッドダンプのファイル名>
スレッドダンプの出力先

スレッドダンプの出力先は,次のどちらかです。

  • 環境変数JAVACOREDIRの値

  • common.java.hitachi.javacoredirの指定値

    注※ config.properties(本製品の設定ファイル)のプロパティです。詳細は,「(1) 本製品全体に関するプロパティ」を参照してください。

スレッドダンプの出力先を変更したい場合は,「24.8.5 スレッドダンプの出力先を変更したい場合(日立JavaVM使用時)」を参照してください。

スレッドダンプのファイル名

表24‒20 kill -3 <pid>コマンド実行時の出力先とその説明(日立JavaVMを使用する場合)および「表24‒21 javacore -f -p <pid>コマンド実行時の出力先とその説明(日立JavaVMを使用する場合)を参照してください。

取得されたスレッドダンプファイルは,スナップショットログの出力処理が完了したあとに削除されます。スレッドダンプのファイル名,およびスレッドダンプに出力される内容については,マニュアルuCosminexus Application Runtime - Cosminexus Developer's Kit for Java 機能解説・リファレンスを参照してください。

次の表に,コマンド実行時の出力先およびその説明を示します。

表24‒20 kill -3 <pid>コマンド実行時の出力先とその説明(日立JavaVMを使用する場合)

コマンド

出力先

説明

kill -3 <pid>

sigquit_<n>.txt

sigquit_<n>.txtには,シグナルを送信した結果を出力します。

(凡例)

<pid>:モニタ対象プロセスのPIDを示します。

<n>:ある出力要求での何回目の取得かを示します。

表24‒21 javacore -f -p <pid>コマンド実行時の出力先とその説明(日立JavaVMを使用する場合)

コマンド

出力先

説明

<javacoreコマンドのパス> -f -p <pid>

javacore_<n>.txt

javacore_<n>.txtには,javacoreコマンドの結果を出力します。

(凡例)

<pid>:モニタ対象プロセスのPIDを示します。

<n>:ある出力要求での何回目の取得かを示します。

(d) スレッドダンプ情報(他社製JavaVMを使用する場合)

他社製JavaVMを使用する場合で,jcmdコマンドを利用できるときは,jcmdコマンドの実行によってモニタ対象プロセスのスレッドダンプ情報が取得されます。スレッドダンプに出力される内容は,使用しているJavaVMのマニュアルを参照してください。

次の表に,jcmdコマンド実行時の出力先およびその説明を示します。

なお,jcmdコマンドは次のパスを使用します。

Linuxの場合:

  • <Javaのインストールディレクトリ>/bin/jcmd

Windows の場合:

  • <Javaのインストールディレクトリ>/bin/jcmd.exe

表24‒22 jcmdコマンド実行時の出力先とその説明(他社製JavaVMを使用する場合)

コマンド

出力先

説明

<jcmdコマンドのパス> <pid> Thread.print

jcmd_thread_<n>.txt

スレッドダンプ情報を出力します。

<jcmdコマンドのパス> <pid> GC.heap_info

jcmd_heapinfo_<n>.txt

ヒープ情報を出力します。

<jcmdコマンドのパス> <pid> Thread.dump_to_file -format=json <コマンド実行結果格納ディレクトリ>/jcmd_dump_thread_<n>.json

次の2つが出力されます。

  • jcmd_dump_stdouterr_<n>.txt

  • jcmd_dump_thread_<n>.json

  • JDKのバージョンが21以降の場合だけ,コマンドを実行します。

  • jcmd_dump_stdouterr_<n>.txtには,コマンドの実行結果を出力します。

  • jcmd_dump_thread_<n>.jsonには,スレッドダンプ情報を出力します。

(凡例)

<pid>:モニタ対象プロセスのPIDを示します。

<n>:ある出力要求での何回目の取得かを示します。

次のどちらかの場合は,jcmdコマンドとは別のコマンドの実行によってスレッドダンプが取得されます。

  • jcmdコマンドが存在しない場合

  • jcmdコマンドが失敗した場合

上記の場合に実行するコマンドは次のとおりです。

  • Linuxの場合:kill -3コマンド

  • Windowsの場合:製品内部コマンド

コマンド実行時の出力先およびその説明を次の表に示します。

表24‒23 kill -3 <pid>コマンド実行時の出力先およびその説明(他社製JavaVMを使用する場合)

コマンド

出力先

説明

kill -3 <pid>

sigquit_<n>.txt

  • モニタ対象プロセスの標準出力にスレッドダンプを出力します。

  • sigquit_<n>.txtには,シグナルを送信した結果を出力します。

(凡例)

<pid>:TomcatサーバプロセスのPIDを示します。

<n>:ある出力要求での何回目の取得かを示します。

表24‒24 製品内部コマンド実行時の出力先およびその説明(他社製JavaVMを使用する場合)

コマンド

出力先

説明

製品内部コマンド

ctrl_break_<n>.txt

モニタ対象プロセスの標準出力にスレッドダンプを出力します。

(凡例

<n>:ある出力要求での何回目の取得かを示します。

(2) 環境情報の取得

スナップショットログの取得時に,モニタ対象プロセスが稼働しているかどうかに関係なく,必ず環境情報が取得されます。環境情報は,コマンド実行結果格納ディレクトリ以下に出力されます。

(a) ホストマシン情報

ホストマシン情報およびネットワーク使用状況が取得されます。これらの情報の取得時に実行されるコマンド,出力先,およびその説明を次の表に示します。なお,各コマンドは並列で実行されます。

表24‒25 【Linux】ホストマシン情報の取得時のコマンド,出力先,およびその説明

コマンド

出力先

説明

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デプロイ形式の場合だけ取得します。

表24‒26 【Windows】ホストマシン情報の取得時のコマンド,出力先,およびその説明

コマンド

出力先

説明

systeminfo

systeminfo.txt

OSのバージョン情報を取得します。

netstat -e

netstat_e.txt

プロトコルの統計情報を取得します。

netstat -s

netstat_s.txt

ネットワークの統計情報を取得します。

netstat -ano

netstat_ano.txt

ネットワークの使用状況を取得します。

powershell -Command "Get-CimInstance Win32_Process | Select-Object ProcessId, Name, CommandLine, @{Name='CPU';Expression={(Get-Process -Id $_.ProcessId).CPU}}, @{Name='Memory';Expression={(Get-Process -Id $_.ProcessId).WorkingSet64}} | ConvertTo-Csv -NoTypeInformation"

get_cim_instance.csv

実行中のタスクの状況を取得します。

powershell -Command "Get-EventLog -LogName System | Select-Object TimeGenerated, EntryType, Source, InstanceId, Message | ConvertTo-Csv -NoTypeInformation"

eventlog.csv

システムのイベントログを取得します。

cmd /C set

set.txt

環境変数を取得します。

${CATALINA_HOME}/bin/version.dat

tomcat_version.txt

Tomcatのバージョン情報を取得します。WARデプロイ形式の場合だけ取得します。

(b) Javaの実行環境情報

Javaの実行環境情報について説明します。

Javaの実行環境情報を取得するために,システムプロパティの値が取得されます。ここで取得される対象は,プロセスモニタのシステムプロパティです。

すべてのシステムプロパティのキーおよび値が「<key>=<value>」形式で,system_properties.txtに出力されます。

重要

モニタ対象プロセスのシステムプロパティは出力されません。