在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增集成
- 选择 Pandora FMS,点击 保存
- 打开生成的集成卡片,复制 推送地址
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 Pandora FMS,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
在 Pandora FMS 中配置
Pandora FMS 的告警动作在 Pandora FMS 服务器上执行命令。下面的配置新建一个用curl 推送的告警命令,再新建一个使用该命令的动作,最后把动作加到模块告警上。
执行告警的 Pandora FMS 服务器需要安装
curl,并且能够通过 HTTPS 访问推送地址中的域名。1
在 Pandora FMS 中新建告警命令
操作路径:Pandora FMS 控制台 › Management › Alerts › Commands › Create以管理员身份登录。填写完成后点击 Create 保存。每个宏都写在双引号内,Pandora FMS 替换宏时会为值加上 Shell 引号,
curl --data-urlencode 再对值做 URL 编码,所以代理名、模块描述中的空格、引号和中文都能原样到达 Flashduty。2
在 Pandora FMS 中新建告警动作
操作路径:Pandora FMS 控制台 › Management › Alerts › Actions › CreateTriggering 和 Recovery 两列都要填:
点击 Create 保存。
3
确认告警模板开启了恢复
操作路径:Pandora FMS 控制台 › Management › Alerts › Templates
打开要使用的模板(或新建一个),内置的 Critical condition 和 Warning condition 模板默认已启用。Alert recovery 关闭时,模块恢复后 Pandora FMS 不会执行动作,Flashduty 中的告警不会自动关闭。
4
把动作加到模块告警
操作路径:Pandora FMS 控制台 › Management › Alerts › Module Alerts
新建模块告警后保存即可(旧版本中该页面叫 List of Alerts,点击 Add alert 添加)。也可以在代理(Agent)的 Alerts 标签页为模块添加告警并选择
Flashduty 动作。已有模块告警只需添加 Flashduty 动作,原有的邮件等动作不受影响。5
验证告警触发与恢复
操作路径:Pandora FMS 控制台 › Management › Alerts › Module Alerts让一个已配置告警的模块进入告警条件(例如调低 CPU 模块的 Critical 阈值),确认 Flashduty 收到活动告警;恢复阈值后等待下一次采集,确认原告警关闭。回到 Flashduty,集成显示 最新事件时间,说明配置成功。
推送内容
命令以application/x-www-form-urlencoded 表单格式 POST 以下字段:
告警标题为
<模板名称>: <代理> / <模块>;缺少部分字段时使用其余字段,全部为空时使用 Pandora FMS alert <id_alert>。
Alert Key
Flashduty 使用id_alert(Pandora FMS 宏 _id_alert_)作为 Alert Key。Pandora FMS 文档对该宏的说明是 “Alert identifier, useful for correlating the alert in third-party tools”:它是模板分配到某个模块后的模块告警 ID,同一条模块告警的触发、重复触发和恢复携带相同的 ID,因此会落在同一条 Flashduty 告警上。同一个模板分配到两个模块时是两条模块告警,ID 不同,会生成不同的 Flashduty 告警。修改模板名称、优先级、代理别名或数据不会改变 Alert Key。
模块告警 ID 只在一套 Pandora FMS 内唯一。多套 Pandora FMS(包括 Metaconsole 下的多个节点)请分别使用不同的 Flashduty 集成,避免不同实例中 ID 相同的告警合并到同一条告警。
只有模块告警带有 _id_alert_。事件告警、日志告警和关联告警没有模块告警 ID,Flashduty 会以参数错误拒绝,请不要把 Flashduty 动作加到这类告警上。
状态和告警等级
event 决定告警触发还是恢复,alert_priority(告警模板的 Priority)决定告警等级:
event 为 alert_recovered 时关闭告警,告警等级仍取模板优先级。event 为空或为其他值的请求会被拒绝,避免把无法判断状态的请求写入错误的告警生命周期。
常见问题
为什么要在动作里填写 Event?
为什么要在动作里填写 Event?
Pandora FMS 在告警触发和恢复时执行同一个动作,没有宏能说明本次执行是触发还是恢复,只有动作字段可以按 Triggering 和 Recovery 分别取值。因此由 Field 2 的
alert_fired 和 alert_recovered 告诉 Flashduty 本次执行是触发还是恢复。手动强制执行(Force)告警会创建告警吗?
手动强制执行(Force)告警会创建告警吗?
对尚未触发的模块告警强制执行时,
alert_times_fired 为 0。Flashduty 把这类请求识别为测试,直接返回成功,不会创建告警。对已经触发的告警强制执行时,请求会合并到该告警,不会新建告警。告警重复触发会产生多条告警吗?
告警重复触发会产生多条告警吗?
不会。同一条模块告警在恢复前的重复触发携带相同的
id_alert,会合并到同一条 Flashduty 告警。重复触发的频率由模板的 Max number of alerts 和动作的 Threshold 控制。告警在 Pandora FMS 中已恢复,Flashduty 中没有关闭?
告警在 Pandora FMS 中已恢复,Flashduty 中没有关闭?
依次确认:告警模板启用了 Alert recovery;动作 Field 2 的 Recovery 列是
alert_recovered;模块告警没有处于 Standby 状态(Standby 的告警不执行任何动作)。排查问题
- Pandora FMS 没有推送:在 Pandora FMS 服务器上执行
curl -sS <推送地址>确认网络可达;确认动作的 Group 覆盖了代理所在组 - Flashduty 返回参数错误:确认命令完整粘贴、保持为一行;确认动作 Field 2 两列分别为
alert_fired和alert_recovered;确认动作只加在模块告警上 - 告警没有恢复:见上方常见问题 “告警在 Pandora FMS 中已恢复,Flashduty 中没有关闭?”