FlashDuty
通过 FlashDuty 集成把夜莺告警推送到 Flashcat 告警响应平台,新人可按步骤直接完成配置。
概述
FlashDuty(flashcat.cloud)是 Flashcat 提供的一站式告警响应平台,支持告警聚合、去重、排班、认领、升级、通知、统计等全流程能力。把夜莺接入 FlashDuty 后,你可以:
- 把多个夜莺实例 / 多个监控源的告警统一汇聚到一个平台进行管理;
- 按协作空间(channel)做人员排班、电话/短信升级,避免漏告警;
- 在一个面板里看到告警"何时触发、谁认领、是否解决"全过程,并生成质量报表。
与其它通知媒介最大的区别在于:FlashDuty 不走模板渲染,夜莺直接把原始告警事件(AlertCurEvent 数组)以 JSON 发送到 FlashDuty 集成地址,由 FlashDuty 自己负责展示和加工。
- 适用场景:需要告警排班、升级、复盘统计等高阶能力,或者想把多个监控系统的告警聚合到一处。
- 你需要准备:一个 FlashDuty 账号,并在 FlashDuty 里提前建好协作空间(Channel)。
- 整个配置分三步:
- ①在 FlashDuty 里创建夜莺集成
- ②在夜莺新建 FlashDuty 通知媒介
- ③在通知规则里选择要投递到的协作空间
第一步:在 FlashDuty 中创建夜莺集成
-
访问 FlashDuty 控制台,登录后左侧菜单进入 集成中心 → 集成列表(直达地址:https://console.flashcat.cloud/settings/source/alert)。
-
切到顶部 告警事件 标签页,点击 添加集成,在弹出的集成面板里选择 夜莺(Nightingale)。
-
选择一个 协作空间(Channel),给这个集成起个名字(例如
夜莺 - 生产环境),保存后会得到一段推送地址,形如:https://api.flashcat.cloud/event/push/alert/n9e?integration_key=xxxxxxxxxxxxxxxxxxxxxxxx这整段 URL 就是夜莺里要填的 URL(Integration URL),完整复制保存好——URL 里的
integration_key=不要删。
提示:同一个集成地址对应的默认协作空间就是你在这一步选的那个 Channel,如果不指定
channel_id,告警会全部进这个空间。后面在通知规则里还可以选择把告警发到其它协作空间(需要同账号有权限)。
第二步:在夜莺新建 FlashDuty 通知媒介
-
登录夜莺 → 左侧菜单 通知 → 通知媒介。
-
在左侧类型面板中点击 FlashDuty,进入新建页面(URL
/notification-channels/add?ident=flashduty)。
-
填写表单:

区块 字段 是否需要改 说明 基础配置 名称 需要 例如 FlashDuty,在通知规则里选媒介时显示的就是这个名字基础配置 启用 保持开启 关闭后该媒介不会被发送 基础配置 备注 可不填 方便团队内区分,例如"生产环境集成" FlashDuty 配置 URL 必填 粘贴第一步拿到的完整推送地址(以 https://api.flashcat.cloud/event/push/alert/n9e?integration_key=xxx格式)FlashDuty 配置 代理 可不填 如果夜莺部署在内网,需通过 HTTP 代理访问 FlashDuty,在这里填代理地址 FlashDuty 配置 超时时间(毫秒) 保持默认 默认 5000,一般不需要改FlashDuty 配置 重试次数 保持默认 默认 3,网络抖动会自动重试 -
点击左下角 保存。
说明:FlashDuty 媒介不需要维护"消息模板"——夜莺会把触发/恢复事件打包成 AlertCurEvent JSON 数组 原样 POST 给 FlashDuty。如果请求返回非 2xx 状态码,夜莺不会重发(告警事件重发会让 FlashDuty 端去重出问题),但响应体会完整记录下来,方便你在通知记录中排查。
第三步:在通知规则里选择协作空间
如果想让不同业务的告警发到不同的 FlashDuty 协作空间,可以在通知规则里指定具体 Channel:
-
左侧菜单 通知 → 通知规则 → 新增(或编辑已有规则)。
-
在"通知配置"区域:
- 通知媒介:选刚才创建的 FlashDuty 媒介;
- Channels:这是一个多选下拉,会自动从 FlashDuty 拉取你有权限的协作空间列表;
- 不选任何值(推荐新人先这么做):告警会走集成地址默认关联的协作空间;
- 选一个或多个:夜莺会对每一个被选中的 Channel 各发一次,带上
?channel_id=<id>参数,告警事件就会直接进入对应协作空间。
- 适用级别 / 适用时段 / 适用标签:按需过滤要推送的事件。
-
保存后点击"通知测试",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_name、tags、annotations 等字段一起发送,FlashDuty 默认会识别 tags 作为路由/过滤条件。如果想用这些 tag 做更精细的分派,请在 FlashDuty 协作空间 → 分派策略 里配置匹配规则。
Q5:想把不同告警级别发到不同协作空间怎么办?
A:在夜莺里建多条通知规则,每条规则选相同的 FlashDuty 媒介、但 Channels 选不同的协作空间,再用"适用级别"做区分即可——不用为每个协作空间新建媒介。
Q6:夜莺自己有"告警通知规则",FlashDuty 里也有"分派策略",该在哪一端做过滤?
A:推荐在 FlashDuty 里做。夜莺这边尽量把所有告警都送进 FlashDuty,由 FlashDuty 统一负责排班、升级、去重——这样复盘统计更完整。