ヘルスチェック¶
ヘルスステータス¶
ヘルスチェックは実行されるたびにヘルスステータスとメッセージを生成します。
下記はヘルスステータスと一般的な意味の一覧です。
| 名前 | 順序 | 説明 | 
|---|---|---|
| UNKNOWN | 0 | ヘルスチェックがまだ実行されていない、または適切に実行されなかったことを表します。ステータスが他のいずれにも該当していない場合に設定されるステータスです。 | 
| OK | 1 | ヘルスチェックの結果、正常な状態であることを表します。これは何らかの回復を意味するものではありません。 | 
| WARNING | 2 | ヘルスチェックの結果、警告のしきい値に到達した項目が存在する、または重大な状態であることを表します。 | 
| CRITICAL | 3 | ヘルスチェックの結果、重大な状態が発生していることを表します。結果を確認し、何らかの対応を行う必要があります。 | 
| FATAL | 4 | ヘルスチェックは致命的な状態であることを表します。デフォルトの設定では、ヘルスチェックの結果で1つでもFATALを返却すると、Resinの再起動が行われます。 | 
システム チェック¶
<health:ConnectionPoolHealthCheck>¶
<health:ConnectionPoolHealthCheck>では、Resinのデータベースコネクションプールの状態を監視します。
属性¶
| 属性名 | 説明 | 型 | デフォルト | 
|---|---|---|---|
| enabled | チェックの有無 | boolean | true | 
状態¶
| ヘルスステータス | 状態 | 
|---|---|
| WARNING | resin-web 設定 の <max-connections> を超過した場合。 | 
| CRITICAL | resin-web 設定 の <max-overflow-connections> を超過した場合。 | 
設定例¶
<health:ConnectionPoolHealthCheck/>
<health:CpuHealthCheck>¶
<health:CpuHealthCheck>では、CPU使用率を監視します。マルチコアマシンでは、各CPUを個別に監視します。
属性¶
| 属性名 | 説明 | 型 | デフォルト | 
|---|---|---|---|
| enabled | チェックの有無 | boolean | true | 
| warning-threshold | ヘルスステータス「WARNING」のしきい値 | int(パーセンテージ 0-100) | 95 | 
| critical-threshold | ヘルスステータス「CRITICAL」のしきい値 | int(パーセンテージ 0-100) | 200(無効) | 
状態¶
| ヘルスステータス | 状態 | 
|---|---|
| WARNING | CPUのどれかが warning-threshold を超過した場合。 | 
| CRITICAL | CPUのどれかが critical-threshold を超過した場合。 | 
設定例¶
<health:CpuHealthCheck>
  <warning-threshold>95</warning-threshold>
  <critical-threshold>99</critical-threshold>
</health:CpuHealthCheck>
<health:HealthSystemHealthCheck>¶
<health:HealthSystemHealthCheck>では、ヘルスシステム自体を監視します。
このヘルスチェック項目は、独立したスレッドを使用してヘルスチェックがフリーズしていないか、または時間がかかりすぎていないかを監視します。
属性¶
| 属性名 | 説明 | 型 | デフォルト | 
|---|---|---|---|
| enabled | チェックの有無 | boolean | true | 
| thread-check-period | 独立したスレッドの確認頻度 | 期間 | 1分(1m) | 
| freeze-timeout | ヘルスシステムがフリーズし、ヘルスチェックが行えない状態と判断するまでの最大時間 | 期間 | 15分(15m) | 
状態¶
| ヘルスステータス | 状態 | 
|---|---|
| FATAL | Resin 4.0.43以前の場合 
ヘルスチェックが freeze-timeout の期間内に行われなかった場合。 
 | 
| FATAL | Resin 4.0.43以前の場合 
ヘルスチェックが許容される期間内に完了しなかった場合。期間は<health:HealthSystem> の startup-delay 、 period 、 recheck-period から算出されます。 
 | 
| CRITICAL | Resin 4.0.44以降の場合 
ヘルスチェックが freeze-timeout の期間内に行われなかった場合。 
 | 
| CRITICAL | Resin 4.0.44以降の場合 
ヘルスチェックが許容される期間内に完了しなかった場合。期間は<health:HealthSystem> の startup-delay 、 period 、 recheck-period から算出されます。 
 | 
設定例¶
<health:HealthSystemHealthCheck>
  <thread-check-period>1m</thread-check-period>
  <freeze-timeout>15m</freeze-timeout>
</health:HealthSystemHealthCheck>
<health:HeartbeatHealthCheck>¶
<health:HeartbeatHealthCheck>では、クラスタの他のメンバーからのハートビートを監視します。
属性¶
| 属性名 | 説明 | 型 | デフォルト | 
|---|---|---|---|
| enabled | チェックの有無 | boolean | true | 
状態¶
| ヘルスステータス | 状態 | 
|---|---|
| WARNING | クラスタの既知のメンバーからのハートビートを受信していない場合。 | 
| WARNING | クラスタの既知のメンバーからのハートビートを最後の受信から180秒以内に、受信していない場合。 | 
設定例¶
<health:HeartbeatHealthCheck/>
<health:JvmDeadlockHealthCheck>¶
<health:JvmDeadlockHealthCheck>では、JavaVMによってデッドロック状態であると認識されたスレッドを監視します。
属性¶
| 属性名 | 説明 | 型 | デフォルト | 
|---|---|---|---|
| enabled | チェックの有無 | boolean | true | 
状態¶
| ヘルスステータス | 状態 | 
|---|---|
| FATAL | デッドロックのスレッドが検出された場合。 | 
設定例¶
<health:JvmDeadlockHealthCheck/>
<health:LicenseHealthCheck>¶
<health:LicenseHealthCheck>では、Resin-Proのライセンスの期限が切れていないかを監視します。
状態¶
| ヘルスステータス | 状態 | 
|---|---|
| WARNING | ライセンスが warning-period の期間内に切れたと判断された場合。 | 
設定例¶
<health:LicenseHealthCheck>
  <warning-period>30D</warning-period>
</health:LicenseHealthCheck>
<health:MemoryPermGenHealthCheck>¶
<health:MemoryPermGenHealthCheck>では、JavaVMのPermGenメモリプールの空き領域を監視します。空き領域が不足した場合には、ガベージコレクションのリクエストをJavaVMに送信します。
コラム
このヘルスチェックは、JavaVMベンダの実装によっては使用できない場合があります。
JavaVMにPermGenメモリプールが存在しない場合は、ヘルスステータスが UNKNOWN で表示されます。
属性¶
| 属性名 | 説明 | 型 | デフォルト | 
|---|---|---|---|
| enabled | チェックの有無 | boolean | true | 
| memory-free-min | クリティカルな状況の空きメモリ最小量 | バイト値 | 1メガバイト(1m) | 
| free-warning | 警告のしきい値 
PermGenメモリプールの全領域(1.0)に対する空き領域の割合を設定します。 
たとえば、デフォルトの 0.01 の場合はPermGenメモリプールの空き領域が、PermGenメモリプールの全領域の 1% を下回ると警告を出力します。 
 | 
double(0.0 - 1.0) | 0.01 | 
| objectName | 明示的にメモリの統計を照会するMBean名を設定します。 未設定の場合、メモリ統計が可能なMBeanを検索します。 | javax.management.ObjectName | なし | 
状態¶
| ヘルスステータス | 状態 | 
|---|---|
| UNKNOWN | JavaVMにPermGenメモリプールが存在しない場合。または適切なMBeanが検索できなかった場合。 | 
| WARNING | メモリプールの空き領域が、ガベージコレクション実行後に free-warning の割合を下回っている場合。 | 
| CRITICAL | メモリプールの空き領域が、ガベージコレクション実行後に memory-free-min を下回っている場合。 | 
設定例¶
<health:MemoryPermGenHealthCheck>
  <memory-free-min>1m</memory-free-min>
  <free-warning>0.01</free-warning>
</health:MemoryPermGenHealthCheck>
<health:MemoryTenuredHealthCheck>¶
<health:MemoryTenuredHealthCheck>では、JavaVMのTenuredメモリプールの空き領域を監視します。空き領域が不足した場合には、ガベージコレクションのリクエストをJavaVMに送信します。
コラム
JavaVMにTenuredメモリプールが存在しない場合は、JavaVMでヒープメモリを監視します。
属性¶
| 属性名 | 説明 | 型 | デフォルト | 
|---|---|---|---|
| enabled | チェックの有無 | boolean | true | 
| memory-free-min | クリティカルな状況のメモリプールの空き領域の最小値 | バイト値 | 1メガバイト(1m) | 
| free-warning | 警告のしきい値 
Tenuredメモリプールの全領域(1.0)に対する空き領域の割合を設定します。 
たとえば、デフォルトの 0.01 の場合はTenuredメモリプールの空き領域が、Tenuredメモリプールの全領域の 1% を下回ると警告を出力します。 
 | 
double(0.0 - 1.0) | 0.01 | 
| objectName | 明示的にメモリの統計を照会するMBean名を設定します。 未設定の場合、メモリ統計が可能なMBeanを検索します。 | javax.management.ObjectName | なし | 
状態¶
| ヘルスステータス | 状態 | 
|---|---|
| UNKNOWN | JavaVMにTenuredメモリプールが存在しない場合。または適切なMBeanを決定できなかった場合。 | 
| WARNING | メモリプールの空き領域が、ガベージコレクション実行後に free-warning の割合を下回っている場合。 | 
| CRITICAL | メモリプールの空き領域が、ガベージコレクション実行後に memory-free-min を下回っている場合。 | 
設定例¶
<health:MemoryTenuredHealthCheck>
  <memory-free-min>1m</memory-free-min>
  <free-warning>0.01</free-warning>
</health:MemoryTenuredHealthCheck>
<health:TransactionHealthCheck>¶
<health:TransactionHealthCheck>では、Resinのトランザクションマネージャのコミット失敗を監視します。
属性¶
| 属性名 | 説明 | 型 | デフォルト | 
|---|---|---|---|
| enabled | チェックの有無 | boolean | true | 
状態¶
| ヘルスステータス | 状態 | 
|---|---|
| WARNING | 前回のチェック以降にコミット失敗があった場合。 | 
設定例¶
<health:TransactionHealthCheck/>
ユーザ チェック¶
<health:HttpStatusHealthCheck>¶
<health:HttpStatusHealthCheck>では、HTTP GETのリクエストを行い、返されたHTTPステータスコードをパターンと比較することにより、現在のResinインスタンス上の1つ以上のURLを監視します。
属性¶
| 属性名 | 説明 | 型 | デフォルト | 
|---|---|---|---|
| enabled | チェックの有無 | boolean | true | 
| ping-host | チェック対象のホスト(url が URI の場合に使用します) | String | なし | 
| ping-port | チェック対象のポート(url が URI の場合に使用します) | int | 80 | 
| url | チェック対象のURLまたはURI | String | なし | 
| socket-timeout | ソケットコネクションのタイムアウト時間 | 期間 | 10秒(10s) | 
| regexp | HTTPステータスコードの正規表現 | java.util.regex.Patternにコンパイルされる正規表現 | 200 | 
状態¶
| ヘルスステータス | 状態 | 
|---|---|
| CRITICAL | HTTP GET リクエストが接続に失敗した場合、または、HTTPステータスコードが正規表現と一致しなかった場合。 | 
設定例¶
<health:HttpStatusHealthCheck>
  <ping-host>localhost</ping-host>
  <ping-port>8080</ping-port>
  <url>/custom-test-1.jsp</url>
  <url>/custom-test-2.jsp</url>
  <socket-timeout>2s</socket-timeout>
  <regexp>^2|^3</regexp>
</health:HttpStatusHealthCheck>
<health:ExprHealthCheck>¶
<health:ExprHealthCheck>では、ユーザが指定したEL式の評価を行います。
属性¶
| 属性名 | 説明 | 型 | デフォルト | 
|---|---|---|---|
| enabled | チェックの有無 | boolean | true | 
| fatal-test | trueと評価された場合に、ステータスにFATALをセットするEL式。 | EL式 | なし | 
| critical-test | trueと評価された場合に、ステータスにCRITICALをセットするEL式。 | EL式 | なし | 
| warning-test | trueと評価された場合に、ステータスにWARNINGをセットするEL式。 | EL式 | なし | 
状態¶
| ヘルスステータス | 状態 | 
|---|---|
| FATAL | fatal-test がtrueと評価された場合。 | 
| CRITICAL | critical-test がtrueと評価された場合。 | 
| WARNING | warning-test がtrueと評価された場合。 | 
設定例¶
<health:ExprHealthCheck>
  <critical-test>${mbean('java.lang:type=Threading').ThreadCount > 100}</critical-test>
</health:ExprHealthCheck>