Skip to main content
通过 Mackerel 的 Webhook 通知渠道,将 Mackerel 告警同步到 Flashduty On-call。每条 Mackerel 告警对应一条 Flashduty 告警:告警发生时触发,状态在 Warning 和 Critical 之间变化时更新,告警关闭时恢复。

在 Flashduty On-call


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

使用专属集成

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

使用共享集成

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

在 Mackerel 中配置


1

添加 Webhook 通知渠道

  1. 登录 Mackerel,在左侧菜单点击 Channels
  2. 新建通知渠道,渠道类型选择 Webhook
  3. 填写渠道名称,将 Flashduty 集成的完整推送地址粘贴到 URL,地址中需包含 integration_key
  4. 在通知事件中只勾选告警(alert)事件。告警分组、主机状态变化、主机注册、主机退役和监控规则变更事件不会创建告警,Flashduty 收到后直接返回成功
  5. 图表图片选项(Include graph image)默认开启,开启时告警标签中会带上图表链接;不需要可以取消勾选
  6. 保存渠道
2

加入通知分组

新建的渠道默认加入接收整个组织全部通知的默认通知分组。如果只希望部分服务或监控规则的告警进入 Flashduty,可以在 Channels 页面新建一个通知分组,选择对应的服务和监控规则,把该渠道加入这个分组,并将它从默认通知分组中移除。
3

验证

  1. 在 Monitors 中选择一条监控规则(例如主机指标监控),临时调低阈值,使其产生告警
  2. 确认 Flashduty 收到活动告警
  3. 恢复阈值,等 Mackerel 关闭告警后,确认原告警在 Flashduty 中恢复。也可以在 Mackerel 告警页面点击 Close alert 手动关闭,Flashduty 同样会恢复该告警

Alert Key


Flashduty 使用 Mackerel 告警的 alert.id 作为 Alert Key。同一条 Mackerel 告警从发生、状态变化到关闭使用同一个 ID,因此这些通知会合并到同一条 Flashduty 告警。 同一监控规则在告警关闭后再次触发时,Mackerel 会生成新的告警 ID,Flashduty 也会创建新的告警。监控规则名称、消息、指标值和主机状态的变化不会改变 Alert Key。缺少 alert.id 的告警通知会被拒绝。

状态和告警等级


Mackerel 把 Unknown 与 Critical 视为同一级别,Flashduty 也将其映射为 Critical。手动关闭、删除监控规则、主机退役或删除服务都会关闭告警(alert.isOpen 为 false),Flashduty 会随之恢复告警。

标签


告警的消息 message 和监控规则的备注 memo 会写入告警描述。

排查问题


  • Flashduty 返回参数错误:确认 URL 完整且包含 integration_key
  • 没有收到告警:确认渠道勾选了告警(alert)事件、渠道所在的通知分组包含该监控规则,并且主机状态为 working(Mackerel 不为 standby、maintenance、poweroff 状态的主机发送告警通知),监控规则的通知没有被静音
  • 只收到 Critical 告警:通知分组开启了 Critical only,Warning 告警不会推送
  • 渠道显示暂停(suspended):Mackerel 在推送连续失败一段时间后会暂停渠道。修复推送地址后,点击渠道旁的警告图标解除暂停
  • 限制来源 IP:Mackerel 通知的来源 IP 范围见 Mackerel FAQ 中关于通知来源 IP 地址的说明
更多字段含义请参阅 Mackerel Webhook。