Hitachi

uCosminexus Application Runtime for Apache Tomcat ユーザーズガイド


10.3.1 プロセスの起動監視

プロセスの起動監視は,Tomcatサーバプロセスの起動が成功したかどうかを監視します。

Tomcatサーバプロセスの起動時に,次の理由で稼働監視が継続できないと判断した場合,Tomcatサーバプロセス起動時のエラーとして検知します。

これらのエラー発生時の動作と,エラーを検知するための設定について次に説明します。

〈この項の構成〉

(1) Tomcatサーバプロセス初期化完了通知待ちタイムアウト

Tomcatサーバプロセス初期化完了通知待ちタイムアウトとは,Tomcatプロセスモニタ起動後,Tomcatサーバプロセス起動前の稼働監視コンポーネント開始時から,Tomcatサーバプロセス初期化完了通知を受信するまでにタイムアウトが発生することを指します。

この場合,ライフサイクルリスナーが正常に登録されていないため,Tomcatサーバプロセス側からの通知ができないと判断されます。この際,メッセージKDLR20208-Eを出力します。エラーを検知した場合は,「10.2.2 Tomcatサーバプロセスへの稼働監視用ライフサイクルリスナーの設定」の設定を見直してください。

(a) 障害検知時の動作

Tomcatサーバプロセス初期化完了通知待ちタイムアウトが発生した場合,障害検知後のアクションとして,次のように動作します。

  1. スナップショットログを収集します。

  2. Tomcatサーバプロセスが起動済みであればTomcatサーバプロセスを停止します。

これ以外のアクション(ユーザコマンドの指定を含む)を定義することはできません。

(b) 設定できる内容

Tomcatサーバプロセス初期化完了通知タイムアウト時間を変更することで,タイムアウト時間を設定できます。

config.properties(本製品の設定ファイル)に,稼働監視コンポーネントを開始してからのタイムアウト時間をミリ秒単位で指定します。0を指定した場合はタイムアウトしません。

該当するプロパティと設定例を次に示します。この例ではデフォルト値を記載しています。

healthcheck.initdelay.timeout=60000

config.properties(本製品の設定ファイル)については,「12.2 config.properties(本製品の設定ファイル)」を参照してください。

(2) Tomcatサーバプロセスが出力するログをスナップショットログで収集する設定の妥当性

Tomcatサーバプロセス起動前の稼働監視コンポーネント開始時に,本製品はcommon.baseとsnapshot.include.pathsで指定されたディレクトリから更新チェック用ログファイルを探し,ファイルの状態を確認します。更新チェック用ログファイルの本製品のデフォルトのファイル名はcatalina.*.logです。ファイルにアクセスできない場合は,メッセージKDLR20206-Eを出力します。

注※

common.base,およびsnapshot.include.pathsは,config.properties(本製品の設定ファイル)のプロパティです。common.baseについては「12.2.4(1) 本製品全体に関するプロパティ」を,snapshot.include.pathsについては「12.2.4(4) スナップショットログ収集機能に関するプロパティ」を参照してください。

Tomcatサーバプロセス初期化完了通知を受信した時に,更新チェック用ログファイルの内容に変更が発生していなかった場合,スナップショットで正常にTomcatログ(Tomcatサーバプロセスが出力するログ)を収集する設定ができていないと判断し,エラーが発生します。この際,メッセージKDLR20207-Eを出力します。エラーを検知した場合は,「11. スナップショットログ収集機能」に示す設定を見直してください。

(a) 障害検知時の動作

スナップショットでログ収集が正しく設定されていない場合,障害検知後のアクションとして,次のように動作します。

  1. スナップショットログを収集します。

  2. Tomcatサーバプロセスが起動済みであればTomcatサーバプロセスを停止します。

これ以外のアクション(ユーザコマンドの指定を含む)を定義することはできません。

(b) 設定できる内容

更新チェックに使用するログファイルをconfig.properties(本製品の設定ファイル)にglob形式で設定することで,エラーを検知できます。

該当するプロパティの設定形式を次に示します。ログファイル名パターンのデフォルト値は「catalina.*.log」です。

healthcheck.unchangedlogfile.logfilename.glob=<ログファイル名パターン>

config.properties(本製品の設定ファイル)については,「12.2 config.properties(本製品の設定ファイル)」を参照してください。

(3) Tomcatサーバプロセス開始完了通知待ちタイムアウト

Tomcatサーバプロセス開始完了通知待ちタイムアウトとは,Tomcatサーバプロセス初期化完了通知を受信してから,Tomcatサーバプロセス開始完了通知を受信するまでにタイムアウトが発生することを指します。この場合,Tomcatサーバプロセスの起動に失敗したと判断されます。この際,メッセージKDLR20209-Eを出力します。

Tomcatサーバプロセス開始完了通知待ちタイムアウトが発生すると,次に示すJSON形式のイベントプロパティが出力されます。

{
 "type": "startdelay",
 "timestamp": "yyyy-MM-dd'T'HH:mm:ss.SSSXXX",
 "succeeded": false
}

(a) 障害検知時の動作

Tomcatサーバプロセス開始完了通知待ちタイムアウトが発生した場合,障害検知後のアクションとして,次のように動作します。

  1. スナップショットログを収集します。

  2. Tomcatサーバプロセス開始完了通知待ちをリトライします。

  3. 最大リトライ回数分のタイムアウトが発生した場合は,スナップショットログを収集してTomcatサーバプロセスを停止します。

デフォルトの設定では,1分経過するたびにスナップショットログを収集し,5分経過でTomcatサーバプロセスを停止します。設定の変更方法については,「(b) 設定できる内容」を参照してください。

(b) 設定できる内容

Tomcatサーバプロセス開始完了通知待ちタイムアウトに関して設定できる内容を次に示します。

  • Tomcatサーバプロセス開始完了通知待ちタイムアウト時間の変更

    Tomcatサーバプロセス開始完了通知待ちタイムアウト時間を変更することで,タイムアウトまでの時間を調整できます。

    config.properties(本製品の設定ファイル)に,Tomcatサーバプロセス初期化完了通知を受信してからのタイムアウト時間をミリ秒単位で指定します。0を指定した場合はタイムアウトしません。

    該当するプロパティと設定例を次に示します。この例ではデフォルト値を記載しています。

    healthcheck.startdelay.timeout=60000

    config.properties(本製品の設定ファイル)については,「12.2 config.properties(本製品の設定ファイル)」を参照してください。

  • 障害検知時の動作の変更

    障害検知時の動作のうち,次の項目をconfig.properties(本製品の設定ファイル)で変更できます。

    該当するプロパティと設定例を次に示します。この例では,「10.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(本製品の設定ファイル)については,「12.2 config.properties(本製品の設定ファイル)」を参照してください。

なお,healthcheck.startdelay.actions.afterretry.terminateをfalseに変更した場合は,最大リトライ回数分のタイムアウトが発生したあとでも,次の状態となります。

  • Tomcatサーバプロセスが停止しない

  • Tomcatプロセスモニタが動作中

そのため,「Tomcatサーバプロセス開始完了」の状態にならないことがTomcatサーバプロセスが出力するログなどから分かっている場合には,明示的にTomcatプロセスモニタを停止する必要があります。一方,最大リトライ回数分のタイムアウトが発生したあとに稼働監視コンポーネントがTomcatサーバプロセス開始完了通知を受信できた場合には,通常どおり稼働監視を継続します。