ヘルスチェック

HEALTH CHECK
読み: ヘルスチェック

読み: ヘルスチェック

ヘルスチェックとは異常の早期検知

ヘルスチェックとは、システムやサービスが正常に動作しているかを定期的に確認する仕組みのこと。APIエンドポイントに対してリクエストを送り、応答が返ってくるかどうかで生死を判定する。クラウド環境やコンテナ基盤では標準的な運用手法として定着している。

かんたんに言うと

病院の定期健診と同じ発想である。症状が出てから病院に駆け込むのではなく、定期的に検査して異常を早期に発見する。システムの世界でも、障害が表面化する前に自動で状態を確認し続けるのがヘルスチェックの役割になる。

HTTPリクエストでシステムの生死を判定するヘルスチェックの基本

ヘルスチェックの最もシンプルな形は、特定のURLに対してHTTPリクエストを定期的に送信し、ステータスコード200が返ってくるかを確認するというものである。返ってこなければ異常、返ってきても応答時間が閾値を超えていれば警告を出す。
Webサービスであれば/healthや/statusといった専用のエンドポイントを設けることが多い。このエンドポイントはデータベースへの接続確認、外部APIとの疎通確認、ディスク容量のチェックなどを一括で実行し、結果をJSON形式で返す。
ただし、ヘルスチェック自体がシステムに負荷をかけすぎると本末転倒になる。軽量な確認に留めるか、深い検査は間隔を長くするか、設計のさじ加減が求められる。

KubernetesのLivenessとReadinessという2つの視点

コンテナオーケストレーションの標準であるKubernetesには、ヘルスチェックの概念が最初から組み込まれている。Liveness ProbeとReadiness Probeの2種類がある。
Liveness Probeは「このコンテナはまだ生きているか」を判定する。応答がなければKubernetesはコンテナを強制的に再起動する。デッドロックやメモリリークで応答不能になったプロセスを自動復旧させる仕組みである。
Readiness Probeは「このコンテナはリクエストを受け付ける準備ができているか」を判定する。起動直後のウォームアップ中や、依存サービスとの接続が未完了の状態ではトラフィックを流さない。
この2つを混同すると事故になる。Readinessの設定をLivenessに入れてしまい、起動に時間がかかるアプリが永遠に再起動ループに陥るという失敗は現場でよく見かける。

監視ツールとアラートの実際

ヘルスチェックの結果を人間が24時間監視するわけにはいかない。Datadog、New Relic、Mackerelといった監視ツールがこの役割を担う。異常を検知したらSlackやPagerDutyに通知を飛ばし、担当者を叩き起こす。
監視の粒度にも段階がある。単純なping監視で生死だけを見るレベルから、レスポンスタイムの推移を追って劣化傾向を先読みするレベルまで。後者はSRE(Site Reliability Engineering)の文脈でSLI/SLOと呼ばれる指標管理と密接に絡む。
とはいえ、監視を手厚くしても障害はゼロにはならない。重要なのは検知までの時間を短くし、復旧手順を自動化しておくことである。障害ゼロを目指すより、障害発生時に5分で復旧できる体制を作るほうが現実的な投資判断になる。

AI基盤における活用と落とし穴

LLMを組み込んだシステムでは、ヘルスチェックの設計がやや厄介になる。推論エンドポイントが「応答を返す」ことと「正しい応答を返す」ことは別の問題だからである。ステータスコード200で返ってきても、モデルがナンセンスな出力を繰り返していれば実質的にダウンしているのと同じになる。
GPU使用率やVRAMの空き容量を併せて監視する必要があるし、モデルのロードに失敗して空のレスポンスを返すケースも想定しなければならない。
オンプレミスでローカルLLMを運用する場合は特に注意が必要で、サーバーの物理的な温度監視まで含めた多層的なヘルスチェックが欠かせない。クラウドのマネージドサービスなら、この部分はプロバイダーが面倒を見てくれる。そこも含めた総コストで導入判断をすべきである。

当社の見解

当社はツール選定において実用性を第一方針にしている。カタログスペックやベンチマークスコアではなく、実務で1週間使い倒して初めて判断する。フレームワークを増やすほど管理コストが増える経験もした。フックを増やしすぎてAIが情報過多でパニックになったこともある。足し算だけでなく、引き算の判断が選定の質を決める。検証せずに導入したツールは、ほぼ例外なく3か月以内に使わなくなった。

同じ失敗を二度としないAIエージェント

今のAIは、聞けば何でも答えてくれます。
でも、セッションが切れた瞬間に前回の失敗を忘れます。

当社が開発しているAIは、過去の経緯を念頭に置いて、
聞かれる前に「それは前回うまくいきませんでした」と声をかけます。
人間にも同じ失敗をさせず、AI自身も繰り返しません。

古参の社員が横にいるように、黙っていても気づいてくれる。
それが、当社が考える本当のAI社員です。

相談する