16.4 稼働監視機能の設定(ユーザコマンドの実行)
稼働監視によって障害を検知した場合に,ユーザが定義したコマンドを実行させることができます。
ユーザコマンドは,稼働監視コンポーネントで管理するスレッドプールを使って,java.lang.ProcessBuilderによって実行します。クラウド・コンテナの管理インフラに情報を通知するコマンドを定義することで,情報通知ができます。
ユーザコマンドを定義するには,コマンドの内容とコマンドを実行するスレッドプールをconfig.properties(本製品の設定ファイル)に設定する必要があります。
設定できる項目は次のとおりです。
-
スレッドプールのサイズ
-
「ユーザコマンド定義のID」ごとに実行するユーザコマンド
-
ユーザコマンドの引数
-
ユーザコマンドの標準出力をリダイレクトするファイルパス
-
ユーザコマンドの標準エラー出力をリダイレクトするファイルパス
-
ユーザコマンドの終了待ちのタイムアウト時間(単位:ミリ秒)
該当するプロパティと設定例を次に示します。プロパティキーの「healthcheck.usercommand.defs.」の後ろに指定した<group-id>文字列がユーザコマンド定義のIDになります。この例では,「exec1」がユーザコマンド定義のIDです。
healthcheck.usercommand.threadpoolsize=10 healthcheck.usercommand.defs.exec1.command=senderrorCommand healthcheck.usercommand.defs.exec1.args.1=param1 healthcheck.usercommand.defs.exec1.stdout.file.path=${common.base}/stdout.log healthcheck.usercommand.defs.exec1.stderr.file.path=${common.base}/stderr.log healthcheck.usercommand.defs.exec1.timeout=10000
config.properties(本製品の設定ファイル)については,「18.2 config.properties(本製品の設定ファイル)」を参照してください。
ユーザコマンド定義のIDは,各監視項目の障害検知時の動作のアクションとして複数指定できます。複数指定したユーザコマンドのうち,1つの実行に失敗した場合,そのユーザコマンドに失敗したことを示すメッセージKDLR20228-Eを出力して,次のコマンドの実行を継続します。スレッドプールはユーザコマンド全体で共有します。
プロセスモニタが停止する際に実行中のユーザコマンドがある場合は,そのコマンドの終了後または終了待ちのタイムアウト後に,プロセスモニタが停止します。また,プロセスモニタの終了時に実行を待機していたユーザコマンドは,実行されません。