intra-mart Accel Platform 設定ファイルリファレンス 第34版 2024-04-01

ヘルスコンディション

コンディション(条件)またはプレディケート(叙述)は、一連の基準に基づいて実行するアクションを制限します。
コンディションは期間ごとに評価されます。すべての条件が真と評価されない限り、コンディションはヘルスアクションの実行を防止します。
コンディションが無いアクションは期間毎に一度実行されます。複数のコンディションがアクションに存在しているとき、組み合わせのデフォルトは<health:And>です。

基本条件

基本条件は一般的な基準を評価し条件がマッチした場合にtrueを返します。
基本条件はヘルスチェックの状態を評価しません。代わりに、その日の時間のような一般的な基準を評価します。

<health:IfCron>

現在時刻が cronスタイル で設定された範囲だった場合にマッチします。
これは、定期的なアクションをスケジュールしたり、重要な時間帯に再起動などを抑止することに使用できます。

属性

属性名 説明 デフォルト
enable-at 有効とするcron時間。 cronスタイル なし
disable-at 無効とするcron時間。 cronスタイル なし

設定例

<health:Restart>
  <health:IfCron>
    <enable-at>0 0 * * *</enable-at>
    <disable-at>5 0 * * *</disable-at>
  </health:IfCron>
</health:Restart>

<health:IfExpr>

JSP EL式の評価に基づいてマッチします。式は、システムプロパティ、コンフィグプロパティ、およびJMX MBeanの属性への参照を含めることができます。

属性

属性名 説明 デフォルト
test JSP EL式。 EL式 なし

設定例

<health:Restart>
  <health:IfExpr>
    <test>${mbean('java.lang:type=Threading').ThreadCount > 100}</test>
  </health:IfExpr>
</health:Restart>

<health:IfNotRecent>

前回の実行後からの時間の長さに応じてマッチします。これは頻繁な実行が必要のないアクションに便利です。

属性

属性名 説明 デフォルト
time 再びアクションを実行できるまでの時間。 期間 なし

設定例

<health:HttpStatusHealthCheck ee:Named="httpStatusCheck">
  <url>http://localhost:8080/test-ping.jsp</url>
</health:HttpStatusHealthCheck>

<health:DumpHeap>
  <health:IfHealthCritical healthCheck="${httpStatusCheck}"/>
  <health:IfNotRecent time='5m'/>
</health:DumpHeap>

<health:IfRechecked>

再チェックの必要回数が実行されている場合にマッチします。
再チェックはヘルスチェック固有の条件ではないので、HealthSystem のパラメータの recheck-max と一致した場合に、このプレディケートは一致します。

属性

なし

設定例

<health:Restart>
  <health:IfHealthFatal/>
  <health:IfRechecked/>
</health:Restart>

<health:IfUptime>

起動してからの時間の長さに応じてマッチします。

属性

属性名 説明 デフォルト
limit 起動後の時間。 期間 なし

設定例

<health:Restart>
  <health:IfUptime limit="12h"/>
</health:Restart>

組み合わせ条件

基本条件やヘルスチェック条件を組み合わせたり、これらの条件を使用して無効にすることができます。

<health:And>

全ての子のプレディケートがマッチしている場合にマッチします。

属性

なし

設定例

<health:Restart>
  <health:And>
    <health:IfHealthCritical health-check="${memoryTenuredHealthCheck}"/>
    <health:IfHealthCritical health-check="${memoryPermGenHealthCheck}"/>
  </health:And>
</health:Restart>

<health:Nand>

全ての子のプレディケートが失敗している場合にマッチします。

属性

なし

設定例

<health:Restart>
  <health:Nand>
    <health:IfHealthCritical health-check="${memoryTenuredHealthCheck}"/>
    <health:IfHealthCritical health-check="${memoryPermGenHealthCheck}"/>
  </health:Nand>
</health:Restart>

<health:Nor>

全ての子のプレディケートが一致しない場合にマッチします。

属性

なし

設定例

<health:Restart>
  <health:Nor>
    <health:IfHealthCritical health-check="${memoryTenuredHealthCheck}"/>
    <health:IfHealthCritical health-check="${memoryPermGenHealthCheck}"/>
  </health:Nor>
</health:Restart>

<health:Not>

子のプレディケートがfalseの場合にマッチします。

属性

なし

設定例

<health:Restart>
  <health:IfHealthCritical health-check="${memoryTenuredHealthCheck}"/>
  <health:Not>
    <health:IfCron>
      <enable-at>0 7 * * *</enable-at>
      <disable-at>0 11 * * *</disable-at>
    </health:IfCron>
  </health:Not>
</health:Restart>

<health:Or>

子のプレディケートのいずれかがマッチしている場合にマッチします。

属性

なし

設定例

<health:Restart>
  <health:Or>
    <health:IfHealthCritical health-check="${memoryTenuredHealthCheck}"/>
    <health:IfHealthCritical health-check="${memoryPermGenHealthCheck}"/>
  </health:Or>
</health:Restart>

ヘルスチェック条件

ヘルスチェック条件は、ヘルスチェックの結果をあらゆる側面から評価します。
パラメータ「health-check」で特定の名前が付けられたヘルスチェックを参照できます。パラメータが存在しない場合はResin全体のヘルスが集約されたものが参照されます。

<health:IfHealthOk>

ヘルスステータスが「OK」の場合にマッチします。

属性

属性名 説明 デフォルト
health-check 参照するヘルスチェック。 ヘルスチェック なし(無指定の場合はResin全体のヘルスを参照)
time 開始状態からの最少時間。 期間 なし

設定例

<health:Restart>
  <health:Not>
    <health:IfHealthOk health-check="${memoryTenuredHealthCheck}"/>
  </health:Not>
</health:Restart>

<health:IfHealthWarning>

ヘルスステータスが「WARNING」の場合にマッチします。

属性

属性名 説明 デフォルト
health-check 参照するヘルスチェック。 ヘルスチェック なし(無指定の場合はResin全体のヘルスを参照)
time 開始状態からの最少時間。 期間 なし

設定例

<health:Restart>
  <health:IfHealthWarning health-check="${memoryTenuredHealthCheck}"/>
</health:Restart>

<health:IfHealthCritical>

ヘルスステータスが「CRITICAL」の場合にマッチします。

属性

属性名 説明 デフォルト
health-check 参照するヘルスチェック。 ヘルスチェック なし(無指定の場合はResin全体のヘルスを参照)
time 開始状態からの最少時間。 期間 なし

設定例

<health:Restart>
  <health:IfHealthCritical health-check="${memoryTenuredHealthCheck}"/>
</health:Restart>

<health:IfHealthFatal>

ヘルスステータスが「FATAL」の場合にマッチします。

属性

属性名 説明 デフォルト
health-check 参照するヘルスチェック。 ヘルスチェック なし(無指定の場合はResin全体のヘルスを参照)
time 開始状態からの最少時間。 期間 なし

設定例

<health:Restart>
  <health:IfHealthFatal health-check="${memoryTenuredHealthCheck}"/>
</health:Restart>

<health:IfHealthUnknown>

ヘルスステータスが「UNKNOWN」の場合にマッチします。

属性

属性名 説明 デフォルト
health-check 参照するヘルスチェック。 ヘルスチェック なし(無指定の場合はResin全体のヘルスを参照)
time 開始状態からの最少時間。 期間 なし

設定例

<health:Restart>
  <health:IfHealthUnknown health-check="${memoryTenuredHealthCheck}"/>
</health:Restart>

<health:IfMessage>

ヘルスチェック結果のメッセージが正規表現に一致する場合にマッチします。

属性

属性名 説明 デフォルト
health-check 参照するヘルスチェック。 ヘルスチェック なし(無指定の場合はResin全体のヘルスを参照)
time 開始状態からの最少時間。 期間 なし
regexp ヘルスメッセージにマッチする正規表現。 java.util.regex.Patternにコンパイルされる正規表現 なし

設定例

<health:Restart>
  <health:IfHealthCritical/>
  <health:IfMessage health-check="${httpStatusCheck}" regexp="Not Found"/>
</health:Restart>

<health:IfRecovered>

リカバリされた際にマッチします。リカバリとは「FATAL」、「CRITICAL」、「WARNING」のいずれか「OK」への状態変更を指します。

属性

属性名 説明 デフォルト
health-check 参照するヘルスチェック。 ヘルスチェック なし(無指定の場合はResin全体のヘルスを参照)

設定例

<health:SendMail>
  <to>admin@yourdomain</to>
  <health:IfRecovered health-check="${cpuHealthCheck}"/>
</health:SendMail>

ライフサイクル条件

ライフサイクル条件はResinの状態変化を評価します。Resinのライフサイクル状態が変更された時に実行するべきアクションを制御します。

<health:OnStart>

Resinが開始しようとしている場合にマッチします。

属性

なし

設定例

<health:SendMail>
  <to>admin@yourdomain.com</to>
  <health:OnStart/>
</health:SendMail>

<health:OnStop>

Resinが停止された場合にマッチします。

属性

なし

設定例

<health:SendMail>
  <to>admin@yourdomain.com</to>
  <health:OnStop/>
</health:SendMail>

<health:OnAbnormalStop>

Resinが正常ではない終了コードを返して停止している場合にマッチします。

属性

なし

設定例

<health:PdfReport snapshot='true'>
  <health:OnAbnormalStop/>
</health:PdfReport>

<health:OnRestart>

Resinがwatchdogによって再起動された場合にマッチします。これは一般的にエラー状態で発生します。OnStartはこのイベントの間で発生します。

属性

なし

設定例

<health:SendMail>
  <to>admin@yourdomain.com</to>
  <health:OnRestart/>
</health:SendMail>