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

测量 Webhook 重试恢复

将永久性 Webhook 故障与稍后尝试恢复的传输分开。

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

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

问题已回答

Webhook 重试是恢复失败还是创造更多工作?

当提供商重试成功时,原始失败计数夸大了对客户的影响。此查询同时显示初始故障、恢复的交付、永久故障和重复抑制。

活动合约

查询期望的字段

字段类型为什么存在
timestamp_utcTimestamp当处理尝试结束时。
delivery_idUtf8由重试尝试共享的稳定标识符。
providerUtf8Webhook 提供商。
event_typeUtf8提供者事件类型。
attemptInt64基于一的处理尝试。
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 将一次交付的所有尝试折叠成一个结果记录。
  2. 2恢复的传递至少有一次失败的尝试和至少一次成功的尝试。永久的失败永远不会成功。
  3. 3重复抑制是单独跟踪的,因为正确的幂等性是一个健康的结果,而不是处理失败。

需要决定的边缘情况

  • 保留提供商交付 ID,以便可以可靠地对重试进行分组。
  • 查询窗口后可能会恢复交付;使用足够长的窗口来覆盖提供商的重试时间表。
  • 当成功需要的不仅仅是确认提供者时,将接收与下游副作用分开。

推荐仪表板

  • 分组条:由 event_type 恢复和 permanent_failures
  • Stat:重复抑制率
  • 表:下游作业上下文的最新永久性故障

警报指导

立即针对收入关键事件的永久性故障发出警报,并针对恢复交付量的突然增加作为预警信号。

读取警报设置

让查询示例发挥作用

相关埋点和指南

定义源数据

此分析的事件模式

继续分析

在真实事件中运行它

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

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

获取 API 密钥