24.9.5 スナップショットログの自動収集後に任意のコマンドを実行したい場合
スナップショットログ収集時ユーザコマンド実行機能とは,スナップショットログ自動収集後に任意のコマンドを実行できる機能です。
ユーザコマンドからは,収集したスナップショットログ(zipファイル)のファイルパスを参照できます。これによって,スナップショットログを任意の場所へ複製し,保存できます。そのため,コンテナ環境のような揮発性のある環境でも,スナップショットログを永続化領域に転送することで,障害発生時の情報を残すことができます。
- スナップショットログ収集時ユーザコマンド実行機能の詳細
-
実行するユーザコマンドを複数設定できます。
ユーザコマンドは,スナップショットコンポーネントで管理するスレッドプールを使用して,java.lang.ProcessBuilderによって実行します。スレッドプールはユーザコマンド全体で共有します。
複数指定したユーザコマンドのうち,1つの実行に失敗した場合,そのユーザコマンドに失敗したことを示すメッセージKDLR10039-Eを出力して,次のユーザコマンドの実行を継続します。
プロセスモニタを停止する際に実行中のユーザコマンドがある場合は,そのコマンドの終了後または終了待ちのタイムアウト後に,プロセスモニタが停止します。また,プロセスモニタの停止時に実行を待機していたユーザコマンドは実行されません。
- スナップショットログ収集時ユーザコマンド実行機能を実行するための設定方法
-
スナップショットログ収集時ユーザコマンド実行機能を利用するには,config.properties(本製品の設定ファイル)に次のプロパティの設定が必要です。
-
ユーザコマンド定義のID
-
実行するユーザコマンド
次のプロパティは,「実行するユーザコマンド定義のID」ごとの任意のプロパティです。
-
ユーザコマンドの引数
-
ユーザコマンドの標準出力をリダイレクトするファイルパス
-
ユーザコマンドの標準エラー出力をリダイレクトするファイルパス
-
ユーザコマンドの終了待ちのタイムアウト時間(単位:ミリ秒)
また,次のプロパティは,すべてのユーザコマンド定義のIDで共有する任意のプロパティです。
-
スレッドプールのサイズ
プロパティと設定例を次に示します。プロパティキーの「snapshot.usercommand.defs.」の後ろに指定した<group-id>文字列がユーザコマンド定義のIDになります。この例では,「exec1」がユーザコマンド定義のIDです。
snapshot.actions.on-auto.after-collection.usercommand.idrefs.1=exec1 snapshot.usercommand.defs.exec1.command=/home/user/usercommand/exec1.sh snapshot.usercommand.defs.exec1.args.1=param1 snapshot.usercommand.defs.exec1.stdout.file.path=${common.base}/onAutoAfterStdout.txt snapshot.usercommand.defs.exec1.stderr.file.path=${common.base}/onAutoAfterStderr.txt snapshot.usercommand.defs.exec1.timeout=10000また,すべてのユーザコマンド定義のIDで共有するプロパティの設定例を次に示します。
snapshot.usercommand.threadpoolsize=3
config.properties(本製品の設定ファイル)については,「25.2 config.properties(本製品の設定ファイル)」を参照してください。
-
- 収集したスナップショットログのファイルパスの取得方法
-
スナップショットログ出力後のユーザコマンドの実行中は,スナップショットログの出力先のフルパスが環境変数SNAPSHOT_LOG_FILEPATHに設定されます。