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

测量 Webhook 延迟和重复率

按 Webhook 提供程序和事件类型比较处理延迟、重复传递和失败。

中级webhook_deliveries已审核 2026-07-27测试用 阿帕奇 DataFusion 45.2.0

审阅者 Telemetry产品团队 . SQL 兼容性、事件契约、合成输出和操作注意事项. 审查标准和所有权

问题已回答

哪些 Webhook 源速度慢、重复或不可靠?

对于 at-least-once 系统来说,重复传递是正常的,但重复的副作用则不然。分别跟踪交付结果和幂等性决策。

活动合约

查询期望的字段

字段类型为什么存在
timestamp_utcTimestamp处理完成时间。
providerUtf8Webhook 提供商。
event_typeUtf8提供商事件类别。
idempotency_outcomeUtf8new_event 或重复。
statusUtf8成功或失败。
latency_msFloat64处理持续时间。
DataFusion SQL

复制查询

sql
SELECT
  provider,
  event_type,
  COUNT(*) AS deliveries,
  SUM(CASE WHEN idempotency_outcome = 'duplicate' THEN 1 ELSE 0 END) AS duplicates,
  SUM(CASE WHEN status = 'failed' THEN 1 ELSE 0 END) AS failures,
  100.0 * SUM(CASE WHEN idempotency_outcome = 'duplicate' THEN 1 ELSE 0 END)
    / NULLIF(COUNT(*), 0) AS duplicate_rate_pct,
  approx_percentile_cont(latency_ms, 0.95) AS p95_latency_ms
FROM webhook_deliveries
WHERE timestamp_utc >= now() - INTERVAL '7 days'
GROUP BY provider, event_type
ORDER BY duplicate_rate_pct DESC, failures DESC;

此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。

查询结果

Webhook 传送重复且失败

Stripe支付失败重复率最高,终端失败较多。

providerevent_typedeliveriesduplicatesfailuresduplicate_rate_pctp95_latency_ms
stripeinvoice.payment_failed4803497.081,180
githubpush2,9404231.43420

综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。

Duplicate and failed webhook deliveries:来自 Measure Webhook Latency and Duplicate Rate 示例结果的合成 duplicates 值的静态图表
确定性示例输出的可索引 SVG。下载它以获取带有归属的文章、操作手册或设计评论。

重现示例

下载公共装置

JSON 包包含类型化事件契约, illustrative 输入行、确切的 SQL、预期输出、审阅注释和引擎版本。 CSV 包含显示的结果。

SQL 是如何工作的

  1. 1CASE 表达式计算来自同一交付群体的重复和失败计数。
  2. 2重复率是一个传递特性;它并不能证明重复的业务效果。
  3. 3尾部延迟显示处理程序是否接近提供程序超时或重试边界。

需要决定的边缘情况

  • 重复项可以成功地进行重复数据删除,并且不应自动算作失败。
  • 提供程序重试策略和事件量不同,因此请保留提供程序和事件类型。
  • 切勿在此表中存储 Webhook 签名或原始付款负载。

推荐仪表板

  • 堆叠条:按事件类型划分的重复和失败
  • 趋势:p95 webhook 延迟
  • 表:最近失败的下游作业

警报指导

针对重复处理失败或重复副作用(而非预期的重复数据删除交付)发出警报。

读取警报设置

让查询示例发挥作用

相关埋点和指南

继续分析

在真实事件中运行它

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

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

获取 API 密钥