{{eventId}} 标识一条告警(分组告警中的一个分组),Flashduty 用它作为 Alert Key:同一条告警的触发通知和恢复通知会更新同一条 Flashduty 告警。
在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。
使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
- 选择 HyperDX,点击 保存
- 打开生成的集成卡片,复制 推送地址
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 HyperDX,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
在 HyperDX 中配置
开源版 HyperDX 和 ClickHouse Cloud 中的托管 ClickStack 都支持 Generic Webhook。自建 HyperDX 需要能访问 Flashduty 推送地址所在的公网域名。
1
创建 Generic Webhook
- 打开 Team Settings → Integrations,在 Webhooks 中点击 Add Webhook;也可以在创建告警时点击 Add New Incoming Webhook
- Service Type 选择 Generic
- Webhook Name 填写
Flashduty,Webhook URL 粘贴 Flashduty 集成的完整推送地址 - Webhook Headers 留空即可,HyperDX 默认发送
Content-Type: application/json - Webhook Body 粘贴下面的模板
- 点击 Test Webhook 确认推送地址可达,再点击 Add Webhook 保存
severity 是写在模板里的固定值,决定这个 Webhook 发出的告警在 Flashduty 中的等级,可选值为 Critical、Warning、Info。需要不同等级时,可以再创建一个使用 Critical 的 Webhook(例如命名为 Flashduty Critical),在重要告警中选择它。较早的 HyperDX 版本没有 {{alertId}} 和 {{groupKey}} 变量,渲染结果为空字符串,不影响告警的触发和恢复。2
在告警中选择 Webhook
搜索告警:
- 在 Search 页面执行查询,点击右上角的 Alerts
- 设置阈值、时间窗口,按需在 Advanced Settings 中填写 grouped by
- 在 Send to 中选择
FlashdutyWebhook,点击 Save Search with Alert
- 打开仪表盘,编辑图表,切换到告警设置并点击 Add Alert
- 设置条件、阈值和时间窗口
- 选择
FlashdutyWebhook,保存图表和仪表盘
3
验证生命周期
Test Webhook 发送的是固定的示例数据(
eventId 为 test-event-id)。Flashduty 对它返回成功,但不会生成告警,只能用来确认推送地址可达。要验证完整流程,请让告警条件真正满足,确认 Flashduty 收到活动告警;再让条件恢复,确认原告警恢复。HyperDX 按告警的时间窗口评估,从条件满足到收到通知最多需要一个窗口。Alert Key
Flashduty 直接使用
event_id({{eventId}})作为 Alert Key。HyperDX 在 Webhook 模板变量文档中说明,{{eventId}} 对同一条告警、同一个分组和同一个 Webhook 保持不变,覆盖从触发到恢复的全过程,官方的 incident.io 模板也用它作为去重键。
- 告警持续满足条件时,HyperDX 每个评估窗口都会再发送一次
ALERT通知,它们都更新同一条 Flashduty 告警 - 分组告警(设置了 grouped by)的每个分组有各自的
event_id,在 Flashduty 中是各自独立的告警,分别触发和恢复 - 标题、正文、数值和告警等级的变化都不会改变 Alert Key
- 修改告警的 grouped by,或删除后重新创建 Webhook,会产生新的
event_id。修改前已在 Flashduty 中触发的告警不会再收到恢复通知,需要手动关闭
状态和告警等级
Flashduty 根据
state 判断触发或恢复,根据 severity 确定告警等级。
severity 不区分大小写。HyperDX 只在告警之前发送过触发通知时才发送恢复通知;告警处于静默期间既不发送触发通知,也不发送恢复通知。
标签
告警标题取自
{{title}},去掉 HyperDX 添加的 🚨 和 ✅ 前缀;告警描述取自 {{body}}。
排查问题
- Flashduty 返回参数错误:确认 Webhook Body 与上文模板一致,
event_id和state非空,字符串变量外层保留了双引号 - Test Webhook 成功但没有告警:这是预期行为,测试数据不会生成告警
- 告警没有恢复:确认告警在触发后没有修改 grouped by、没有重新创建 Webhook,也没有处于静默状态
- 告警等级都是 Warning:模板中的
severity默认是Warning,需要其他等级时请修改模板或另建一个 Webhook