在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。
使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
- 选择 OpenObserve,点击 保存
- 打开生成的集成卡片,复制 推送地址
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 OpenObserve,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
在 OpenObserve 中配置
需要能管理告警模板和目的地的权限。
1
创建模板
- 在 OpenObserve 中进入 Reliability(告警)页面的 Destination Templates 标签,新建模板,类型选择 Webhook
- 将下面的 JSON 粘贴到模板内容中并保存:
org_name、stream_name 和 alert_name,缺少任何一个,Flashduty 会拒绝该推送。其余字段可按需删减。2
创建目的地
- 进入 Reliability(告警)页面的 Notification Destinations 标签,新建目的地
- Template 选择上一步的模板
- URL 填写 Flashduty 集成的完整推送地址,地址中需包含
integration_key - Method 选择
POST - Headers 可不填:Flashduty 通过地址中的
integration_key认证,不依赖Content-Type
3
在告警中使用目的地
- 创建或编辑 OpenObserve 告警,在目的地中选择上一步的目的地
- OpenObserve 1.1 起,可在告警上开启恢复通知(
notify_on_recovery),告警恢复时会再推送一次alert_status为resolved的请求。早期版本和未开启该选项的告警没有恢复通知 - 保存告警,等待告警条件满足,确认 Flashduty 收到活动告警
Alert Key
Flashduty 用
org_name、stream_type、stream_name 和 alert_name 共同计算 Alert Key,同一个 OpenObserve 告警的触发、持续触发和恢复使用同一个 Alert Key。告警等级、查询结果数、阈值、触发时间和 episode_id 的变化不会改变 Alert Key;stream_type 为空时按空值参与计算。缺少 org_name、stream_name 或 alert_name 的请求会被拒绝。
重命名 OpenObserve 告警、数据流或组织会产生新的 Alert Key。
状态和告警等级
alert_status 为 resolved 时告警恢复,其余情况为触发。OpenObserve 1.1 之前不识别 {alert_status}、{alert_level} 和 {episode_id},这些字段会以原样的模板文本到达,Flashduty 将其视为空值,告警按 Warning 触发。
恢复
只有 OpenObserve 1.1 及以上、并为告警开启恢复通知时,Flashduty 才会收到恢复请求并自动关闭告警。其余情况每次触发都是独立的一次性通知,没有恢复请求。请在 Flashduty 的集成或协作空间中为这类告警配置 超时自动关闭,并设置合适的时长,否则告警会一直保持活动。
标签
模板中没有
{rows},Flashduty 不会收到查询返回的日志内容。
排查问题
- Flashduty 返回参数错误:确认 URL 完整且包含
integration_key,模板中包含org_name、stream_name和alert_name,并且模板是合法的 JSON - 告警没有恢复:确认 OpenObserve 版本不低于 1.1,且告警已开启恢复通知;否则请配置超时自动关闭
- 告警名称包含引号或换行时请求失败:OpenObserve 按文本把变量值填入模板,告警名称中的双引号或换行会让 JSON 失效,请避免在告警名称中使用这些字符
- 目的地没有测试按钮:OpenObserve 的 Webhook 目的地没有测试发送。可在告警列表中点击该告警行的 ⋮ → Trigger 手动触发一次:这次推送的
alert_level、episode_id为空,Flashduty 按 Warning 触发,且没有恢复请求,需要手动关闭或依赖超时自动关闭