本文へ移動
Telemetry
インフラストラクチャー SQL レシピ

インシデントの検出と復旧時間を計算する

構造化されたインシデント ライフサイクル イベントの検出にかかる時間と回復にかかる時間を計算します。

上級者向けincident_lifecycle_eventsレビュー済み 2026-07-28テスト済み アパッチ DataFusion 45.2.0

レビュー者 Telemetry 製品チーム . SQL の互換性、イベント コントラクト、合成出力、および操作上の注意事項. 基準と所有権を確認する

質問に回答しました

各サービスがインシデントを検出して回復するまでにどれくらいの時間がかかりますか?

インシデントのタイムラインでは、顧客への影響、検出、解決を分離する必要があります。このクエリは、サービス レベルの検出と回復の平均を計算する前に、ライフサイクル イベントをインシデントごとに 1 つのレコードにピボットします。

イベント契約

クエリが期待するフィールド

フィールド種類なぜ存在するのか
timestamp_utcTimestampUTC でのライフサイクル イベント時間。
incident_idUtf8安定したインシデント識別子。
serviceUtf8主に影響を受けるサービス。
event_nameUtf8impact_started、検出または解決されました。
severityUtf8インシデントの重大度を確認しました。
environmentUtf8導入環境。
DataFusion SQL

クエリをコピーする

sql
WITH incident_times AS (
  SELECT
    incident_id,
    service,
    MIN(CASE WHEN event_name = 'impact_started' THEN timestamp_utc END)
      AS impact_started_at,
    MIN(CASE WHEN event_name = 'detected' THEN timestamp_utc END)
      AS detected_at,
    MAX(CASE WHEN event_name = 'resolved' THEN timestamp_utc END)
      AS resolved_at
  FROM incident_lifecycle_events
  WHERE timestamp_utc >= now() - INTERVAL '90 days'
    AND environment = 'production'
  GROUP BY incident_id, service
)
SELECT
  service,
  COUNT(*) AS incidents,
  AVG(date_part('epoch', detected_at - impact_started_at) / 60.0)
    AS average_detection_minutes,
  AVG(date_part('epoch', resolved_at - detected_at) / 60.0)
    AS average_recovery_minutes
FROM incident_times
WHERE impact_started_at IS NOT NULL
  AND detected_at IS NOT NULL
  AND resolved_at IS NOT NULL
GROUP BY service
ORDER BY average_recovery_minutes DESC, service;

この読み取り専用クエリは、空の型付きテーブルに対して計画され、実行されます。 アパッチ DataFusion 45.2.0。決定論的なサンプル出力は合成され、個別にレビューされます。フィールド タイプ、しきい値、ビジネス定義を独自のデータと照合して検証します。 テスト方法を読んでください。

クエリ結果

インシデントの検出と復旧にかかる時間

請求担当者は、観察された検出と回復の間隔が長くなります。

serviceincidentsaverage_detection_minutesaverage_recovery_minutes
billing-worker11560
checkout-api27.532.5

合成出力例。運用上の決定に使用する前に、独自のイベント スキーマとしきい値に対してクエリを実行します。

Incident detection and recovery time: Calculate Incident Detection and Recovery Time 結果例からの合成 average_recovery_minutes 値の静的チャート
決定論的な出力例のインデックス可能な SVG。記事、ランブック、または出典を明示した設計レビューのためにダウンロードしてください。

例を再現する

パブリックフィクスチャをダウンロードする

JSON バンドルには、型付きイベント コントラクトが含まれています。 reproducible 入力行、正確な SQL、予想される出力、レビューメモ、およびエンジンのバージョン。 CSV には、表示された結果が含まれます。

SQL の仕組み

  1. 1ライフサイクル イベントは、期間の計算前にインシデントごとに 1 行にピボットされます。
  2. 2検出対策は、検出の開始から検出までに影響を与えます。回復は検出から解決までを測定します。
  3. 3不完全なインシデントは完了期間の平均から除外されるため、個別に報告する必要があります。

決定すべきエッジケース

  • 回復が緩和、完全な復旧、またはインシデントの終了のいずれで終了するかを定義し、一貫して 1 つのルールを使用します。
  • 再開されたインシデントには、1 回の最大解決時間ではなく、複数の影響間隔が必要になる場合があります。
  • 平均値は例示的なものです。インシデント量が十分な場合は、中央値とパーセンタイルをレポートします。

推奨されるダッシュボード

  • バー: サービス別の平均検出時間と回復時間
  • 傾向: 月ごとの完了したインシデント期間
  • 表: 解決済みイベントが欠落している未解決のインシデント

アラートガイダンス

実際の影響については運用アラートを使用します。この結果を応答品質のレビューおよび傾向の指標として使用します。

アラート設定を読む

レシピを活用する

関連する機器とガイド

分析を続ける

実際のイベントで実行する

テーブルを作成し、フィールドを調整して、結果を保存します

無料で始めて、構造化されたイベントを送信し、クエリ結果をグラフ、共有ダッシュボード ウィジェット、またはアラート入力として使用します。

API キーを取得する