在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增集成
- 选择 OpenSearch,点击 保存
- 打开生成的集成卡片,复制 推送地址
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 OpenSearch,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
在 OpenSearch 中配置
1
在 OpenSearch Dashboards 中创建自定义 Webhook 通知渠道
操作路径:OpenSearch Dashboards › Management › Notifications › Channels › Create channel
点击 Create。如果 OpenSearch 集群配置了
opensearch.notifications.core.http.host_deny_list,需要保证 api.flashcat.cloud 不在其中。2
在 Monitor 的触发器中添加动作
操作路径:OpenSearch Dashboards › OpenSearch Plugins › Alerting › Monitors › Create monitor › Triggers › Add action需要安装 Alerting 和 Notifications 插件(OpenSearch 默认自带),并有创建通知渠道和 Monitor 的权限。创建或编辑一个 Per query monitor 或 Per cluster metrics monitor,然后在 Triggers 中添加触发器和动作:保存 Monitor。
hit_count 是 Per query monitor 查询命中的文档数,Per cluster metrics monitor 没有这个值,会推送空字符串,不影响告警。Per bucket、Per document 和 Composite monitor 的通知变量与上面的模板不同,本集成不支持。Action throttling 可以限制通知频率。节流期间不推送通知,节流时长内没有新通知,告警仍按下面的超时自动关闭时长关闭。3
在 Flashduty 中开启超时自动关闭
操作路径:Flashduty 控制台 › 协作空间 › 配置 › 设置 › 高级配置Per query 和 Per cluster metrics 的触发器只在条件成立时执行动作,条件不再成立后 OpenSearch 不会发送任何通知,所以这两类 Monitor 没有恢复设置。请在接收这些告警的协作空间中配置超时自动关闭:
条件恢复后,告警在超时时长到达时关闭;如果条件仍然成立,超时关闭后 Monitor 的下一次通知会重新创建告警。
4
在 OpenSearch Dashboards 中发送测试消息并验证
操作路径:OpenSearch Dashboards › Management › Notifications › Channels › 该渠道 › Send test message
- 打开该渠道,点击 Send test message,Flashduty 会创建一条标题为
OpenSearch test notification的 Info 告警,集成显示 最新事件时间,验证后请手动关闭。这条测试消息只能证明连通性,不含 Monitor 和触发器信息 - 让 Monitor 的触发条件真正成立(例如临时降低阈值),等待 Monitor 下一次运行,确认 Flashduty 收到告警,等级与触发器的 Severity level 对应
- 恢复阈值,等待超时自动关闭时长到达,确认告警自动关闭
Alert Key
Flashduty 用 Monitor ID 和触发器 ID 计算 Alert Key,即模板中的monitor_id 和 trigger_id。同一个 Monitor 的同一个触发器,每次通知使用同一个 Alert Key,因此合并为一条告警;不同的触发器、不同的 Monitor 各有各的告警。Monitor 名称、触发器名称、等级、命中数和时间段的变化不会改变 Alert Key。monitor_id 或 trigger_id 为空的通知会被拒绝并返回参数错误。
模板中没有使用 ctx.alert.id:触发器第一次执行动作时,OpenSearch 还没有创建告警,这个变量为空。
状态和告警等级
OpenSearch 触发器的 Severity level 取值 1(最高)到 5(最低),Flashduty 按下表映射:
每条通知都是触发状态,Flashduty 不会因为 OpenSearch 的通知而自动恢复告警,恢复由超时自动关闭完成,也可以在 Flashduty 中手动关闭。
标签
排查问题
- Flashduty 返回参数错误:确认 Message 是完整的模板,
monitor_id和trigger_id都有值;确认 URL 完整且包含integration_key - OpenSearch 中通知发送失败:在 Notifications → Channels 中对该渠道点击 Send test message 查看错误,常见原因是集群无法访问
api.flashcat.cloud或该域名在host_deny_list中 - 告警没有自动关闭:确认协作空间已开启超时自动关闭,计时起点为 故障触发
- 在 OpenSearch 中认领(Acknowledge)告警后没有新通知:OpenSearch 对已认领的告警不再执行动作,Flashduty 的告警会在超时自动关闭后关闭
- 告警标题里出现空的触发器名称:触发器没有填写名称时,Flashduty 只用 Monitor 名称作标题;两者都为空时标题为
OpenSearch alert: 触发器 ID