首页/云/可观测性速查/Webhook 接收器:payload 结构与中继要求
告警与响应50 条

Webhook 接收器:payload 结构与中继要求

webhook_configs 把告警以 JSON POST 给自建中继(钉钉/飞书/企业微信群机器人网关);payload 含 groupKey、commonLabels 与 alerts 明细。

可观测性速查云更新于 2026-10-13

Webhook 接收器是什么

webhook 接收器把告警以 JSON 的形式 POST 给自建中继服务,常见形态是钉钉、飞书、企业微信群机器人的网关。Alertmanager 送出的 payload 包含 groupKey、commonLabels、commonAnnotations 与 alerts 明细数组,中继从中取出需要展示的字段再转发。它比邮件灵活、比电话便宜,但幂等、限速与失败退避都要自己实现,中继本身也因此成为需要被监控的组件。

基本信息

配置位置receivers[].webhook_configs,含 url、send_resolved、max_alerts
payload 版本常见 version 为 4
关键字段groupKey、status、commonLabels、commonAnnotations、alerts、externalURL
投递重试非 2xx 视为失败,按退避策略重试
权限要求中继服务需能被 Alertmanager 访问

典型使用场景

  • IM 群通知:把告警渲染成卡片发到值班群,并带上跳转看板的链接
  • 工单系统:中继把告警转成工单或事件记录,保留可追溯的处置链条
  • 统一网关:多个监控源共用一个中继做统一渲染与限速
  • 定制路由:按标签把告警投递到不同团队的不同群或队列
  • 二次加工:转发前补充值班人、变更单号等上下文字段

中继实现要点

  • 幂等:同一 groupKey 在短时间内重复投递要去重,避免刷屏
  • 退避:返回非 2xx 让 Alertmanager 记录失败并重试,不要静默吞掉
  • 截断:用 max_alerts 控制单次携带条数,超出部分按数量截断
  • 状态区分:send_resolved 打开时恢复事件也走同一地址,渲染要区分
  • 自监控:中继要有失败率与延迟指标,否则通道故障无人知晓

payload 关键字段

payload 关键字段
{
  "version": "4",
  "status": "firing",
  "receiver": "im",
  "groupKey": "{}/{severity=\"critical\"}:{alertname=\"HighErrorRate\"}",
  "commonLabels": { "alertname": "HighErrorRate", "service": "order-svc" },
  "commonAnnotations": { "summary": "错误率超过 5%" },
  "externalURL": "http://am.example.com:9093",
  "alerts": [
    { "status": "firing",
      "labels": { "instance": "10.0.1.5" },
      "annotations": { "summary": "当前值 12%" },
      "startsAt": "2026-10-12T10:07:00Z",
      "endsAt": "0001-01-01T00:00:00Z",
      "generatorURL": "http://prom.example.com/graph?g0.expr=...",
      "fingerprint": "a1b2c3d4e5f6a7b8" }
  ]
}

payload 字段读法

字段含义用途
groupKey分组标识幂等去重与日志关联的关键
statusfiring 或 resolved决定渲染哪种模板
commonLabels组内公共标签渲染标题与路由判断
alerts告警明细数组逐条展开细节内容
generatorURL回到规则或图表点击跳转定位现场
fingerprint告警指纹跨投递做去重
中继是告警链路上唯一由自己维护的一环,必须给它配可用性与投递失败率告警,否则最容易出现「看着有监控、实际没人收到」的隐性故障。

易错点

  • 中继只回 200 不校验下游结果,通道故障时无人知晓
  • 不设 max_alerts 且分组很大时,请求体超限会被下游直接拒绝,整组告警一起丢
  • 缺少幂等处理,同一 groupKey 反复投递会把值班群刷屏,新告警被淹没
  • 打开 send_resolved 后中继不区分状态渲染,恢复通知看起来与告警一样,容易误判

数据来源与参考

  • Alertmanager 文档 · webhook_config
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌