[notify.webhook]),可以把状态页的整体状态变化同步到 Flashduty On-call:状态变为 dead(异常)或 sick(降级)时在 Flashduty 触发告警,恢复为 healthy 时自动恢复。
Vigil 的 Webhook 请求体是固定格式,无需编写模板。
在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。
使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
- 选择 Vigil,点击 保存
- 打开生成的集成卡片,复制 推送地址
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 Vigil,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
在 Vigil 中配置
需要 Vigil 1.29.x,并能修改 Vigil 的配置文件(
config.cfg)。Vigil 所在的服务器需要能访问 Flashduty 的推送地址。
1
配置 Webhook 通知器
在 Flashduty 通过地址中的
config.cfg 中添加(或修改)[notify.webhook],hook_url 填 Flashduty 集成的完整推送地址,地址中需包含 integration_key:integration_key 认证,无需额外的请求头。reminder_interval 是状态持续异常时 Vigil 重复通知的间隔(秒),可按需调整。保存后重启 Vigil 使配置生效。2
配置探测目标
在
[[probe.service]] 下配置要监控的服务和节点,Vigil 会把所有节点的状态汇总成状态页的整体状态。通知器本身不需要其他设置。3
验证
Vigil 没有测试按钮。验证方法:
- 让一个被探测的节点失败,等待 Vigil 判定为异常,确认 Flashduty 出现 Critical 告警,且告警描述中列出了失败的节点
- 让该节点恢复,确认 Flashduty 中的告警自动恢复(
sick的情况见下文说明)
[notify] 中开启了 startup_notification = true,Vigil 启动时会发送一条 startup 通知,Flashduty 返回成功但不产生告警,可用来确认地址和网络连通。Alert Key
Flashduty 使用状态页地址
page.url 作为 Alert Key。Vigil 的通知只描述整个状态页的聚合状态,没有单个告警的 ID,因此一个 Vigil 状态页对应一条 Flashduty 告警:状态变为 dead 或 sick 时创建或更新,变为 healthy 时恢复。
- 多个节点同时异常时,一次通知列出全部异常节点;其中一个节点恢复而另一个仍异常时,状态仍为
dead,告警保持打开,描述里的节点列表随之缩短,直到整体变为healthy - 恢复通知的
replicas为空,无法指出恢复的是哪个节点 - 状态页标题、状态、节点列表和通知时间变化不会改变 Alert Key。请求中缺少
page.url会被拒绝 page.url来自config.cfg的[branding]page_url,只在同一个 Vigil 实例内唯一。请不要让多个 Vigil 实例使用相同的page_url,一个 Flashduty 集成也请只接收一个 Vigil 实例的推送
状态和告警等级
Vigil 只在状态变为
dead、离开 dead(变为 sick 或 healthy)以及保持 dead 期间的提醒时发送通知;healthy 变为 sick,或 sick 变为 healthy,都不发送通知。因此 sick 通知只会出现在 dead 之后,replicas 始终为空,并把同一条告警更新为 Warning。之后状态从 sick 变为 healthy 时 Vigil 不发送恢复通知,告警会一直保持打开,直到状态页再次经历 dead 并恢复为 healthy,或在 Flashduty 中手动关闭。
status 为其他值时请求被拒绝。Vigil 的通知时间只有时分秒,没有日期,Flashduty 使用收到请求的时间作为事件时间。
告警标题形如 Vigil: Example Status is dead,由状态页标题(为空时用状态页地址)和状态拼成;告警描述按字母序列出异常节点,格式为 服务ID:节点ID:探测地址。
标签
排查问题
- Flashduty 返回参数错误:确认
hook_url完整且包含integration_key;响应信息会指出缺少的字段或不支持的状态 - 没有收到告警:确认已重启 Vigil,
[notify.webhook]的hook_url正确,并且 Vigil 判定的整体状态确实变为dead或sick;Vigil 只在状态变化和提醒间隔到期时发送通知 - 告警没有恢复:只有整个状态页从
dead直接恢复为healthy才会发送恢复;仍有节点异常时状态保持dead或sick,sick变为healthy不会通知,此时请手动关闭告警 - 同一状态页重复通知:这是
reminder_interval触发的重复提醒,Flashduty 会合并到同一条告警