跳转到主要内容
Opsview 支持添加自定义通知方法(Custom Notification Method):Opsview 在通知时执行您安装的脚本,并把告警内容通过 NAGIOS_ 开头的环境变量(NAGIOS_HOSTNAME、NAGIOS_SERVICEDESC、NAGIOS_NOTIFICATIONTYPE 等)传给它。用一个脚本把这些内容以 标准告警事件 格式推送给 Flashduty 即可:问题通知触发告警,恢复通知关闭告警。

在 Flashduty On-call

您可通过以下两种方式获取集成推送地址,任选其一即可。集成类型都选择 标准告警事件,不是 Opsview。

使用专属集成

  1. 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
  2. 选择 配置 → 集成数据 → 专属集成,点击 新增集成
  3. 选择 标准告警事件,点击 保存
  4. 打开生成的集成卡片,复制 推送地址,形如 https://api.flashcat.cloud/event/push/alert/standard?integration_key=<集成密钥>

使用共享集成

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

在 Opsview 中配置

1

在 Orchestrator 上创建通知脚本

操作路径:Opsview Orchestrator 服务器 › notify_by_flashduty
脚本读取的环境变量都在 Opsview 文档列出的通知环境变量中,处理规则如下:
2

在 Orchestrator 上导入脚本并应用变更

操作路径:Opsview Orchestrator 服务器的终端;Opsview › Configuration › Apply Changes以 opsview 用户导入脚本:
导入后进入 Configuration › Apply Changes 完成脚本安装。
3

在 Opsview 中添加通知方法

操作路径:Opsview › Configuration › Notification Methods › Add New保存后再次进入 Configuration › Apply Changes,让新通知方法生效。
4

把通知方法加入用户的 Notification Profile

操作路径:Opsview › Configuration › Users and Roles › Users › 编辑用户 › Notification Profiles › Add NewOpsview 的通知由用户的 Notification Profile 决定,每个要接收 Flashduty 通知的用户都要选择这个通知方法(也可以从右上角的用户名进入 My Profile):点击 Update,再点击 Submit Changes,最后进入 Configuration › Apply Changes 使配置生效。也可以在 Shared Notification Profiles 中创建共享配置,分配给多个用户。
5

用 test_notifications 测试脚本并确认真实告警

操作路径:Opsview Orchestrator 服务器的终端Opsview 提供 test_notifications 工具,模拟 Nagios Core 通知时设置的环境变量,用它测试脚本:
测试会向 Flashduty 发送真实事件,确认告警出现后在 Flashduty 中手动关闭;集成显示 最新事件时间,说明脚本和推送地址正确。该测试绕过通知方法和 Notification Profile,不能证明它们已生效,请在 Opsview 中让一个受监控对象真实变为非 OK 状态再恢复,确认问题与恢复通知都到达 Flashduty。没有出现告警时,按下文“排查问题”查看脚本实际收到的环境变量。
如果通知方法设置为在 Collector 上运行,需要在 Collector 服务器上同样测试脚本。

恢复与去重

  • 同一台主机或同一个服务始终使用同一个 Alert Key,重复的问题通知(例如 Opsview 的重复通知间隔)只更新同一条告警,RECOVERY 通知恢复它
  • 服务从 WARNING 变为 CRITICAL 时,等级在同一条告警上更新
  • 确认(ACKNOWLEDGEMENT)、抖动(FLAPPING*)和停机维护(DOWNTIME*)通知被脚本忽略,不会在 Flashduty 产生事件

排查问题

  • 没有收到告警:确认 Notification Profile 中选择了 Flashduty 且已执行 Apply Changes;在 Opsview 的 Notifications View 查看通知是否已发送;用 test_notifications 单独测试脚本
  • 测试成功但真实告警没有推送:脚本在真实通知中读取的是 Opsview 传入的环境变量;在脚本开头加入 { date; echo "Called with $@"; env; echo; } >> /tmp/env.txt(Opsview 文档给出的排查方法)查看实际收到的变量
  • 告警没有恢复:确认 Notification Profile 勾选了恢复状态;Nagios 只在发过问题通知后才发送对应的恢复通知
  • Flashduty 返回参数错误:确认 Command 里的推送地址完整,包含 integration_key
更多说明请参阅 Opsview 文档 Custom Notification Methods 和 Notification Profiles。