本文へ移動
Telemetry
Webhook SQL レシピ

Webhook の再試行回復を測定する

永続的な Webhook エラーを、後の試行で回復した配信から分離します。

中級者webhook_deliveriesレビュー済み 2026-07-27テスト済み アパッチ DataFusion 45.2.0

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

質問に回答しました

Webhook の再試行により失敗が回復するのでしょうか、それとも追加の作業が発生しますか?

生の失敗数は、プロバイダーが再試行に成功した場合の顧客への影響を過大評価します。このクエリは、初期障害、回復された配信、永続的な障害、および重複の抑制をまとめて表示します。

イベント契約

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

フィールド種類なぜ存在するのか
timestamp_utcTimestamp処理の試行が終了したとき。
delivery_idUtf8再試行によって共有される安定した識別子。
providerUtf8Webhook プロバイダー。
event_typeUtf8プロバイダーのイベント タイプ。
attemptInt641 ベースの処理試行。
statusUtf8成功、失敗、または重複排除。
DataFusion SQL

クエリをコピーする

sql
WITH delivery_outcomes AS (
  SELECT
    delivery_id,
    provider,
    event_type,
    MAX(attempt) AS attempts,
    SUM(CASE WHEN status = 'failed' THEN 1 ELSE 0 END) AS failed_attempts,
    SUM(CASE WHEN status = 'success' THEN 1 ELSE 0 END) AS successful_attempts,
    SUM(CASE WHEN status = 'deduplicated' THEN 1 ELSE 0 END) AS deduplicated_attempts
  FROM webhook_deliveries
  WHERE timestamp_utc >= now() - INTERVAL '7 days'
  GROUP BY delivery_id, provider, event_type
)
SELECT
  provider,
  event_type,
  COUNT(*) AS deliveries,
  SUM(CASE
    WHEN failed_attempts > 0 AND successful_attempts > 0 THEN 1 ELSE 0
  END) AS recovered,
  SUM(CASE
    WHEN failed_attempts > 0 AND successful_attempts = 0 THEN 1 ELSE 0
  END) AS permanent_failures,
  SUM(deduplicated_attempts) AS duplicates_suppressed
FROM delivery_outcomes
GROUP BY provider, event_type
ORDER BY permanent_failures DESC, recovered DESC;

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

クエリ結果

Webhook イベントによる永続的な障害

回復されたイベントは、永続的な顧客への影響としてカウントされることなく、表示されたままになります。

providerevent_typedeliveriesrecoveredpermanent_failuresduplicates_suppressed
stripeinvoice.payment_succeeded4111
githubpush3101

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

Permanent failures by webhook event: Measure Webhook Retry Recovery 結果例からの合成 permanent_failures 値の静的チャート
決定論的な出力例のインデックス可能な SVG。記事、ランブック、または出典を明示した設計レビューのためにダウンロードしてください。

例を再現する

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

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

SQL の仕組み

  1. 1最初の CTE は、1 つの配信に対するすべての試行を 1 つの結果レコードにまとめます。
  2. 2回復された配信には、少なくとも 1 回の失敗した試行と少なくとも 1 回の成功した試行があります。永続的な失敗が成功を記録することはありません。
  3. 3正しい冪等性は処理の失敗ではなく正常な結果であるため、重複の抑制は個別に追跡されます。

決定すべきエッジケース

  • 再試行を確実にグループ化できるように、プロバイダー配信 ID を保持します。
  • 配信はクエリウィンドウの後に回復する場合があります。プロバイダーの再試行スケジュールをカバーできる十分な長さのウィンドウを使用してください。
  • 成功するにはプロバイダーを認識する以上のことが必要な場合、受信をダウンストリームの副作用から分離します。

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

  • グループ化されたバー: event_type による回復と permanent_failures
  • 統計: 重複抑制率
  • 表: ダウンストリーム ジョブ コンテキストに関する最新の永続的な障害

アラートガイダンス

収益に重要なイベントが発生した場合は永続的な障害が発生した場合はすぐに警告し、復旧した配送数が突然増加した場合は早期警告信号として警告します。

アラート設定を読む

レシピを活用する

関連する機器とガイド

ソースデータを定義する

この分析のイベント スキーマ

分析を続ける

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

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

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

API キーを取得する