16.3.1 プロセス起動監視
プロセス起動監視は,モニタ対象プロセスの起動が成功したかどうかを監視します。
モニタ対象プロセスの起動時に,次の理由で稼働監視が継続できないと判断した場合,モニタ対象プロセス起動時のエラーとして検知します。
-
モニタ対象プロセス初期化完了通知待ちタイムアウトが発生する
-
スナップショットログ収集機能で,Tomcatサーバプロセスが出力するログを収集する設定ができていない(WARデプロイ形式の場合)
-
モニタ対象プロセス開始完了通知待ちタイムアウトが発生する
これらのエラー発生時の動作と,エラーを検知するための設定について次に説明します。
- 〈この項の構成〉
(1) モニタ対象プロセス初期化完了通知待ちタイムアウト
モニタ対象プロセス初期化完了通知待ちタイムアウトとは,プロセスモニタ起動後,モニタ対象プロセス起動前の稼働監視コンポーネント開始時から,モニタ対象プロセスの初期化完了通知を受信するまでにタイムアウトが発生することを指します。
この場合,ライフサイクルリスナーが正常に登録されていないため,モニタ対象プロセス側からの通知ができないと判断されます。この際,メッセージKDLR20208-Eを出力します。エラーを検知した場合は,「16.2.2 モニタ対象プロセスへの稼働監視用ライフサイクルリスナーの設定」の設定を見直してください。
(a) 障害検知時の動作
モニタ対象プロセス初期化完了通知待ちタイムアウトが発生した場合,障害検知後のアクションとして,次のように動作します。
-
スナップショットログを収集します。
-
モニタ対象プロセスが起動済みであれば,モニタ対象プロセスを停止します。
これ以外のアクション(ユーザコマンドの指定を含む)を定義することはできません。
(b) 設定できる内容
モニタ対象プロセス初期化完了通知タイムアウト時間を変更することで,タイムアウト時間を設定できます。
config.properties(本製品の設定ファイル)に,稼働監視コンポーネントを開始してからのタイムアウト時間をミリ秒単位で指定します。0を指定した場合はタイムアウトしません。
該当するプロパティと設定例を次に示します。この例ではデフォルト値を記載しています。
healthcheck.initdelay.timeout=60000
config.properties(本製品の設定ファイル)については,「18.2 config.properties(本製品の設定ファイル)」を参照してください。
(2) Tomcatサーバプロセスのログファイルの収集に関する設定(WARデプロイ形式)
WARデプロイ形式の場合,Tomcatサーバプロセス起動前の稼働監視コンポーネント開始時に,本製品がcommon.base※1とsnapshot.include.paths※1で指定されたディレクトリから更新チェック用ログファイル※2を探し,ファイルの状態を確認します。ファイルにアクセスできない場合は,メッセージKDLR20206-Eを出力します。
- 注※1
-
common.base,およびsnapshot.include.pathsは,config.properties(本製品の設定ファイル)のプロパティです。common.baseについては「18.2.4(1) 本製品全体に関するプロパティ」を,snapshot.include.pathsについては「18.2.4(4) スナップショットログ収集機能に関するプロパティ」を参照してください。
- 注※2
-
更新チェック用ログファイルのデフォルトのファイル名は,catalina.*.logです。
Tomcatサーバプロセス初期化完了通知を受信したときに,更新チェック用ログファイルの内容に変更がなかった場合は,エラーが発生します。Tomcatサーバプロセスのログファイルを正常に収集するための設定ができていないと判断するためです。この際,メッセージKDLR20207-Eを出力します。エラーを検知した場合は,「17. スナップショットログ収集機能」に示す設定を見直してください。
(a) 障害検知時の動作
スナップショットでログ収集が正しく設定されていない場合,障害検知後のアクションとして,次のように動作します。
-
スナップショットログを収集します。
-
Tomcatサーバプロセスが起動済みであれば,Tomcatサーバプロセスを停止します。
これ以外のアクション(ユーザコマンドの指定を含む)を定義することはできません。
(b) 設定できる内容
WARデプロイ形式の場合,更新チェックに使用するログファイルをconfig.properties(本製品の設定ファイル)にglob形式で設定することで,エラーを検知できます。
該当するプロパティの設定形式を次に示します。ログファイル名パターンのデフォルト値は「catalina.*.log」です。
healthcheck.unchangedlogfile.logfilename.glob=<ログファイル名パターン>
config.properties(本製品の設定ファイル)については,「18.2 config.properties(本製品の設定ファイル)」を参照してください。
(3) モニタ対象プロセス開始完了通知待ちタイムアウト
「モニタ対象プロセス開始完了通知待ちタイムアウト」とは,モニタ対象プロセス初期化完了通知を受信してから,モニタ対象プロセス開始完了通知を受信するまでにタイムアウトが発生することを指します。この場合,モニタ対象プロセスの起動に失敗したと判断されます。この際,メッセージKDLR20209-Eを出力します。
(a) 障害検知時の動作
障害検知時に出力されるイベントプロパティと障害検知後のアクションを次に示します。
- 障害検知時に出力されるイベントプロパティ
-
モニタ対象プロセス開始完了通知待ちタイムアウトが発生すると,次に示すJSON形式のイベントプロパティが出力されます。
{ "type": "startdelay", "timestamp": "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", "succeeded": false } - 障害検知後のアクション
-
モニタ対象プロセス開始完了通知待ちタイムアウトが発生した場合,障害検知後のアクションとして,次のように動作します。
-
スナップショットログを収集します。
-
モニタ対象プロセス開始完了通知待ちをリトライします。
-
最大リトライ回数分のタイムアウトが発生した場合は,スナップショットログを収集してモニタ対象プロセスを停止します。
デフォルトの設定では,1分経過するたびにスナップショットログを収集し,5分経過でモニタ対象プロセスを停止します。設定の変更方法については,「(b) 設定できる内容」を参照してください。
-
(b) 設定できる内容
モニタ対象プロセス開始完了通知待ちタイムアウトに関して設定できる内容を次に示します。
-
モニタ対象プロセス開始完了通知待ちタイムアウト時間の変更
モニタ対象プロセス開始完了通知待ちタイムアウト時間を変更することで,タイムアウトまでの時間を調整できます。
config.properties(本製品の設定ファイル)に,モニタ対象プロセス初期化完了通知を受信してからのタイムアウト時間をミリ秒単位で指定します。0を指定した場合はタイムアウトしません。
該当するプロパティと設定例を次に示します。この例ではデフォルト値を記載しています。
healthcheck.startdelay.timeout=60000
config.properties(本製品の設定ファイル)については,「18.2 config.properties(本製品の設定ファイル)」を参照してください。
-
障害検知時の動作の変更
障害検知時の動作のうち,次の項目をconfig.properties(本製品の設定ファイル)で変更できます。
-
ユーザコマンドの実行
ユーザコマンドを定義する場合は,別途「16.4 稼働監視機能の設定(ユーザコマンドの実行)」の定義が必要です。
-
最大リトライ回数
-
スナップショットログの収集有無
-
モニタ対象プロセスの停止有無
該当するプロパティと設定例を次に示します。この例では,「16.4 稼働監視機能の設定(ユーザコマンドの実行)」で設定する「ユーザコマンド定義のID」として,「exec1」を設定しています。
healthcheck.startdelay.actions.failure.usercommand.idrefs.1=exec1 healthcheck.startdelay.actions.failure.retrymax=4 healthcheck.startdelay.actions.failure.snapshot=true healthcheck.startdelay.actions.afterretry.terminate=true
config.properties(本製品の設定ファイル)については,「18.2 config.properties(本製品の設定ファイル)」を参照してください。
-
なお,healthcheck.startdelay.actions.afterretry.terminateをfalseに変更した場合は,最大リトライ回数分のタイムアウトが発生したあとでも,次の状態となります。
-
モニタ対象プロセスが停止しない
-
プロセスモニタが動作中
そのため,「モニタ対象プロセス開始完了」の状態にならないことがモニタ対象プロセスが出力するログなどから分かっている場合には,明示的にプロセスモニタを停止する必要があります。一方,最大リトライ回数分のタイムアウトが発生したあとに稼働監視コンポーネントがモニタ対象プロセス開始完了通知を受信できた場合には,通常どおり稼働監視を継続します。