在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增集成
- 选择 Oh Dear,点击 保存
- 打开生成的集成卡片,复制 推送地址
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 Oh Dear,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
在 Oh Dear 中配置
Oh Dear 的 Webhook 按团队配置,团队内所有监控的事件都会推送到同一个地址。1
在 Oh Dear 中添加 Webhook 通知配置
操作路径:Oh Dear › Team settings › Notifications › Global › Add configuration
填写后点击 Save。Global 标签页下的配置对团队内所有监控生效;Oh Dear 会推送全部事件类型,无法在 Oh Dear 侧筛选。Oh Dear 会用团队的 Webhook signing secret(显示在同一页面)对每次请求签名(
OhDear-Signature 请求头),Flashduty 通过地址中的 integration_key 认证,不校验签名。2
在 Oh Dear 中发送测试通知
操作路径:Oh Dear › Team settings › Notifications › Global › 该 Webhook 配置的 … 菜单 › Send test notificationOh Dear 会发送
{"type":"test","uuid":"..."},Flashduty 返回 200 并创建一条独立的 Info 告警,标题为 “Oh Dear test notification”。该告警没有恢复推送,请手动关闭。这一步只能证明 Oh Dear 到 Flashduty 的网络和 integration_key 可用,不能验证真实检查的告警和恢复。在同一个 … 菜单中选择 Show webhook log,可查看每次投递的请求和响应状态。Oh Dear 只把 HTTP 200 视为投递成功,其他状态码(包括 301、302 跳转)都会重发,最多共发送 3 次。Flashduty 对已识别和会被忽略的事件都返回 200。3
用真实的检查失败验证告警和恢复
- 在 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 告警;要验证告警链路,请按上文的步骤用真实的检查失败