在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。
使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
- 选择 Opsgenie 兼容,点击 保存
- 打开生成的集成卡片,复制 推送地址
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 Opsgenie 兼容,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
推送地址
推送地址的格式如下,
integration_key 是路径的一部分:
v2/alerts、v2/alerts/<alias>/close 等路径,查询参数中的 integration_key 可能被丢弃或拼错位置,因此 Flashduty 从路径中读取 integration_key。请求头 Authorization: GenieKey <key> 不参与鉴权,客户端要求必填时可填写任意非空值。
支持的接口:
成功的请求返回 HTTP 202 和
{"result": "Request will be processed", "took": 0, "requestId": "..."},与 Opsgenie 相同。
在 Prometheus Alertmanager 中配置
在
alertmanager.yml 的接收器中添加 opsgenie_configs,api_url 填写推送地址:
send_resolved: true才会在告警恢复时发送 Close 请求- Alertmanager 默认把分组的公共标签放在
details中,Flashduty 把它们保存为告警标签 - 不设置
priority时按 Opsgenie 默认的P3处理,即 Warning update_alerts: true发送的 Update Message、Update Description 请求会被接受但不做处理;标题与描述随下一次 Create 请求更新
在 Grafana 中配置
1
创建 OpsGenie 联络点
- 进入 Alerting → Contact points,点击 + Add contact point
- Integration 选择 OpsGenie
- API Key 填写任意非空值
-
Alert API URL 填写推送地址加上
v2/alerts: - 勾选 Auto close incidents,告警恢复时 Grafana 才会发送 Close 请求
- Send notification tags as 保持默认的 Tags,或选择 Tags & Extra Properties
2
关联通知策略
在 Notification policies 中把需要推送的告警路由到该联络点。
3
验证生命周期
让一条告警规则进入 Firing,确认 Flashduty 收到告警;再让规则恢复 Normal,确认原告警恢复。
key:value 形式放在 tags 中,Flashduty 会还原为同名标签。Grafana 默认不发送 priority,即按 P3(Warning)处理;如需按规则设置等级,请在联络点中开启 Override priority,并在告警规则上添加标签(label)og_priority,值为 P1 到 P5。
联络点的 Test 按钮每次都会使用新的 alias,在 Flashduty 中产生一条独立的 Warning 告警,且不会自动恢复,请手动关闭。
其他工具
任何能修改 Opsgenie API 地址、并通过 alias 关闭告警的工具都可以使用此集成:把 API 地址替换为推送地址(按工具的拼接方式决定是否带
v2/alerts),Close 请求带上 identifierType=alias。
以下用法不支持:
- 按 id 或 tiny id 关闭告警:Flashduty 不生成 Opsgenie 告警 ID,
identifierType为id、tiny或缺省时返回 422 - 查询接口:不支持
GET请求(如v2/alerts/requests/<requestId>)。Zabbix 自带的 Opsgenie 媒介类型会轮询该接口,请改用 Zabbix 集成 - 包含
/的 alias:alias 出现在 URL 路径中,含/时无法匹配接口
Alert Key
使用请求中的
alias 作为 Alert Key。Opsgenie 官方将 alias 定义为「客户端定义的告警标识,也是告警去重的关键字段」(Alert API)。同一个 alias 的多次 Create 请求合并为同一条告警,Close 请求按 alias 恢复这条告警。Alertmanager 和 Grafana 都以告警分组的哈希作为 alias,同一分组在触发与恢复时保持不变。
请求中没有 alias 时,每次 Create 都会产生一条新告警,且无法通过 Close 恢复。
字段映射
responders、visibleTo、actions、user、note 不做处理,分派与通知按 Flashduty 协作空间的配置执行。
告警等级
其他取值返回 422。恢复由 Close 请求触发,与
priority 无关。
排查问题
- 返回 404:Alertmanager 的
api_url缺少结尾的/,或 Grafana 的 Alert API URL 缺少/v2/alerts - 返回 401:推送地址中的
integration_key错误,或集成已被禁用 - 返回 422:
message为空、priority不在P1到P5之间,或 Close 请求没有使用identifierType=alias;推送地址中的integration_key属于其他类型的集成时也会返回 422 - 告警没有恢复:确认 Alertmanager 设置了
send_resolved: true,Grafana 勾选了 Auto close incidents