モジュール 12ターム4 · 本番運用11 ポスター項目
オブザーバビリティと SRE
ログインすると、進捗を複数のデバイスで保存できます。ログインするまでは、このブラウザに保存されます。
なぜ重要なのか
アラートより先に顧客から「壊れている」と知らされるなら、それはモニタリングではなく、顧客に QA をさせているだけです。オブザーバビリティは、AI が書いたコードをデバッグ可能にするものでもあります。自分で書いていないコードなら、システム自身に何をしているかを語ってもらう必要があります。
学習目標
- OpenTelemetry で構造化ログ、メトリクス、トレースを出力できる。
- ユーザーの満足度を反映した SLI と SLO を定義し、エラーバジェットを運用できる。
- 対応可能で、アラート疲れを起こさないアラートを書ける。
- 4 つのゴールデンシグナルのダッシュボードを構築できる。
- LLM とエージェントの振る舞い、コスト、品質を観測できる。
レッスン
12.1 3 つのシグナル(58〜61, 66)
- ログ(59): 構造化された JSON で、1 行に 1 イベント。
request_id、user_id/tenant_id(PII ではないもの)、level、event、処理時間を含めます。シークレット、トークン、パスワード、カード番号の全桁、生の個人データは決してログに出しません。保持期間を設定します。 - メトリクス(61): 安価な数値の時系列データです。サービスには RED(Rate、Errors、Duration)、リソースには USE(Utilisation、Saturation、Errors)を使います。
- トレース(60): 1 つのリクエストを、サービス、キュー、LLM 呼び出しをまたいで、スパンとタイミング付きで追跡します。トレースコンテキストはキューと webhook を通して伝播させます。
- モニタリング(58) は既知の障害モードを監視します。オブザーバビリティ(66) は、新しいコードをリリースせずに、稼働中のシステムに新しい問いを投げかけられるようにします。両方が必要です。
- ベンダーロックインを避けるため OpenTelemetry を使います。
12.2 4 つのゴールデンシグナル
レイテンシ、トラフィック、エラー、飽和度(Google の SRE プラクティスより)。サービスごとにダッシュボードを 1 つ用意し、ページの最上部に置きます。
12.3 SLI、SLO、エラーバジェット(63, 64, 65)
- SLI(64): 良いイベントの割合を計測したものです:「500 ms 未満で正常に処理されたリクエスト / 全リクエスト」。
- SLO(63): 一定期間における SLI の目標値です:「28 日間で 99.9%」。
- エラーバジェット(65): 許容される失敗の量です。28 日間の 0.1% は約 40 分です。バジェットが残っていれば、どんどんリリースしてかまいません。使い切ったら、ペースを落として信頼性を改善します。
- SLO はサーバー単位ではなく、ユーザージャーニー単位(ログイン、チェックアウト、AI の回答)で決めます。100% は誤った目標です。コストが見合わず、あらゆる変更を止めてしまいます。
12.4 アラート(62)
- 人を呼び出すのは、CPU のスパイクのたびではなく、ユーザーが今まさに、あるいはまもなく困る とき(症状ベース)だけにします。
- SLO に対する burn-rate アラート を優先します(速い消費はページング、遅い消費はチケット)。
- すべてのアラートを runbook にリンクします: 何を意味するか、どう確認するか、どう緩和するか。
- ビジネスアラートも設定します: 1 時間サインアップがゼロ、決済成功率の低下、LLM の利用額の急増、DLQ の増加、cron のハートビートの欠落。
- アラートのノイズを毎月見直し、誰も対応しないアラートは削除します。
12.5 ヘルスチェックとプローブ(56, 57)
07 · レジリエンスパターン を参照してください。複数リージョンから実際のジャーニーを確認する外部の合成監視を追加します。
12.6 LLM とエージェントのオブザーバビリティ
すべてのモデル呼び出しをトレースします: モデル、バージョン、プロンプトのバージョン、入出力トークン数、コスト、レイテンシ(最初のトークンまでの時間と合計)、ツール呼び出し、検索したソース、ユーザーフィードバック、eval のスコア。ツール: Langfuse、Helicone、Braintrust、または OpenTelemetry GenAI の規約に沿って既存のバックエンドへ送る方法。モデルやプロンプトの変更後は、品質のドリフトに注意します。
12.7 エラートラッキングと RUM
ソースマップとリリースタグ付きの例外トラッキング(Sentry または同等のツール)。Core Web Vitals のリアルユーザーモニタリング。
Lab 12: ユーザーより先に気づく
- アプリに OpenTelemetry(ログ、メトリクス、トレース)をエンドツーエンドで組み込みます。キューの経由と LLM 呼び出しも含めます。
- 重要なジャーニーについて 3 つの SLO を定義し、ダッシュボードと burn-rate アラートを構築します。
- アラートごとに runbook を書きます。
- staging で何かを壊し、壊れてからアラートが出るまでの時間を計測します。
- LLM のコストと品質のパネルを作ります。
完了の定義
AI プロンプトパック
- 「このサービスに OpenTelemetry の計装を追加してください。キューを通してコンテキストを伝播させてください。すべての LLM 呼び出しとツール呼び出しを、トークン数とコストの属性付きのスパンで囲んでください。」
- 「ログ出力の呼び出しを監査し、シークレット、トークン、個人データを出力する可能性があるものにフラグを付けてください。」