16.3.3 プロセス生存監視
プロセス生存監視では,モニタ対象プロセスの生存状況を監視し,モニタ対象プロセスが異常終了した場合には,ユーザコマンドを実行します。
モニタ対象プロセスの生存状況が監視されている場合,次の順序で動作します。
-
モニタ対象プロセスが障害によって異常終了したとプロセスモニタが判定する。
-
スナップショットログを収集する。
-
プロセスモニタが終了する。
この場合,主にスナップショットログ収集に掛かる時間の分,プロセスモニタの終了が遅れます。例えば,プロセスモニタの終了後にロードバランサからのリクエストを閉塞する場合,スナップショットログ収集に掛かる時間の分,閉塞の開始が遅れます。
稼働監視機能のプロセス生存監視では,モニタ対象プロセスの異常を検知した場合,スナップショットログが収集される前にユーザコマンドを実行します。動作の順序を次に示します。
-
モニタ対象プロセスの生存状況を監視することで,モニタ対象プロセスの異常終了を検知する。
-
ユーザコマンドを実行する。
-
スナップショットログを収集する。
-
プロセスモニタが終了する。
このように,プロセス生存監視によって,プロセスモニタの終了を待つことなく,必要な処理を開始できます。
- 〈この項の構成〉
(1) 障害発生の判定基準
モニタ対象プロセスの停止処理の実行時,次の場合に障害が発生したと判定します。
-
稼働監視機能を起因とする停止要求ではない場合,かつ,モニタ対象プロセスの終了ステータスが障害発生を示す値であった場合
-
稼働監視機能を起因とする停止要求ではない場合,かつ,モニタ対象プロセスがプロセス終了待ちタイムアウト時間内に終了しなかった場合
モニタ対象プロセスの終了ステータスの値,およびプロセス終了待ちタイムアウト時間は,config.properties(本製品の設定ファイル)で指定します。config.properties(本製品の設定ファイル)については,「18.2 config.properties(本製品の設定ファイル)」を参照してください。
(2) 障害検知時の動作
(a) 障害検知時に出力されるイベントプロパティ
モニタ対象プロセスの異常終了を検知した時は,次のJSON形式のイベントプロパティを出力します。
-
イベントプロパティ(モニタ対象プロセスが終了した場合)
{ "type": "shutdown", "timestamp": "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", "succeeded": false, "exitstatus": 137<モニタ対象プロセスの終了ステータスの値> }
-
イベントプロパティ(モニタ対象プロセスがプロセス終了待ちタイムアウト時間内に終了しなかった場合)
{ "type": "shutdown", "timestamp": "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", "succeeded": false }
(b) 障害検知後のアクション
モニタ対象プロセスの障害発生を検知した場合,ユーザが定義したコマンドを実行します。コマンドを定義する方法については,「16.4 稼働監視機能の設定(ユーザコマンドの実行)」を参照してください。
(3) 設定できる内容
config.properties(本製品の設定ファイル)で,次の項目を設定できます。
-
モニタ対象プロセスの異常終了時に,ユーザコマンドを実行する終了ステータスの値
-
モニタ対象プロセスの異常終了検知時に実行するコマンド
config.properties(本製品の設定ファイル)については,「18.2 config.properties(本製品の設定ファイル)」を参照してください。
該当するプロパティと設定例を次に示します。この例では,「16.4 稼働監視機能の設定(ユーザコマンドの実行)」で設定する「ユーザコマンド定義のID」を「exec1」としています。
healthcheck.shutdown.enabled=true healthcheck.shutdown.actions.failure.condition=ERROR healthcheck.shutdown.actions.failure.usercommand.idrefs.1=exec1