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。
使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
- 选择 Prometheus,点击 保存
- 打开生成的集成卡片,复制 推送地址,形如
https://api.flashcat.cloud/event/push/alert/prometheus?integration_key=<集成密钥>
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 Prometheus,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
在 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 接收器