Skip to main content
CubeAPM 支持把告警通知以 HTTP POST 的方式发送到任意 Webhook URL,默认的 JSON 请求体与 Prometheus Alertmanager 的 Webhook 格式兼容(包含 receiver、status、alerts、groupLabels、commonLabels、commonAnnotations、externalURL 等;每条告警带 status、labels、annotations、startsAt、endsAt、generatorURL、fingerprint,另有 CubeAPM 自己的 cubeImageURL、cubeSampleLog)。Flashduty 的 Prometheus 集成 与该格式兼容,因此不需要单独的 CubeAPM 集成:在 Flashduty 创建 Prometheus 集成,把它的推送地址填进 CubeAPM 即可。

在 Flashduty On-call


您可通过以下两种方式获取集成推送地址,任选其一即可。集成类型都选择 Prometheus,不是 Chronosphere。

使用专属集成

  1. 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
  2. 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
  3. 选择 Prometheus,点击 保存
  4. 打开生成的集成卡片,复制 推送地址,形如 https://api.flashcat.cloud/event/push/alert/prometheus?integration_key=<集成密钥>

使用共享集成

  1. 进入 Flashduty 控制台,选择 集成中心 → 告警事件
  2. 选择 Prometheus,填写集成名称
  3. 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
  4. 点击 保存,复制生成的 推送地址

在 CubeAPM 中配置


1

创建 Webhook 接收器

在 CubeAPM 创建告警时,Receiver Type 选择 Webhook,在 Webhook URL 中填入上一步复制的完整推送地址(包含 ?integration_key=...)。CubeAPM 文档说明,Webhook 的 JSON 请求体默认与 Alertmanager 格式兼容,也可以在 Payload 中用 Go 模板自定义。自定义时请保留 Alertmanager 格式的 alerts 数组,并让每条告警都包含 status、labels、annotations、startsAt、endsAt、fingerprint,否则 Flashduty 无法判断告警是触发还是恢复,也无法把触发与恢复对应到同一条告警。
2

验证

让一条 CubeAPM 告警规则触发,确认 Flashduty 收到活动告警;告警恢复后,确认 Flashduty 中的原告警关闭。

字段映射


一次通知可以包含多条告警,Flashduty 逐条处理(单次最多 100 条)。

恢复与去重


  • CubeAPM 发送 status 不为 firing(例如 resolved)的通知时,Flashduty 按相同的 fingerprint 关闭对应告警。CubeAPM 官方的 PagerDuty 与 Zenduty 对接示例也是据此把非 firing 状态映射为恢复。
  • CubeAPM 文档没有说明 Webhook 是否有测试发送功能。首次配置后,用一条真实告警验证触发与恢复是否都出现在 Flashduty 中。

排查问题


  • Flashduty 返回 Invalid parameters:推送地址不完整,缺少 integration_key,或集成类型不是 Prometheus
  • 告警没有恢复:确认自定义 Payload 中每条告警的 status 和 fingerprint 都存在,且恢复通知的 fingerprint 与触发时一致
  • 收不到任何告警:确认 CubeAPM 能访问 api.flashcat.cloud,并且告警规则选择了该 Webhook 接收器