$ALERT_CYCLE_KEY 关联同一次告警周期中的触发、重复通知和恢复事件。
在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。
使用专属集成
当您不需要将告警路由到不同的协作空间时,优先选择此方式。展开
展开
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 集成数据,点击 添加一个集成
- 选择 Datadog,点击 保存
- 打开生成的集成卡片,复制 推送地址
使用共享集成
当您需要根据 Payload 将告警路由到不同的协作空间时,选择此方式。展开
展开
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 Datadog,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
在 Datadog 中配置 Webhook
1
创建 Webhook
- 登录 Datadog,进入 Integrations → Webhooks
- 点击 New Webhook
- 填写一个便于识别的名称,例如
flashduty - 将 Flashduty 集成的完整推送地址粘贴到 URL
- 不要启用 Encode as form
2
配置默认 Payload
启用自定义 Payload,并粘贴以下 JSON:
不同 Monitor 类型提供的上下文不同,部分变量可能为空。Flashduty 会忽略空标签。若不希望保留 Datadog 消息中的 Markdown,可将
$EVENT_MSG 替换为 $TEXT_ONLY_MSG。3
关联 Monitor
编辑需要发送告警的 Monitor,在通知消息中添加:如果 Webhook 使用了其他名称,请将
flashduty 替换为实际名称。保存 Monitor 后,Datadog 会在告警状态变化时调用 Flashduty 推送地址。4
验证触发和恢复
让 Monitor 进入告警状态,确认 Flashduty 收到一条活动告警;随后恢复 Monitor,确认同一条 Flashduty 告警变为恢复状态。Datadog 的测试通知可以验证 Webhook 是否可达,但只有真实触发和恢复才能验证完整的告警生命周期。
增加自定义标签
默认 Payload 已包含常用的环境、服务、团队和地域标签。如果还需要传递其他 Datadog 变量,请在 Payload 顶层增加
custom_labels 对象:
custom_labels最多包含 50 个条目;key 将作为 Flashduty 标签名称,建议使用 snake_case- 空值不会生成标签
- 基础字段优先;同名自定义标签不能覆盖
service、check等非空基础标签 - 单次请求包含基础标签在内,最多生成 50 个标签
- 不要传递 API Key、Token、密码、Cookie 或其他敏感信息
Alert Key
Flashduty 优先使用
$ALERT_CYCLE_KEY 作为 Alert Key。Datadog 将该字段定义为从告警触发到恢复期间关联事件的 ID,因此重复通知和恢复事件会更新同一条 Flashduty 告警。
如果 Payload 缺少 alert_cycle_key 或该字段为空,Flashduty 会为本次请求生成一个随机 Alert Key,不会拒绝请求。随机值只对当前请求有效;如果后续重复通知仍未携带相同的 $ALERT_CYCLE_KEY,可能创建新的独立告警;恢复事件缺少该字段时则无法命中并恢复原告警。因此请保留默认 Payload 中的 $ALERT_CYCLE_KEY,只把随机值作为兼容兜底。
$ID、$ALERT_ID、$AGGREG_KEY、标题、等级、时间和自定义标签都不会参与 Alert Key 计算。
状态和告警等级
恢复状态只根据
$ALERT_TRANSITION 判断,与等级映射相互独立。
如需调整等级,可通过告警处理 Pipeline重新映射。
排查问题
- Datadog 没有发送请求:确认 Monitor 通知消息包含正确的
@webhook-<name> - Flashduty 返回参数错误:确认 Payload 是有效 JSON,并且包含非空的
alert_transition - 告警没有恢复:确认触发和恢复 Payload 使用相同的
$ALERT_CYCLE_KEY - 标签为空:该 Monitor 或恢复事件可能没有对应上下文;可通过
$TAGS[key]选择当前 Monitor 确实存在的标签