はじめに
Sentryでエラー監視をしていると、「このエラー、ノイズだから無視したいけど、本当に悪化したら教えて欲しい...」という状況、ありますよね?
そんな時に便利なのがアーカイブ機能とエスカレーション機能です。この記事では、Sentryの公式ドキュメントを元に、これらの機能の仕組みを詳しく解説します。
Sentryの問題ステータス一覧
まず、Sentryの問題には以下のステータスがあります:
| ステータス | 条件 | 検索用語 |
|---|---|---|
| New | 作成から7日以内の問題 | is:new |
| Ongoing | 作成から7日以上、または手動でレビュー済みにした問題 | is:ongoing |
| Escalating | 予測されたイベント量を超えた問題 | - |
| Archived | 手動でアーカイブした問題 | - |
| Resolved | 手動で解決済みにした問題 | - |
アーカイブ機能とは?
基本的な動作
アーカイブ機能は、問題をissue streamから移動させ、問題が悪化するまでアラートを一時停止する機能です。
通常の問題
↓
アーカイブ
↓
「Unresolved」タブ → 「Archived」タブへ移動
アラート停止 🔕
どんな時に使う?
- ノイズの多い問題
- 優先度の低い問題
- チームに関係のない問題
アーカイブのオプション
問題をアーカイブする際、以下の条件を選択できます:
| オプション | 説明 | エスカレーション |
|---|---|---|
| Until escalating(デフォルト) | エスカレーション状態になるまで | ✅ あり |
| Forever | 永久にアーカイブ | ❌ なし |
| 期間指定 | 例: 7日間 | ✅ 期間中は可能 |
| 回数指定 | 例: 100回発生するまで | ✅ あり |
| ユーザー数指定 | 例: 10人が影響を受けるまで | ✅ あり |
Foreverアーカイブの注意点
重要: Foreverでアーカイブした場合:
- イベントは記録され続ける(データは残る)
- エスカレーション条件を満たしても、絶対にEscalation状態にならない
- 手動でアーカイブ解除すれば、再び監視対象になる
エスカレーション機能とは?
エスカレーション機能は、アーカイブされた問題が急激に増加した場合、自動的に警告する仕組みです。
アーカイブ中(アラート停止)
↓
イベント数が急増
↓
エスカレーション条件を満たす
↓
「Escalating」ステータスに変更
「Unresolved」タブに戻る
↓
アラートが再開される 🔔
エスカレーションアルゴリズムの詳細
Sentryは過去のデータを分析して、問題ごとに閾値を自動計算します。
問題の年齢で計算方法が変わる
ケース1: 新しい問題(7日未満)
過去のデータが少ないため、シンプルな計算式を使います。
制限値 = 過去の最大時間あたり発生数 × 10
具体例: ログイン失敗エラー
【過去のデータ】
月曜 10:00 - 20回
月曜 11:00 - 35回
月曜 12:00 - 50回 ← 最大
月曜 13:00 - 30回
制限値 = 50 × 10 = 500回/時間
【判定】
火曜 15:00 - 480回 → セーフ
水曜 10:00 - 520回 → Escalation! 🚨
ケース2: 古い問題(7日以上)
過去1週間のデータを分析して、2種類の制限値を計算し、大きい方を採用します。
制限値 = max(スパイク制限, バースト制限)
スパイク制限(安定型エラー向け)
毎日コンスタントに発生するエラーに適用されます。
スパイク制限 = 加重平均 + (変動係数 × 平均)
具体例: API応答遅延エラー
【過去1週間のデータ】
毎日だいたい同じペース
平均: 20回/時間
標準偏差: 5回
スパイク制限: 約100回/時間
【判定】
今週月曜 14:00 - 160回 → Escalation! 🚨
バースト制限(急増型エラー向け)
cronジョブやバッチ処理など、定期的に急増するエラーに適用されます。
バースト制限 = 最大時間あたり量 × 係数(変動係数による調整)
具体例: バッチ処理エラー
【過去1週間のデータ】
普段: 5回/時間
深夜2時(バッチ処理時): 1,000回/時間
バースト制限: 約2,000-5,000回/時間
【判定】
今週火曜 02:00 - 1,200回 → セーフ(普段のバッチ処理)
今週水曜 02:00 - 6,000回 → Escalation! 🚨
実践的な使い方
パターン1: ノイズの多いエラーを一時的に無視
状況: テストユーザーが原因のエラーが毎日50回発生
対応:
1. 問題をアーカイブ(Until escalating)
2. 通常のアラートは停止
3. 急増したら自動で通知が来る
パターン2: 既知の問題を完全に無視
状況: サードパーティのAPIエラーで対応不可能
対応:
1. 問題をForeverでアーカイブ
2. どんなに増えても通知が来ない
3. データは記録され続ける
パターン3: 期間限定で無視
状況: メンテナンス期間中に発生するエラー
対応:
1. 問題を「7日間」でアーカイブ
2. 7日後に自動的に監視再開
3. メンテナンス中のノイズを回避
まとめ
- アーカイブ機能は、ノイズの多い問題を一時的に無視しつつ、悪化したら通知してくれる便利な機能
- エスカレーション機能は、過去のデータを分析して、各問題に最適な閾値を自動計算してくれる
- Forever アーカイブを使えば、完全に無視することも可能
- 問題のパターン(安定型 vs バースト型)に応じて、適切な異常検知をしてくれる
Sentryのアーカイブ機能とエスカレーション機能を使いこなして、効率的なエラー監視を実現しましょう!