.Alert.InstanceID 标识一次告警触发,Flashduty 用它作为 Alert Key:同一次触发的告警通知和恢复通知会更新同一条 Flashduty 告警。
在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。
使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
- 选择 Honeycomb,点击 保存
- 打开生成的集成卡片,复制 推送地址
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 Honeycomb,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
在 Honeycomb 中配置
以下步骤需要能编辑 Team Settings 中集成的 Honeycomb 账号。Trigger 在所有套餐中可用;SLO 和 Burn Alert 需要 Pro 或 Enterprise 套餐。
1
创建 Webhook 接收方
- 进入 Team Settings,打开 Integrations 页面
- 在 Trigger and SLO Recipients 中点击 Add Integration,Provider 选择 Webhook
- Name 填写
Flashduty,Webhook URL 粘贴 Flashduty 集成的完整推送地址;Shared Secret 可以留空
2
定义 severity 变量
打开 Variables 页签,点击 Add variable,名称填写
severity,默认值填写 critical。Flashduty 用这个变量确定告警等级,可选值为 critical、warning、info。之后在 Trigger 或 Burn Alert 中选择这个接收方时,可以为单条规则覆盖默认值。3
配置 Payload 模板
打开 Payload 页签,为三种告警类型分别点击 Enable,粘贴对应的模板。只启用了部分类型时,未启用的类型不能选择这个接收方。Triggers:Budget Rate Burn Alerts:Exhaustion Time Burn Alerts:完成后点击 Add。
4
将接收方添加到 Trigger
- 打开 Triggers,编辑已有 Trigger 或点击 New Trigger
- 在 Recipients 中点击 Add Recipient,选择
Flashduty接收方;需要其他告警等级时,在变量行中覆盖severity - Frequency of Alerts 选择 Limited alerts(默认)或 Group resolution alerts,保存 Trigger
5
将接收方添加到 SLO Burn Alert
- 打开 SLOs,在目标 SLO 的 Burn Alerts 列点击 Configure,再点击 New Burn Alert
- 设置 Exhaustion Time 或 Budget Rate 条件,在 Notify 中选择
Flashduty接收方;需要时覆盖severity - 点击 Create Burn Alert
6
验证生命周期
Trigger 和 Burn Alert 的 Test 会发送
is_test 为 true 的测试通知(Limited alerts 的 Trigger 和 Burn Alert 发送一条 TRIGGERED 和一条 OK,Continuous alerts 的 Trigger 只发送 TRIGGERED)。Flashduty 对测试通知返回成功,但不会生成告警,可以用来确认推送地址可达。要验证完整流程,请让 Trigger 条件真正满足,确认 Flashduty 收到活动告警;再让条件恢复,确认原告警恢复。Alert Key
Flashduty 直接使用
instance_id(.Alert.InstanceID)作为 Alert Key。Honeycomb 在模板变量说明中将它定义为一次 Trigger 或 Burn Alert 触发的唯一标识,可用于去重和关联告警;Honeycomb 官方的 incident.io 模板也用它作为 deduplication_key,在 OK 时解决对应告警。
- 同一次触发期间的重复通知(例如 Trigger 有新的分组越过阈值)和最终的恢复通知,都更新同一条 Flashduty 告警
- 同一个 Trigger 或 Burn Alert 恢复后再次触发,会生成新的
InstanceID,在 Flashduty 中是一条新告警 - 名称、描述、告警等级和环境的变化都不会改变 Alert Key
instance_id 合并通知,收到 status 为 OK 的通知时恢复告警;告警描述列出当前越过阈值的分组。
状态和告警等级
Flashduty 根据
status 判断触发或恢复,根据 severity 变量确定告警等级。
status 为 OK 时,Flashduty 恢复原告警,并保留最后一次的告警等级。空值或其他 status 会被拒绝。
标签
排查问题
- Honeycomb 中选不到 Flashduty 接收方:确认 Payload 页签中对应的告警类型已启用并填写了模板
- Flashduty 返回参数错误:确认模板与上文一致,
instance_id和status非空;Honeycomb 对 4xx 响应不会重试 - 告警等级都是 Critical:确认定义了
severity变量,并在 Trigger 或 Burn Alert 中按需覆盖 - 告警没有恢复:确认 Trigger 没有使用 Continuous alerts;测试通知不会生成或恢复告警