在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。
使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
- 选择 Oh Dear,点击 保存
- 打开生成的集成卡片,复制 推送地址
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 Oh Dear,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
在 Oh Dear 中配置
Oh Dear 的 Webhook 按团队配置,团队内所有监控的事件都会推送到同一个地址。
1
填写 Webhook 地址
- 登录 Oh Dear,进入团队设置的 Notifications(通知)页面
- 在 Global 标签页点击 Add configuration,渠道选择 Webhooks
- 将 Flashduty 集成的完整推送地址粘贴到 Url,地址中需包含
integration_key。全局配置对团队内所有监控生效 - Oh Dear 会用团队的 Webhook signing secret(在同一对话框中显示)对每次请求签名(
OhDear-Signature请求头),Flashduty 通过地址中的integration_key认证,不校验签名
2
保存并验证
- 点击 Save。在该配置的 … 菜单中选择 Send test notification:Oh Dear 会发送
{"type":"test","uuid":"..."},Flashduty 返回 200 并创建一条独立的 Info 告警,标题为 “Oh Dear test notification”。该告警没有恢复推送,请手动关闭。Show webhook log 可查看每次投递及响应状态 - 在 Oh Dear 中暂停一个测试监控,或将其地址改为无法访问的地址,等待可用性检查失败,确认 Flashduty 收到 Critical 告警
- 恢复监控地址,确认原告警自动恢复
事件和告警的对应关系
Oh Dear 会推送所有事件,无法在 Oh Dear 侧筛选事件类型。Flashduty 的处理方式如下:
以下事件没有对应的恢复事件,每次推送都会创建独立的告警,请开启协作空间的超时自动关闭(建议设置为 24 小时),也可以处理后手动关闭:
certificateExpiresSoon(证书即将过期)、certificateHasChanged(证书变更)、dnsRecordsChanged(DNS 记录变更)、performanceDeltaExceeded(性能变化超过设定比例)、cronFailed(定时任务上报失败)、cronNotExecutedOnTime(定时任务未按时上报)、applicationHealthClientError、applicationHealthResultsTooOld。
新增监控(monitorAddedNotification)和 Oh Dear 以后新增的事件类型不会创建告警,Flashduty 直接返回成功。
Alert Key
- 有恢复事件的检查项:Alert Key 由
run.check_id(Oh Dear 中该监控下某一类检查的 ID)计算,同一检查项的触发和恢复事件使用同一个 Alert Key,不同监控或同一监控的不同检查项互不合并 - 没有恢复事件的事件:Alert Key 由事件的
uuid计算。Oh Dear 重试同一事件时uuid不变,因此重试不会产生重复告警,新事件则各自创建告警
run.check_id(有恢复事件的检查项)或 uuid(无恢复事件的事件)的推送会被拒绝。
状态和告警等级
Oh Dear 事件不携带等级,Flashduty 按事件确定:
可用性的
...UptimeCheckRecovered 事件在 run.result 为 warning 时表示部分连通(主检查节点失败、备用节点成功,网站仍视为在线),Flashduty 同样按恢复处理。
标签
排查问题
- 收不到告警:确认地址中的
integration_key正确,并在 Oh Dear 的 Webhook 日志中查看该请求的响应状态 - 告警没有恢复:确认 Oh Dear 已发出对应的恢复事件;证书即将过期、DNS 记录变更、定时任务等事件没有恢复事件,需要手动关闭
- 测试:Oh Dear 的 Send test notification 只投递测试请求,Flashduty 返回 200 并创建一条需手动关闭的独立 Info 告警;要验证告警链路,请按上文的步骤用真实的检查失败