Flashduty协作空间的设计逻辑和路由逻辑

Flashduty 协作空间用于按团队或业务隔离告警处理。本文说明协作空间设计逻辑、故障升级逻辑,以及全局 Webhook 和协作空间专属 Webhook 两种告警路由方式。

作者 秦晓辉@快猫星云

协作空间是 Flashduty 中一个重要概念。很多客户刚开始使用时,会把它理解成一个简单的告警列表,但它实际承担的是“团队级告警处理边界”和“路由入口”的职责。

本文用两个典型问题说明协作空间的设计逻辑:

  • 告警进来以后,应该进入哪个团队的处理空间?
  • 当一个告警需要多个团队协作时,应该如何升级为故障?

核心要点

  • 协作空间通常按团队或业务划分,用于避免所有告警混在一个页面里处理。
  • 故障是全局对象,可以横跨多个协作空间,用来承载跨团队协同。
  • 全局 Webhook 适合统一接入后再通过订阅规则路由;协作空间专属 Webhook 适合在告警策略层面已经明确归属空间的场景。
  • Webhook 地址中的 integration_key 用于集成鉴权,channel_id 用于直接指定协作空间。

协作空间设计逻辑

简单来讲:公司每天可能产生数千条告警,如果放到一个页面处理就太混乱了。通常会以团队粒度划分协作空间,让不同团队的告警互不干扰。

团队成员可以关联 OnCall 值班表,只有值班的时候处理告警,其他时间就可以专注干一些长线的事情。

当然,如果公司业务相对比较小,所有的告警都发到一个统一的协作空间来处理,也是可以的。

团队规模/场景 协作空间划分建议
小团队、告警量不大 可以先使用一个统一协作空间
多业务线、多运维团队 按团队或业务线划分协作空间
多地机房或多环境 可以结合团队、环境、机房等维度设计空间

故障升级逻辑

另外,如果我的协作空间中收到一个告警,比如我的服务调用第三方服务不通了,原因可能是网络问题,也可能是第三方服务问题。此时需要多个团队协同处理,单个协作空间就不够用了。

为此,Flashduty 引入了故障概念。可以把服务调用不通的告警事件升级为故障,然后拉其他团队的人进来一起处理。大家可以在这个故障下面发表评论、贡献排查线索、附加止损手段等。

故障是全局的,是横跨所有协作空间的。

告警事件路由逻辑

一般监控系统都支持Webhook和第三方系统对接,Flashduty就是利用各个监控系统的Webhook机制和这些监控系统对接。比如夜莺来举例,有两个地方可以配置Webhook,一个是全局的、一个是告警规则级别的。我们分别介绍一下这个逻辑。

全局Webhook

首先去Flashduty的集成中心,创建一个夜莺的集成:

Flashduty-创建夜莺集成

给集成起个名字,比如“测试环境的夜莺”,创建成功之后点击这个集成,可以看到详情页面,详情里有接口地址,一个类似于下面的地址:

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

注意,这个地址中有个参数integration_key,起到了鉴权的作用。然后把这个地址配置到夜莺的全局Webhook中就可以了,告警事件就可以推上来了。

但是,告警事件虽然上来了,应该进入哪个协作空间呢?这就需要在各个协作空间配置订阅规则,订阅自己感兴趣的告警事件,整个逻辑如下图:

Flashduty-推送方式

全局 Webhook 的特点是“先统一接入,再按规则订阅”。它适合告警源比较统一、但告警归属需要在 Flashduty 内部根据标签或规则再判断的场景。

告警策略里的Webhook

另一种接入方式是使用告警策略里的Webhook,既然是告警策略里的Webhook,理论上,这个策略触发的告警我们是知道应该交由哪个协作空间来处理。所以,直接去协作空间下面创建专属集成就可以了,如图:

Flashduty-协作空间详情

专属集成的url长成下面这样:

https://api.flashcat.cloud/event/push/alert/n9e?integration_key=xx&channel_id=yy

多了一个channel_id参数,channel就是协作空间的意思,相当于推送告警的时候直接就路由到这个协作空间,无需配置订阅规则了,整个逻辑如下图所示:

Flashduty-推送方式二

专属 Webhook 的特点是“推送时直接指定协作空间”。它适合在告警策略层面已经明确归属团队的场景,配置更直接,也不需要再依赖协作空间订阅规则。

两种路由方式怎么选

路由方式 Webhook 地址特征 适合场景
全局 Webhook 只有 integration_key 告警先统一接入,再按订阅规则分发到协作空间
协作空间专属 Webhook 同时包含 integration_keychannel_id 告警策略已经知道归属空间,推送时直接路由

选择标准很简单:如果告警源只负责把事件推上来,空间归属需要平台内判断,就用全局 Webhook;如果告警策略本身已经代表某个团队或业务,就用协作空间专属 Webhook。

FAQ

Q1:协作空间和故障是什么关系? A:协作空间是团队处理告警的边界;故障是全局对象,可以跨协作空间协同多个团队。

Q2:所有告警都必须拆到多个协作空间吗? A:不是。小团队或告警量不大的公司,可以先用一个统一协作空间。告警量和团队复杂度上来后,再按团队或业务拆分。

Q3:integration_keychannel_id 分别是什么作用? A:integration_key 用于集成鉴权;channel_id 表示协作空间,带上它就可以把告警直接路由到指定协作空间。

寻求帮助

Flashduty右上角有个视频教程的入口,可以查阅

延伸路径

继续看解决方案和产品对比

如果你正在做监控、可观测性或故障定位相关选型,建议从解决方案和产品对比继续往下看。

标签 Flashduty
快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云