协作空间是 Flashduty 中一个重要概念。很多客户刚开始使用时,会把它理解成一个简单的告警列表,但它实际承担的是“团队级告警处理边界”和“路由入口”的职责。
本文用两个典型问题说明协作空间的设计逻辑:
- 告警进来以后,应该进入哪个团队的处理空间?
- 当一个告警需要多个团队协作时,应该如何升级为故障?
核心要点
- 协作空间通常按团队或业务划分,用于避免所有告警混在一个页面里处理。
- 故障是全局对象,可以横跨多个协作空间,用来承载跨团队协同。
- 全局 Webhook 适合统一接入后再通过订阅规则路由;协作空间专属 Webhook 适合在告警策略层面已经明确归属空间的场景。
- Webhook 地址中的
integration_key用于集成鉴权,channel_id用于直接指定协作空间。
协作空间设计逻辑
简单来讲:公司每天可能产生数千条告警,如果放到一个页面处理就太混乱了。通常会以团队粒度划分协作空间,让不同团队的告警互不干扰。
团队成员可以关联 OnCall 值班表,只有值班的时候处理告警,其他时间就可以专注干一些长线的事情。
当然,如果公司业务相对比较小,所有的告警都发到一个统一的协作空间来处理,也是可以的。
| 团队规模/场景 | 协作空间划分建议 |
|---|---|
| 小团队、告警量不大 | 可以先使用一个统一协作空间 |
| 多业务线、多运维团队 | 按团队或业务线划分协作空间 |
| 多地机房或多环境 | 可以结合团队、环境、机房等维度设计空间 |
故障升级逻辑
另外,如果我的协作空间中收到一个告警,比如我的服务调用第三方服务不通了,原因可能是网络问题,也可能是第三方服务问题。此时需要多个团队协同处理,单个协作空间就不够用了。
为此,Flashduty 引入了故障概念。可以把服务调用不通的告警事件升级为故障,然后拉其他团队的人进来一起处理。大家可以在这个故障下面发表评论、贡献排查线索、附加止损手段等。
故障是全局的,是横跨所有协作空间的。
告警事件路由逻辑
一般监控系统都支持Webhook和第三方系统对接,Flashduty就是利用各个监控系统的Webhook机制和这些监控系统对接。比如夜莺来举例,有两个地方可以配置Webhook,一个是全局的、一个是告警规则级别的。我们分别介绍一下这个逻辑。
全局Webhook
首先去Flashduty的集成中心,创建一个夜莺的集成:

给集成起个名字,比如“测试环境的夜莺”,创建成功之后点击这个集成,可以看到详情页面,详情里有接口地址,一个类似于下面的地址:
https://api.flashcat.cloud/event/push/alert/n9e?integration_key=xx
注意,这个地址中有个参数integration_key,起到了鉴权的作用。然后把这个地址配置到夜莺的全局Webhook中就可以了,告警事件就可以推上来了。
但是,告警事件虽然上来了,应该进入哪个协作空间呢?这就需要在各个协作空间配置订阅规则,订阅自己感兴趣的告警事件,整个逻辑如下图:

全局 Webhook 的特点是“先统一接入,再按规则订阅”。它适合告警源比较统一、但告警归属需要在 Flashduty 内部根据标签或规则再判断的场景。
告警策略里的Webhook
另一种接入方式是使用告警策略里的Webhook,既然是告警策略里的Webhook,理论上,这个策略触发的告警我们是知道应该交由哪个协作空间来处理。所以,直接去协作空间下面创建专属集成就可以了,如图:

专属集成的url长成下面这样:
https://api.flashcat.cloud/event/push/alert/n9e?integration_key=xx&channel_id=yy
多了一个channel_id参数,channel就是协作空间的意思,相当于推送告警的时候直接就路由到这个协作空间,无需配置订阅规则了,整个逻辑如下图所示:

专属 Webhook 的特点是“推送时直接指定协作空间”。它适合在告警策略层面已经明确归属团队的场景,配置更直接,也不需要再依赖协作空间订阅规则。
两种路由方式怎么选
| 路由方式 | Webhook 地址特征 | 适合场景 |
|---|---|---|
| 全局 Webhook | 只有 integration_key |
告警先统一接入,再按订阅规则分发到协作空间 |
| 协作空间专属 Webhook | 同时包含 integration_key 和 channel_id |
告警策略已经知道归属空间,推送时直接路由 |
选择标准很简单:如果告警源只负责把事件推上来,空间归属需要平台内判断,就用全局 Webhook;如果告警策略本身已经代表某个团队或业务,就用协作空间专属 Webhook。
FAQ
Q1:协作空间和故障是什么关系? A:协作空间是团队处理告警的边界;故障是全局对象,可以跨协作空间协同多个团队。
Q2:所有告警都必须拆到多个协作空间吗? A:不是。小团队或告警量不大的公司,可以先用一个统一协作空间。告警量和团队复杂度上来后,再按团队或业务拆分。
Q3:integration_key 和 channel_id 分别是什么作用?
A:integration_key 用于集成鉴权;channel_id 表示协作空间,带上它就可以把告警直接路由到指定协作空间。
寻求帮助
Flashduty右上角有个视频教程的入口,可以查阅