在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。
使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
- 选择 Tactical RMM,点击 保存
- 打开生成的集成卡片,复制 推送地址
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 Tactical RMM,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
在 Tactical RMM 中配置
需要创建两个 Webhook(失败一个、恢复一个),再把它们绑定到告警模板。两个 Webhook 的 URL 都是 Flashduty 推送地址,请求体只有
status 不同。
1
创建“失败”Webhook
- 登录 Tactical RMM 控制台,进入 Settings 中的 URL Actions,新建一个 Webhook 类型的动作(菜单位置以您的版本为准)
- URL Pattern 填写 Flashduty 的完整推送地址(含
integration_key),请求方法选择 POST - Request Headers 填写:
- Request Body 填写:
2
创建“恢复”Webhook
再新建一个 Webhook,URL、请求方法和请求头与上一步相同,请求体与上一步完全一致,只把第一行改为
"status": "resolved"。3
绑定到告警模板
- 进入 Settings → Alert Templates,新建或编辑需要值班处理的告警模板
- 在动作设置中,把 Failure action 的类型选为 Rest,选择“失败”Webhook;把 Resolved action 的类型选为 Rest,选择“恢复”Webhook
- 在模板的代理、检查、任务设置中开启需要的告警,并把模板应用到对应的客户、站点或策略
4
保存并验证
- 在 Webhook 编辑页点击 Test,且不要选择测试对象(代理、站点或客户)。Flashduty 会创建一条 Info 级别的测试告警,标题为
Tactical RMM test notification,它不会自动恢复,验证后请手动关闭。Tactical RMM 的文档说明测试模式下{{alert.XXX}}变量不可用;选择了测试对象时变量可能被替换成其他值,Flashduty 会因alert_type无效返回参数错误 - 让一个告警真实触发(例如停止一台测试代理),确认 Flashduty 收到活动告警
- 告警恢复后,确认 Flashduty 中对应的告警恢复
事件类型
Alert Key
Flashduty 使用
alert_id(即 {{alert.id}},Tactical RMM 中这条告警记录的编号)计算 Alert Key。同一条告警的失败和恢复 Webhook 渲染自同一条记录,编号相同。同一对象在恢复后再次失败会产生新的告警记录,因此在 Flashduty 中是一条新告警。严重程度、消息、主机名变化不会改变 Alert Key,缺少 alert_id 的请求会被拒绝。
一个 Flashduty 集成对应一个 Tactical RMM 实例。多个 Tactical RMM 实例的告警编号可能重复,请为每个实例创建各自的集成。
状态和告警等级
status 为 resolved 时告警恢复,保留最后一次的告警等级。
标签
排查问题
- Flashduty 返回参数错误:错误信息会指出问题字段。常见原因是请求体缺少
alert_id,或alert_type不是availability、check、task、custom之一(例如用 Test 按钮时选择了测试对象) - 告警没有恢复:确认已配置“恢复”Webhook 并绑定到告警模板的 Resolved action,且其
status为resolved;可在 Tactical RMM 的告警详情中查看动作的返回结果 - Flashduty 没有收到任何推送:确认告警模板已应用到对应的代理,且告警等级没有被 Info/Warning 通知开关过滤
- 请求体不是合法 JSON:
{{alert.message}}的内容含有双引号时,Tactical RMM 渲染出的 JSON 会失效,此时 Flashduty 会拒绝该请求。可从模板中删除message行,Flashduty 会用告警类型和主机名生成标题 - 测试告警没有关闭:Test 按钮的推送不会恢复,需手动关闭