Claude Code を組織で運用する際、「何を監視すれば良いか」「どの時点でアラートを出すべきか」という判断に迷う場面は少なくありません。私がこれまで複数の企業で SRE チームと導入を進めてきた中でも、最初は開発者個人のツールとして扱い、可観測性基盤への組み込みが後回しになるケースをたびたび目にしてきました。しかし Claude Code が日常的なコーディング業務の一部となり、チーム全体の開発速度やコスト構造に影響を与えるようになると、メトリクス・ログ・トレースの三本柱を統合的に監視する体制が欠かせません。本記事では、可観測性基盤の設計原則から具体的なダッシュボード構成、アラート設計のしきい値設定までを実務的に解説します。
本記事の結論: Claude Code の可観測性は、メトリクス(ゴールデンシグナル)・ログ(構造化 JSON)・トレース(リクエスト単位の文脈)を OpenTelemetry で統合し、P95 レイテンシと成功率を主要 SLI として監視することで、異常の早期発見とコスト最適化を両立できる
なぜ Claude Code に可観測性基盤が必要か
Claude Code は API 経由で外部サービスと連携するため、ネットワーク遅延・レート制限・モデル応答時間の変動が開発者の待機時間に直結します。可観測性が不足していると、以下のような課題が顕在化します。
- パフォーマンス劣化の原因特定が遅れる: 開発者が「遅い」と感じても、ネットワークの問題なのか、リクエストペイロードが大きすぎるのか、モデル側の混雑なのかを切り分けられない
- コスト超過に気づくのが月次請求後: トークン消費量の急増をリアルタイムで検知できず、予算オーバーが発覚するのが請求書到着時になる
- 障害時のエスカレーションパスが不明確: アラートが鳴っても、誰がどの順序で対応するか定義されておらず、復旧に時間がかかる
可観測性基盤は、これらの問題を「データが見える」「異常を自動検知できる」「対応者が明確」の 3 層で解決します。
三本柱の設計原則
可観測性の三本柱(メトリクス・ログ・トレース)は、それぞれ異なる視点で Claude Code の健全性を評価します。
メトリクス: 時系列の集約指標
メトリクスは、一定期間内の 集約値 を数値として記録します。多くの組織では以下の観点を主要指標とする傾向があります。
- レイテンシ: P50 / P95 / P99。条件によっては P95 を主要 SLI とする組織が多い
- 成功率: HTTP 200 系レスポンスの割合。95% 以上を目標とするケースが一般的
- スループット: 分あたりのリクエスト数(RPM)。急激な増加はトークン消費の兆候
- トークン消費量: プロンプト+補完トークンの合算。予算管理に直結
ログ: 事象の詳細記録
ログは 個別の事象 を構造化 JSON で記録し、後から検索・分析可能にします。
- 構造化必須:
timestamp,user_id,request_id,model,tokens,latency_ms,status_codeなどのフィールドを統一 - PII 除外: ユーザーのプロンプト内容は記録せず、メタデータのみ保持(監査ログ との使い分けが重要)
- 検索性: Elasticsearch や Splunk などで時刻範囲・ユーザー・エラーコード別に絞り込めるようにする
トレース: リクエスト単位の文脈
トレースは、単一のリクエストが システム全体をどう流れたか を可視化します。
- 分散トレーシング: VS Code 拡張 → プロキシ → Claude API と複数コンポーネントをまたぐ場合、各区間のレイテンシを分離
- 因果関係の特定: 遅いリクエストがどのステップで遅延したかをスパン単位で把握
- サンプリング: 全リクエストを記録すると負荷が大きいため、エラー時は全量、正常時は 1〜10% をサンプリングする組織が多い
OpenTelemetry による標準化
可観測性データの収集には、OpenTelemetry(OTel)という標準プロトコルが広く採用されています。
実装の流れ
1. SDK の導入 — Python や Node.js の OpenTelemetry SDK をプロキシ層に組み込む。公式リポジトリ(github.com/open-telemetry)からインストール
2. 計装(Instrumentation) — HTTP リクエストの送受信時にスパンを開始・終了し、属性(http.method, http.status_code, claude.model, claude.tokens)を付与
3. エクスポーター設定 — メトリクスは Prometheus 形式で /metrics エンドポイント公開、ログは Fluentd や Logstash 経由で転送、トレースは Jaeger や Zipkin へ送信
4. バックエンド統合 — Grafana で Prometheus データソースと Loki(ログ)、Tempo(トレース)を同一ダッシュボードに統合
メリット
- ベンダーロックイン回避: Datadog から Grafana Cloud への移行時も計装コードを変更せずにエクスポーターだけ差し替え
- 一貫性: メトリクス・ログ・トレースの
request_idを共通キーとして紐付け、クリック 1 つでログからトレースへジャンプ可能 - コミュニティ資産: 主要な APM ベンダーが OTel をサポートしており、将来的な拡張性が高い
ダッシュボード構成例: ゴールデンシグナル
Google SRE の「ゴールデンシグナル」(Latency / Traffic / Errors / Saturation)を Claude Code に適用すると、以下のパネル構成が有効です。
| シグナル | メトリクス名 | 表示形式 | 目安のしきい値 |
|---|---|---|---|
| Latency | claude_request_duration_seconds (P95) |
時系列グラフ | 3秒以上で警告 |
| Traffic | claude_requests_per_minute |
カウンター | 急増時に通知(前週比+50%など) |
| Errors | claude_requests_total{status="error"} |
積み上げ面グラフ | 成功率95%未満で警告 |
| Saturation | claude_tokens_consumed_total |
ゲージ | 月次予算の80%到達で警告 |
画面レイアウトの例
┌─────────────────────────────────────────────┐
│ P95 Latency (過去24h) │ 成功率 (%)│
├─────────────────────────────────────────────┤
│ RPM (Requests Per Minute) │
├─────────────────────────────────────────────┤
│ トークン消費量 (日次累積) │
├─────────────────────────────────────────────┤
│ エラー内訳 (rate_limit / timeout / other) │
└─────────────────────────────────────────────┘
各パネルには ドリルダウンリンク を設定し、異常値をクリックするとログクエリや Trace ID へジャンプできるようにします。詳細な利用状況の分析は 使用状況分析 も参照してください。
異常検知のしきい値設定方法
しきい値は組織の要件により異なりますが、以下のステップで段階的に調整する方法が現実的です。
1. ベースライン計測 — 2〜4週間の通常運用時のデータを収集し、P50 / P95 / P99 の分布を把握
2. 初期しきい値の仮設定 — P95 レイテンシがベースラインの 1.5〜2倍、成功率が 95% を下回った場合に警告アラート
3. 誤検知の調整 — 週次でアラート履歴をレビューし、誤検知が多ければしきい値を緩和、見逃しが多ければ厳格化
4. 複合条件の追加 — 単一メトリクスだけでなく「P95 が 5秒以上 かつ エラー率 10% 以上」のように AND 条件で精度向上
条件によって異なる例
- 本番環境: P95 が 3秒以上で Slack 通知、5秒以上で PagerDuty ページ
- 開発環境: P95 が 10秒以上で Slack のみ(ページ不要)
- 夜間バッチ: レイテンシは許容するがエラー率 5% 以上で即通知
注意: しきい値を厳しくしすぎると「常にアラートが鳴る」状態となり、オンコール担当者が疲弊します。初期は「明らかな異常のみ」を検知する設定から始め、運用成熟度に応じて段階的に拡充してください。
アラート設計とエスカレーションパス
アラートは「誰が」「いつ」「どう対応するか」まで定義して初めて機能します。
アラートレベルの分類
| レベル | 条件例 | 通知先 | 応答時間 |
|---|---|---|---|
| Info | トークン消費 80% 到達 | Slack #claude-ops | 翌営業日 |
| Warning | P95 が 5秒以上、3分継続 | Slack + Email | 30分以内 |
| Critical | 成功率 90% 未満、5分継続 | PagerDuty → オンコール担当 | 15分以内 |
エスカレーションパスの例
1次対応(5分以内) — プラットフォームチームのオンコール担当が PagerDuty で受信。ダッシュボードでメトリクス確認
2次対応(15分以内に未解決) — SRE リードへエスカレート。ログとトレースから根本原因を調査
3次対応(30分以内に未解決) — DevOps マネージャーと CTO へエスカレート。外部ベンダー(Anthropic)へのサポートチケット起票を判断
オンコール運用全般の設計は オンコール運用 で詳述しています。
アラート疲れ対策
- サイレント期間(Mute): 定期メンテナンス中は一時的にアラート停止
- アノマリー検知: 機械学習ベースの異常検知(Datadog Anomaly Monitor など)で動的にしきい値を調整
- アラートのグルーピング: 同一 incident で複数のメトリクスが同時異常を示した場合、1つの通知にまとめる
ログとトレースの相関分析
メトリクスで異常を検知した後、ログとトレース を横断的に分析することで根本原因を特定します。
分析シナリオ例
- P95 レイテンシが急上昇 — Grafana でメトリクスのスパイクを確認
- 該当時刻のログを抽出 — Loki で
latency_ms > 5000のログ一覧を表示 - request_id からトレースへジャンプ — Tempo で該当リクエストのスパン詳細を確認し、「Claude API 呼び出し」のスパンが 4.8秒を占めていることを特定
- 根本原因の仮説 — モデル側の混雑またはリクエストペイロードが大きすぎる可能性。ペイロードサイズのメトリクスを追加監視対象に
相関キーの設計
すべてのメトリクス・ログ・トレースに共通の request_id を付与し、以下のフィールドを統一します。
timestamp: ISO 8601 形式(UTC)user_id: 匿名化 IDmodel: 使用モデル名(例:claude-3-5-sonnet-20241022)tokens: プロンプト+補完トークン合算latency_ms: リクエスト送信〜レスポンス受信までのミリ秒
トークン消費の予測とキャパシティプランニング
可観測性基盤は、過去のトレンドから 将来のトークン消費量 を予測し、予算超過を未然に防ぐ役割も担います。
予測手法の例
- 線形回帰: 過去 4週間の日次トークン消費量から週次増加率を算出し、月次予算到達日を予測
- 季節性補正: 月末や四半期末にトークン消費が増える傾向がある場合、移動平均で補正
- 異常値除外: 実験的な大量リクエストが単発で発生した日はデータから除外
参考: Prometheus の predict_linear() 関数を使うと、過去の時系列データから数日後の値を予測できます。予測値が予算の 90% に達する日が 7日以内なら早期警告を出す、といった運用が可能です。
まとめ
Claude Code の可観測性基盤は、メトリクス・ログ・トレースを OpenTelemetry で統合し、ゴールデンシグナルを主軸としたダッシュボードで監視することで、異常の早期発見とコスト最適化を両立できます。多くの組織では P95 レイテンシと成功率を主要 SLI とし、しきい値を段階的に調整しながら運用成熟度を高めています。アラート設計ではエスカレーションパスを明確化し、アラート疲れを防ぐためのサイレント期間やアノマリー検知を活用することが重要です。
デジライズ では、Claude Code の可観測性基盤設計から構築・運用まで一貫して支援しています。OpenTelemetry のベストプラクティス共有やダッシュボードテンプレート提供、オンコールプレイブック策定など、組織の成熟度に応じた伴走型コンサルティングを提供しています。「どのメトリクスを監視すべきか分からない」「アラートが多すぎて対応しきれない」といった課題をお持ちの場合は、無料相談 でまずは現状をお聞かせください。実運用で蓄積したノウハウをもとに、具体的な改善提案をいたします。
関連記事
デジライズの実績は社内集計値です。特に明記のない数値付き事例は、匿名加工された実例をもとにしたモデルケースです。導入効果は企業や業務によって異なります。各サービスの料金・機能・提供条件は記事の公開・更新時点の情報であり、変更されるため、最新情報はAnthropic公式サイトなどの一次情報をご確認ください。



