0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Sentryのアーカイブ機能とエスカレーションアルゴリズムを完全理解する

Posted at

はじめに

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のアーカイブ機能とエスカレーション機能を使いこなして、効率的なエラー監視を実現しましょう!

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?