メトリクスとアラート設計
このドキュメントの目的
メトリクスの種類と適切な選択方法を理解し、REDメソッド・USEメソッドを活用した実践的なメトリクス設計ができるようになることが目標です。また、アラート疲れを防ぐ効果的なアラート設計の原則を学びます。
IDサービスを題材にした具体例を使用しますが、設計原則自体はあらゆるSaaSに共通して適用できます。
メトリクスの種類
4つの基本メトリクスタイプ
メトリクスタイプの概要:
Counter(カウンター) Gauge(ゲージ)
┌──────────────────┐ ┌──────────────────┐
│ 累積値(増加のみ)│ │ 現在値(増減あり)│
│ │ │ │
│ ▲ │ │ ╱╲ │
│ │ ╱ │ │ ╱ ╲ ╱╲ │
│ │ ╱ │ │ ╱ ╲╱ ╲ │
│ │╱ │ │ ╱ ╲ │
│ └──────▶ │ │ └──────▶ │
│ 例: リクエスト総数│ │ 例: 接続数 │
└──────────────────┘ └──────────────────┘
Histogram(ヒストグラム) Summary(サマリー)
┌──────────────────┐ ┌──────────────────┐
│ 値の分布 │ │ 値の分位数 │
│ │ │ │
│ █ │ │ p50: 120ms │
│ █ █ │ │ p90: 250ms │
│ █ █ █ │ │ p99: 890ms │
│ █ █ █ █ █ │ │ p999: 2100ms │
│ └──────▶ │ │ │
│ 例: レイテンシ分布│ │ 例: レイテンシ要約│
└──────────────────┘ └──────────────────┘
メトリクスタイプの選択基準
| タイプ | 特徴 | 使い所 | IDサービスでの例 |
|---|---|---|---|
| Counter | 単調増加、リセットはプロセス再起動時のみ | イベント回数の計測 | auth_requests_total, token_issued_total |
| Gauge | 任意の値(増減可能) | 現在の状態の計測 | active_sessions, db_connection_pool_size |
| Histogram | 値をバケットに分類、分布を記録 | レイテンシ・サイズの分布 | auth_request_duration_seconds |
| Summary | クライアント側で分位数を計算 | 正確な分位数が必要な場合 | token_validation_duration_seconds |
Histogram vs Summary
| 観点 | Histogram | Summary |
|---|---|---|
| 集約可能性 | 複数インスタンスの集約が可能 | インスタンス間の集約が不正確 |
| パフォーマンス | バケット数に比例するメモリ使用 | 分位数計算のCPUコスト |
| 柔軟性 | バケット境界を事前に定義する必要 | 分位数をクエリ時に変更可能 |
| 推奨 | ほとんどの場合はHistogramを推奨 | 正確な分位数が必要な特殊ケース |