跳转到内容
Telemetry
网络钩子 SQL查询示例

衡量 Webhook 端到端完成情况

跟踪每个 Webhook 从接收到下游完成的整个过程,并衡量在操作目标内完成的份额。

高级webhook_lifecycle_events已审核 2026-07-28测试用 阿帕奇 DataFusion 45.2.0

审阅者 Telemetry产品团队 . 我们检查了 SQL 语法、必需的事件字段、示例结果和查询使用限制. 谁负责审核此页面

问题已回答

哪些 Webhook 类型会在五分钟内完成下游工作?

快速 200 响应并不能证明业务操作已完成。通过交付 ID 连接收据和下游结果会暴露已接受的 Webhook,但这些 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 推送处理在收到时得到确认,但经常错过五分钟下游完成目标。

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 将生命周期事件折叠为一份收据和一次成功的下游完成。
  2. 2完成延迟衡量的是业务工作流程,而不仅仅是 HTTP 处理程序时间。
  3. 3最终聚合报告完成份额和 p95 时间,因此缺失的结果仍然可见。

需要检查的边界情况

  • 重复数据删除提供程序重试应保留相同的交付 ID,并且不会创建新的逻辑工作。
  • 某些事件类型有意分散为多个结果,并且需要明确的终端定义。
  • 在计算最终服务水平时,排除尚未完全完成窗口的最近收货。

推荐仪表板

  • 酒吧:completed_within_target_pct by event_type
  • 趋势:p95_completion_seconds
  • 表:最早收到但未完成的交付

警报指导

即使 Webhook 响应代码保持正常,当成熟的交付未达到有意义的完成目标时发出警报。

读取警报设置

设置此查询需要的事件

相关埋点和指南

继续分析

在你的事件上运行

创建表,调整字段并保存结果

免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。

获取 API 密钥