本文へ移動
Telemetry
構造化イベント SQL レシピ

ローリングベースラインによるエラー率のスパイクの検出

1 つの永続的なしきい値に依存するのではなく、時間ごとの API エラー率を 7 バケットのローリング平均と比較します。

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

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

質問に回答しました

最近のベースラインを大幅に上回っている時間単位のエラー率バケットはどれですか?

固定しきい値は、さまざまな通常レベルのサービスを見逃します。ローリングベースラインにより、生のレートとボリュームを維持しながら、相対的な変化が可視化されます。

イベント契約

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

フィールド種類なぜ存在するのか
timestamp_utcTimestampリクエストの完了時間。
status_codeInt64HTTP 応答ステータス コード。
DataFusion SQL

クエリをコピーする

sql
WITH hourly AS (
  SELECT
    date_trunc('hour', timestamp_utc) AS hour,
    COUNT(*) AS requests,
    100.0 * SUM(CASE WHEN status_code >= 500 THEN 1 ELSE 0 END)
      / NULLIF(COUNT(*), 0) AS error_rate_pct
  FROM api_requests
  WHERE timestamp_utc >= now() - INTERVAL '72 hours'
  GROUP BY date_trunc('hour', timestamp_utc)
),
baseline AS (
  SELECT
    hour,
    requests,
    error_rate_pct,
    AVG(error_rate_pct) OVER (
      ORDER BY hour ROWS BETWEEN 7 PRECEDING AND 1 PRECEDING
    ) AS previous_seven_avg_pct
  FROM hourly
)
SELECT
  hour,
  requests,
  error_rate_pct,
  previous_seven_avg_pct,
  error_rate_pct - previous_seven_avg_pct AS increase_pct_points
FROM baseline
WHERE previous_seven_avg_pct IS NOT NULL
ORDER BY hour;

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

クエリ結果

時間当たりのエラー率がベースラインを超えて増加

13:00 のバケットは、最近のローリング平均からの唯一の明らかなプラスの偏差です。

hourrequestserror_rate_pctprevious_seven_avg_pctincrease_pct_points
12:0018,4200.310.280.03
13:0019,1101.420.31.12
14:0018,7800.480.460.02

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

Hourly error-rate increase above baseline: Detect Error-Rate Spikes With a Rolling Baseline 結果例からの合成 increase_pct_points 値の静的チャート
決定論的な出力例のインデックス可能な SVG。記事、ランブック、または出典を明示した設計レビューのためにダウンロードしてください。

例を再現する

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

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

SQL の仕組み

  1. 1時間ごとの CTE は、分母との比率を計算します。
  2. 2ウィンドウは 1 つ前の時点で終了するため、現在のスパイクはそれ自身のベースラインを上げることができません。
  3. 3最終的な差はパーセント変化ではなくパーセントポイントです。

決定すべきエッジケース

  • 7 時間のベースラインは、毎日の季節性をモデル化したものではありません。
  • 欠落している時間バケットは欠落したままになります。見つからないトラフィックをエラーなしとして黙って処理しないでください。
  • 最小限のリクエスト量を必要とし、相対的な変化と絶対的な影響のしきい値を組み合わせます。

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

  • 傾向: 観測されたエラー率とローリングエラー率
  • バー: ベースラインよりも増加します
  • 表: 異常なバケット内のルート

アラートガイダンス

増加率と絶対エラー率の両方が有意な量でしきい値を超えた場合にのみアラートを発します。

アラート設定を読む

レシピを活用する

関連する機器とガイド

分析を続ける

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

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

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

API キーを取得する