本文へ移動
Telemetry
Webhook SQL レシピ

Webhook のエンドツーエンドの完了を測定する

受信からダウンストリームの完了まで各 Webhook を追跡し、運用目標内で終了するシェアを測定します。

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

レビュー者 Telemetry 製品チーム . SQL構文、必要なイベント項目、サンプル結果、クエリの利用上の制限を確認しました. このページのレビュー担当

質問に回答しました

どの Webhook タイプがダウンストリーム作業を 5 分以内に完了しますか?

200 という速い応答は、ビジネス アクションが完了したことを証明するものではありません。配信 ID によって受信とダウンストリームの結果を結合すると、後で停止または失敗した、受け入れられた Webhook が明らかになります。

イベントスキーマ

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

フィールド種類なぜ存在するのか
timestamp_utcTimestampWebhook ライフサイクル イベント時間。
delivery_idUtf8安定したプロバイダーの配信識別子。
providerUtf8Webhook プロバイダー。
event_typeUtf8プロバイダーのイベント タイプ。
event_nameUtf8webhook_received または downstream_completed。
statusUtf8最終結果の成功または失敗。
DataFusion SQL

クエリをコピーする

sql
WITH deliveries AS (
  SELECT
    delivery_id,
    provider,
    event_type,
    MIN(CASE
      WHEN event_name = 'webhook_received' THEN timestamp_utc
      ELSE NULL
    END) AS received_at,
    MIN(CASE
      WHEN event_name = 'downstream_completed' AND status = 'success'
      THEN timestamp_utc ELSE NULL
    END) AS completed_at
  FROM webhook_lifecycle_events
  WHERE timestamp_utc >= now() - INTERVAL '7 days'
  GROUP BY delivery_id, provider, event_type
),
delivery_outcomes AS (
  SELECT
    delivery_id,
    provider,
    event_type,
    received_at,
    completed_at,
    date_part('second', completed_at - received_at) AS completion_seconds
  FROM deliveries
  WHERE received_at IS NOT NULL
)
SELECT
  provider,
  event_type,
  COUNT(*) AS received_deliveries,
  SUM(CASE WHEN completed_at IS NOT NULL THEN 1 ELSE 0 END)
    AS completed_deliveries,
  100.0 * SUM(CASE
    WHEN completion_seconds <= 300.0 THEN 1 ELSE 0
  END) / NULLIF(COUNT(*), 0) AS completed_within_target_pct,
  approx_percentile_cont(completion_seconds, 0.95) AS p95_completion_seconds
FROM delivery_outcomes
GROUP BY provider, event_type
HAVING COUNT(*) >= 20
ORDER BY completed_within_target_pct, received_deliveries DESC;

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

クエリ結果

Webhook配信は目標内で完了しました

GitHub プッシュ処理は受信時に確認されますが、5 分間のダウンストリーム完了目標を達成できないことがよくあります。

providerevent_typereceived_deliveriescompleted_deliveriescompleted_within_target_pctp95_completion_seconds
stripeinvoice.payment_succeeded8,4208,34696.21242
githubpush3,1802,89083.55811

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

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

例を再現する

サンプルデータをダウンロードする

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

SQL の仕組み

  1. 1配信 CTE は、ライフサイクル イベントを 1 つの受信と 1 つのダウンストリームの正常な完了に集約します。
  2. 2完了レイテンシーは、HTTP ハンドラー時間だけではなく、ビジネス ワークフローを測定します。
  3. 3最終的な集計では完了シェアと p95 時間の両方がレポートされるため、欠落している結果は表示されたままになります。

確認するエッジケース

  • 重複排除されたプロバイダーの再試行では、同じ配信 ID が保持され、新しい論理作業が作成されないようにする必要があります。
  • 一部のイベント タイプは意図的に複数の結果に展開するため、明示的な終端定義が必要です。
  • 最終的なサービス レベルを計算するときに、完全な完了ウィンドウを満たしていないごく最近の受領書を除外します。

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

  • バー: completed_within_target_pct by event_type
  • トレンド: p95_completion_seconds
  • 表: 完了していない最も古い受信済み配信

アラートガイダンス

Webhook 応答コードが正常なままであっても、成熟した配信が有意な量で完了目標を達成できなかった場合にアラートを送信します。

アラート設定を読む

このクエリに必要なイベントを設定する

関連する機器とガイド

分析を続ける

自分のイベントで実行する

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

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

API キーを取得する