在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。
使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
- 选择 Wormly,点击 保存
- 打开生成的集成卡片,复制 推送地址
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 Wormly,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
在 Wormly 中配置
1
创建 Webhook 联系人
- 登录 Wormly,进入 Contacts,点击 Create New Contact
- 通道选择 Webhook
- 将 Flashduty 集成的完整推送地址粘贴到 URL 字段
- Webhook 类型选择 JSON 格式(
JSON或JSON - multipart/form encoding均可,Flashduty 两种都能解析;不要选择 XML 和 Serialized PHP) - 保存
2
在告警组中启用该联系人
在 Alert Groups 中编辑需要接入的告警组,把刚创建的联系人加入相应的升级级别(Escalation Level)。一个告警组可以被多个主机使用。
3
验证生命周期
让一个被监控的主机真正故障(例如临时把监控地址指向一个不可访问的端口),确认 Flashduty 收到活动告警;再恢复目标,确认原告警恢复。
Wormly 要求接收端与被监控的服务器不在同一台服务器上,请求超时时间为 5 秒。Flashduty 的推送地址满足这一要求。
推送内容
Wormly 每次通知发送一个 JSON 对象,Flashduty 直接解析,无需配置模板:
告警标题使用主机名称;主机名称为空时使用
Wormly host <hostid>。请求既可以是 JSON 请求体,也可以是把 JSON 放在表单字段 wormlyalert 中的 urlencoded 或 multipart 表单。
Alert Key
Flashduty 使用
hostid 作为 Alert Key。Wormly 文档将它定义为触发告警的 Wormly 主机的唯一 ID。同一个主机的故障、升级重复通知和恢复通知携带相同的 hostid,因此会落在同一条告警上;不同主机即使名称相同,也会生成不同的告警。修改主机名称、升级级别或传感器不会改变 Alert Key。
请求缺少 hostid 时,Flashduty 会返回参数错误,因为无法可靠地把恢复通知关联到原告警。
状态和告警等级
Wormly 的通知不区分告警等级,
alertlevel 表示升级步骤而不是严重程度,Flashduty 对所有故障统一按 Critical 处理。
isrecovery 缺失或不是 0、1 的请求会被拒绝,避免把无法判断状态的请求写入错误的告警生命周期。
常见问题
持续故障时会产生多条 Flashduty 告警吗?
持续故障时会产生多条 Flashduty 告警吗?
不会。主机持续故障期间,告警组每次升级发出的通知都带相同的
hostid,会合并到同一条告警中。同一主机上多个传感器同时失败时,Wormly 在一条通知中列出它们,Flashduty 仍然是一条告警。联系人的测试按钮会创建告警吗?
联系人的测试按钮会创建告警吗?
联系人表单中的 Send Test 按钮总是发送一条带示例
hostid(5112)的故障通知,因此会创建一条以 5112 为 Alert Key 的告警。测试之后不会有恢复通知,请在 Flashduty 中手动关闭这条告警。不含任何已知字段的空 JSON 对象会被直接确认,不创建告警。可以把 Wormly 的 XML 或 Serialized PHP 格式发过来吗?
可以把 Wormly 的 XML 或 Serialized PHP 格式发过来吗?
不可以。Flashduty 只解析 JSON 格式,请在 Wormly 的 Webhook 类型中选择 JSON。
排查问题
- Wormly 推送失败:确认 URL 是完整的推送地址,且包含
integration_key - Flashduty 返回参数错误:确认 Webhook 类型是 JSON,且请求中的
hostid、isrecovery非空 - 告警没有恢复:确认恢复通知会发送到同一个联系人,Wormly 会在主机恢复后通知所有收到过故障通知的接收方