Skip to main content
通过 Severalnines ClusterControl 的 Notification Services → Webhook,把数据库集群告警(Alarm)的产生(CREATED)和结束(ENDED)同步到 Flashduty On-call。每个 ClusterControl 告警对应一条 Flashduty 告警:告警产生时触发,告警结束时自动恢复。

在 Flashduty On-call


您可通过以下两种方式获取集成推送地址,任选其一即可。

使用专属集成

  1. 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
  2. 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
  3. 选择 ClusterControl,点击 保存
  4. 打开生成的集成卡片,复制 推送地址

使用共享集成

  1. 进入 Flashduty 控制台,选择 集成中心 → 告警事件
  2. 选择 ClusterControl,填写集成名称
  3. 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
  4. 点击 保存,复制生成的 推送地址

在 ClusterControl 中配置


1

添加 Webhook 集成

  1. 登录 ClusterControl 控制台,进入 Settings → Notification services → Add new integration → Webhook
  2. Integration name 可填写 Flashduty
  3. 将 Flashduty 集成的完整推送地址粘贴到 Url
  4. 点击 Test credentials 验证配置
2

选择集群和事件

在 Notification settings 中选择要通知的 Clusters 和 Events(例如 All Warnings Events 与 All Critical Events),点击 Finish 保存。
3

验证生命周期

触发一条真实告警(例如停止一个被管理的数据库节点),确认 Flashduty 收到活动告警;节点恢复后,ClusterControl 发送 ENDED 通知,Flashduty 中的原告警自动恢复。
ClusterControl 只有在许可证有效(试用或付费)时才发送通知;许可证过期或为社区版时,cmon-events 会记录 Skipping an event due to no license,不发送任何通知。ClusterControl 只对集成创建之后产生的告警发送通知,此前已存在的告警不会补发。通知由 ClusterControl 节点上的 cmon-events 进程(软件包 clustercontrol-notifications,默认监听 9510 端口)发出,请确认 ClusterControl 节点能访问 Flashduty 推送地址。

推送内容


ClusterControl 以 JSON 格式 POST 以下字段,Flashduty 直接解析,无需配置模板: 告警标题使用 title;为空时使用 ClusterControl alarm <id>。

Alert Key


Flashduty 使用告警 id 作为 Alert Key。ClusterControl 文档说明,告警恢复时会发送同一个告警 ID、status 为 ENDED 的通知,因此产生、更新和恢复通知落在同一条 Flashduty 告警上;不同 id 生成不同的告警。修改标题、主机或等级不会改变 Alert Key。 文档记载的推送内容不含集群 ID(ClusterControl 2.1.0 还会发送 controller_hostname、cluster_id、cluster_name,Flashduty 不使用这些字段),告警 ID 只在同一个 ClusterControl 控制器内唯一。如果有多个 ClusterControl 控制器,请为每个控制器创建独立的 Flashduty 集成。 请求中缺少 id 时,Flashduty 会返回参数错误,因为无法可靠地把恢复通知关联到原告警。

状态和告警等级


status 为空或为其他值的请求会被拒绝,避免把无法判断状态的请求写入错误的告警生命周期。ClusterControl 默认只转发 CREATED 和 ENDED;CHANGED 需要通过 cmon-events 的 allowed_events 参数开启。

常见问题


该按钮发送一条固定的测试告警(id 为 1,component 为 ServiceCredentialsTest,标题为 “Test credentials alarm”)。Flashduty 返回 HTTP 200,并以独立的 Alert Key 新建一条 Info 告警,不会与真实告警合并。测试没有对应的恢复通知,请在协作空间中手动关闭。
ClusterControl 只转发集成创建之后产生的告警。已存在的告警结束时发送的 ENDED 通知,在 Flashduty 中没有对应的活动告警,不会产生新的告警。
ClusterControl 中被静音的告警类型在取消静音前不会发送任何通知。

排查问题


  • Flashduty 没有收到告警:确认 URL 是完整的推送地址(含 integration_key),并检查 cmon-events 进程运行正常、已为对应集群和事件开启通知
  • Flashduty 返回参数错误:确认请求体为 ClusterControl 的 JSON,且 id、status 非空
  • 告警没有恢复:确认 ClusterControl 中该告警已结束,并且恢复通知的 id 与触发通知相同
字段说明请参阅 ClusterControl 官方文档 Notification Services。