在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。
使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
- 选择 DBmarlin,点击 保存
- 打开生成的集成卡片,复制 推送地址
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 DBmarlin,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
在 DBmarlin 中配置
Webhook 集成需要 DBmarlin v5.11 及以上版本,且一个 DBmarlin 只能配置一个 Webhook 集成。
1
打开 Webhook 集成
在 DBmarlin 中进入 Settings → Integrations,在 Webhook 一行点击 Edit。
2
填写地址和请求头
- Webhook URL:填 Flashduty 的完整推送地址,形如
https://api.flashcat.cloud/event/push/alert/dbmarlin?integration_key=<your-integration-key> - DBmarlin URL:填您访问 DBmarlin 的地址,告警里的跳转链接会用到
- Headers:建议添加
Content-Type: application/json
3
填写 Content Template(实例告警)
Content Template 用于实例(Instance)告警,粘贴以下 JSON:
4
填写 Host Content Template(主机告警)
Host Content Template 用于主机(Host)告警,粘贴以下 JSON:
5
启用并验证
保存并启用集成。在 Settings → Alert Rules 中创建一条容易触发的规则,等待 DBmarlin 发出“开始”通知,确认 Flashduty 收到活动告警;规则恢复后 DBmarlin 发出“结束”通知,确认原告警恢复。文档中没有提到 Webhook 的测试按钮,请用真实告警验证。
Alert Key
Flashduty 用规则 ID(
ruleid)加实例名(instance)或主机名(node)计算 Alert Key,实例告警和主机告警互不相同。同一规则在同一实例或主机上的“开始”和“结束”共用一个 Alert Key;from、to、数值和规则名称的变化不会改变它。
- 规则被删除后重建会得到新的规则 ID,旧告警不会被恢复,需要手动关闭
- 同一规则再次触发时,使用同一个 Alert Key
状态和告警等级
DBmarlin 只有 warning 一种告警等级,因此所有告警按 Warning 处理。DBmarlin 文档没有列出
startedended 的取值,Flashduty 把以 end 开头的值当作结束,其余值按开始处理。
恢复与自动关闭
DBmarlin 在告警结束时发送“结束”通知,Flashduty 据此恢复告警。为避免通知丢失导致告警一直打开,建议在协作空间或集成上配置 超时自动关闭,时长大于您规则可能持续的最长时间。
排查问题
- DBmarlin 日志出现
status code 400:确认模板是合法 JSON,且包含ruleid,以及instance(实例告警)或node(主机告警) - 出现
404或401:确认 Webhook URL 完整并包含integration_key - 告警没有恢复:确认规则的“结束”通知已发出,且模板包含
startedended;规则名称含双引号或反斜杠时会破坏 JSON,请避免 - 收不到主机告警:主机告警使用 Host Content Template,不使用 Content Template