FlashDuty

通过 FlashDuty 集成把夜莺告警推送到 Flashcat 告警响应平台,新人可按步骤直接完成配置。

概述

FlashDuty(flashcat.cloud)是 Flashcat 提供的一站式告警响应平台,支持告警聚合、去重、排班、认领、升级、通知、统计等全流程能力。把夜莺接入 FlashDuty 后,你可以:

  • 把多个夜莺实例 / 多个监控源的告警统一汇聚到一个平台进行管理;
  • 按协作空间(channel)做人员排班、电话/短信升级,避免漏告警;
  • 在一个面板里看到告警"何时触发、谁认领、是否解决"全过程,并生成质量报表。

与其它通知媒介最大的区别在于:FlashDuty 不走模板渲染,夜莺直接把原始告警事件(AlertCurEvent 数组)以 JSON 发送到 FlashDuty 集成地址,由 FlashDuty 自己负责展示和加工。

  • 适用场景:需要告警排班、升级、复盘统计等高阶能力,或者想把多个监控系统的告警聚合到一处。
  • 你需要准备:一个 FlashDuty 账号,并在 FlashDuty 里提前建好协作空间(Channel)。
  • 整个配置分三步:
    • ①在 FlashDuty 里创建夜莺集成
    • ②在夜莺新建 FlashDuty 通知媒介
    • ③在通知规则里选择要投递到的协作空间

第一步:在 FlashDuty 中创建夜莺集成

  1. 访问 FlashDuty 控制台,登录后左侧菜单进入 集成中心 → 集成列表(直达地址:https://console.flashcat.cloud/settings/source/alert)。

  2. 切到顶部 告警事件 标签页,点击 添加集成,在弹出的集成面板里选择 夜莺(Nightingale)

  3. 选择一个 协作空间(Channel),给这个集成起个名字(例如 夜莺 - 生产环境),保存后会得到一段推送地址,形如:

    https://api.flashcat.cloud/event/push/alert/n9e?integration_key=xxxxxxxxxxxxxxxxxxxxxxxx
    

    这整段 URL 就是夜莺里要填的 URL(Integration URL),完整复制保存好——URL 里的 integration_key= 不要删。

提示:同一个集成地址对应的默认协作空间就是你在这一步选的那个 Channel,如果不指定 channel_id,告警会全部进这个空间。后面在通知规则里还可以选择把告警发到其它协作空间(需要同账号有权限)。

第二步:在夜莺新建 FlashDuty 通知媒介

  1. 登录夜莺 → 左侧菜单 通知 → 通知媒介

  2. 在左侧类型面板中点击 FlashDuty,进入新建页面(URL /notification-channels/add?ident=flashduty)。

    通知媒介入口

  3. 填写表单:

    FlashDuty 通知媒介表单

    区块 字段 是否需要改 说明
    基础配置 名称 需要 例如 FlashDuty,在通知规则里选媒介时显示的就是这个名字
    基础配置 启用 保持开启 关闭后该媒介不会被发送
    基础配置 备注 可不填 方便团队内区分,例如"生产环境集成"
    FlashDuty 配置 URL 必填 粘贴第一步拿到的完整推送地址(以 https://api.flashcat.cloud/event/push/alert/n9e?integration_key=xxx 格式)
    FlashDuty 配置 代理 可不填 如果夜莺部署在内网,需通过 HTTP 代理访问 FlashDuty,在这里填代理地址
    FlashDuty 配置 超时时间(毫秒) 保持默认 默认 5000,一般不需要改
    FlashDuty 配置 重试次数 保持默认 默认 3,网络抖动会自动重试
  4. 点击左下角 保存

说明:FlashDuty 媒介不需要维护"消息模板"——夜莺会把触发/恢复事件打包成 AlertCurEvent JSON 数组 原样 POST 给 FlashDuty。如果请求返回非 2xx 状态码,夜莺不会重发(告警事件重发会让 FlashDuty 端去重出问题),但响应体会完整记录下来,方便你在通知记录中排查。

第三步:在通知规则里选择协作空间

如果想让不同业务的告警发到不同的 FlashDuty 协作空间,可以在通知规则里指定具体 Channel:

  1. 左侧菜单 通知 → 通知规则 → 新增(或编辑已有规则)。

  2. 在"通知配置"区域:

    • 通知媒介:选刚才创建的 FlashDuty 媒介;
    • Channels:这是一个多选下拉,会自动从 FlashDuty 拉取你有权限的协作空间列表;
      • 不选任何值(推荐新人先这么做):告警会走集成地址默认关联的协作空间;
      • 选一个或多个:夜莺会对每一个被选中的 Channel 各发一次,带上 ?channel_id=<id> 参数,告警事件就会直接进入对应协作空间。
    • 适用级别 / 适用时段 / 适用标签:按需过滤要推送的事件。
  3. 保存后点击"通知测试",FlashDuty 里应该立刻能看到一条测试告警。

常见问题

Q1:下拉选协作空间时一直是空的?

A:下拉列表通过 FlashDuty 接口拉取,需要:① 媒介里填的 URL 是可达的;② URL 里的 integration_key 有效;③ 夜莺所在网络可以出网访问 api.flashcat.cloud。检查完还不行,可以在浏览器 DevTools 的 Network 面板里看 /api/n9e/flashduty-channel-list/{id} 这个请求的响应内容。

Q2:如何确认事件已经成功送到 FlashDuty?

A:最直接的办法——登录 FlashDuty 控制台 → 告警 → 告警事件,应该能看到刚才的测试告警。如果没有,点开夜莺的"通知记录",查看 Response,常见返回:

  • status_code:200, response:{"code":0, ...} → 成功;
  • status_code:400, response:{"code":400, "msg":"integration key invalid"}integration_key 错了或被禁用;
  • 网络类错误(connection refused / timeout)→ 检查网络 / 代理。

Q3:恢复事件(recovered)会被识别吗?

A:会。夜莺发送的 JSON 里 is_recovered: true 字段 FlashDuty 会识别为"自动恢复",对应的告警会被关闭,不会被当成新告警。

Q4:FlashDuty 协作空间里没看到我们的业务组/标签?

A:夜莺会把告警事件里的 group_nametagsannotations 等字段一起发送,FlashDuty 默认会识别 tags 作为路由/过滤条件。如果想用这些 tag 做更精细的分派,请在 FlashDuty 协作空间 → 分派策略 里配置匹配规则。

Q5:想把不同告警级别发到不同协作空间怎么办?

A:在夜莺里建多条通知规则,每条规则选相同的 FlashDuty 媒介、但 Channels 选不同的协作空间,再用"适用级别"做区分即可——不用为每个协作空间新建媒介

Q6:夜莺自己有"告警通知规则",FlashDuty 里也有"分派策略",该在哪一端做过滤?

A:推荐在 FlashDuty 里做。夜莺这边尽量把所有告警都送进 FlashDuty,由 FlashDuty 统一负责排班、升级、去重——这样复盘统计更完整。

参考资料

更新时间 2026-04-25

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云