跳转到主要内容
通过 FortiMonitor(原 Panopta)的 Webhook 集成,把故障(Incident)的发生和恢复通知同步到 Flashduty On-call。每个 FortiMonitor 故障对应一条 Flashduty 告警:故障发生时触发,告警时间线(Alert Timeline)的升级通知合并到同一条告警,故障恢复时关闭这条告警。

在 Flashduty On-call

您可通过以下两种方式获取集成推送地址,任选其一即可。

使用专属集成

  1. 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
  2. 选择 配置 → 集成数据 → 专属集成,点击 新增集成
  3. 选择 FortiMonitor,点击 保存
  4. 打开生成的集成卡片,复制 推送地址

使用共享集成

  1. 进入 Flashduty 控制台,选择 集成中心 → 告警事件
  2. 选择 FortiMonitor,填写集成名称
  3. 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
  4. 点击 保存,复制生成的 推送地址

在 FortiMonitor 中配置

1

在 FortiMonitor 中创建 Webhook 集成

操作路径:FortiMonitor › Teams & Activity › Integrations › Webhook › Configure变量名区分大小写,值为 FortiMonitor 宏:点击 Save。
2

添加恢复事件

操作路径:FortiMonitor › Teams & Activity › Integrations › Webhook › Configure › Add Event在同一个 Webhook 中点击 Add Event,Trigger Event 选择故障恢复(clear)事件,其余字段和变量与上一步完全相同,点击 Save。缺少这一步时,Flashduty 只会收到故障通知,告警不会自动恢复。
3

在告警时间线中使用 Webhook

操作路径:FortiMonitor › Alert Timeline(或 Add › Alert Timeline) › Add New Alert Event
  1. 打开需要接入的告警时间线(Alert Timeline),或通过 Add → Alert Timeline 新建一条
  2. 点击 Add New Alert Event,设置故障发生后多久通知,在集成中选择 Flashduty Webhook
  3. 确认需要接入的实例(Instance)或实例组使用了这条告警时间线
4

验证告警生命周期

让一个被监控的指标真正越过阈值(例如临时调低阈值),等待告警时间线的通知时间到达,确认 Flashduty 收到活动告警;再恢复阈值,确认原告警恢复。几秒后回到 Flashduty,集成显示 最新事件时间,说明配置成功。
FortiMonitor 的 Webhook 请求来自固定 IP:104.197.35.194/32 和 35.185.29.9/32。如果推送地址所在网络有访问限制,请放行这两个地址。
Payload Type 必须选择 Form Variables,并严格按上表填写变量名。默认的 Raw Payload 是 Google Chat 卡片格式,不包含 Flashduty 需要的字段,推送会被拒绝。

推送内容

FortiMonitor 按上表以表单格式 POST 以下字段,每个故障、每次事件单独发送一次请求: 告警标题为 <实例名称>: <故障指标>;实例名称为空时使用完整域名,两者都为空时使用 FortiMonitor incident <outage_id>。

Alert Key

Flashduty 使用 outage_id(FortiMonitor 故障 ID)作为 Alert Key。同一个故障的发生、升级通知和恢复通知携带相同的 outage_id,因此会落在同一条告警上。同一个实例、同一个指标恢复后再次出故障时,FortiMonitor 会生成新的故障 ID,Flashduty 也会生成新的告警。修改实例名称、故障原因或告警等级不会改变 Alert Key。 请求中缺少 outage_id,或值仍是未替换的 $outage_id 时,Flashduty 会返回参数错误,因为无法把恢复通知关联到原告警。

状态和告警等级

trigger 为空或为其他值的请求会被拒绝。

常见问题

不会。告警时间线的每个升级事件都会再次推送同一个故障的 outage 通知,outage_id 相同,会合并到同一条告警中。
不会。确认和广播(Broadcast)消息不改变故障状态,Flashduty 收到后直接返回成功,不修改告警。请在 Flashduty 中认领故障。
告警时间线只在故障持续到设定的通知时间后才推送。故障在此之前就恢复时,FortiMonitor 不会发送故障通知,Flashduty 也不会创建告警。

排查问题

  • 推送失败:确认 Postback URL 是完整的推送地址,且包含 integration_key;网络有访问限制时放行 FortiMonitor 的推送 IP
  • Flashduty 返回参数错误:确认 Payload Type 为 Form Variables,变量名与上表一致,且 trigger、outage_id 的值分别为 $trigger、$outage_id
  • 告警没有恢复:确认 Webhook 已添加 clear 事件,且恢复事件的变量与故障事件相同
宏参数说明请参阅 FortiMonitor 官方文档 Webhooks。