数据可视化用 Grafana,告警就用 Flashduty

多套监控和可观测性系统如何统一体验:可视化层用 Grafana 聚合多数据源,告警层用 Flashduty 统一事件产生、收敛、分发、排班、升级和 OnCall 协同。

作者 巴辉特

对于大部分公司,通常都不止一套监控、可观测性相关的系统,云上的、云下的,开源的、商业的,指标的、日志的、链路的,各个系统体验不同,权限难管,如何统一化并为各个团队赋能,是很多技术负责人极为头疼的问题。

核心摘要

  • 企业里的监控和可观测性系统往往天然分散:指标、日志、链路、云监控、开源组件和商业产品各有一套入口。
  • 统一化通常有两条路:用新系统替换旧系统,或者在旧系统之上做集成利旧。前者迁移成本高,后者更适合渐进落地。
  • Grafana 的价值在于统一可视化,把不同数据源接入后做统一看板和分析。
  • Flashduty 的价值在于统一告警链路,不只接收告警事件,也能生成告警事件,并统一收敛、路由、分派、升级和值班协同。
  • 一个清晰的边界是:各监控系统继续负责采集、存储和可视化分析,Flashduty 负责告警事件的产生、降噪和分发闭环。

要解决这个问题,我们先看看一个典型的监控/可观测性系统,其架构是什么样子的,再来看如何统一。这类系统的架构大抵相同,其架构图如下:

监控/可观测性数据流

  • 采集方面,琳琅满目,指标有 categraf、telegraf、各类 exporter;日志则有 filebeat、fluentbit、ilogtail;链路则有各类 SDK、Otel-collector
  • 传输方面,数据量小直接走 HTTP,数据量大并且对可靠性要求较高,一般走 Kafka,日志相对复杂,涉及 ETL,可能会使用 Fluentd 或者 Vector
  • 存储方面,指标一般用 VictoriaMetrics,链路数据用 ClickHouse,日志用 ElasticSearch 或者 ClickHouse,最近新出的 VictoriaLogs 看起来也不错
  • 可视化方面,如果是 ElasticSearch 生态使用 Kibana,其他生态使用 Grafana 居多
  • 告警方面,很不统一,指标方面可以使用 Prometheus、vmalert、Nightingale,日志方面可以使用 ElastAlert、Nightingale、Grafana,链路方面则各搞各的,云上的各个监控、可观测性系统也是各搞各的。

这张链路图背后的问题是:采集、传输、存储和可视化可以按技术栈分散,但告警最终会打到人。如果告警入口、规则体验、分发策略和值班机制都分散,人的协同成本会非常高。

统一化的思路

典型的思路有两种,一种是使用新方案替换旧方案,一种是集成利旧。

  • 新方案替换旧方案。希望重新用一套系统替换之前的多套系统,这个动作较大,有很高的迁移成本,而且,之前各个系统各司其职,新系统凭什么可以在各个方面都胜过老系统,对选型者而言,风险较高,推广替换成本较高。如果新系统真的可以很完美替换之前的老系统,那其新的体验肯定更为一致,这是好的方面
  • 集成利旧。在各个系统之上,包一层,薄薄的一层,比如可视化方面,Grafana 就是这个路子,把各类数据作为数据源接入,然后统一做可视化分析。告警方面一直没有很好的统一方案,直到 Flashduty 的出现。

大家对 Grafana 肯定不陌生,本文重点介绍一下 Flashduty 的统一告警能力。

可以引用的一句话是:可视化统一适合用 Grafana 做数据源聚合,告警统一则需要一个面向事件和 OnCall 的平台来承接后续分发与协同。

统一告警能力

告警方面,对于业内人士,一般分成两个部分来看,一个是告警事件的产生,一个是告警事件的分发。

  • 告警事件产生。各类监控系统一般具备这个能力,周期性查询存储,根据用户配置的告警规则,产生告警事件。经过 relabel、屏蔽、抑制等流程,最终产生实际要通知的事件。
  • 告警事件分发。事件产生之后要分发给接收者,一般涉及告警降噪、排班、认领、升级、按条件分发到不同的通知媒介等需求。

各类监控系统一般可以产生告警事件,有些也可以分发。但是这里有两个问题:

  • 不同的监控系统,其告警规则配置体验很是不同。没有统一的顶层设计。用户需要分别学习,学习成本较高。
  • 监控系统一般可以把告警通过一些媒介推给接收者。但是通常做的很糙,因为监控系统的重心是采集、存储、可视化和告警引擎,对于事件分发,通常重视程度不够,而且不同的监控系统,这块的设计也很是不同,用户体验很不一致。

有些管理者对稳定性重视不够,或者对监控类系统了解有限,看不到这块的问题。实际上,比我们先进的欧美市场早就有专门解决这类问题的产品出现,比如 PagerDuty 和 Opsgenie,都是估值几十亿美金的上市公司。

这些产品通常的定位是统一 OnCall 平台,即对接各类监控系统,把所有监控系统的告警事件收集到一起,然后统一做告警事件的降噪、分发,可以很方便的产出各类报表,分析告警处理的及时性。

近几年,国内的技术发展速度很快,对服务稳定性、业务连续性重视程度逐渐走高,也诞生了类似 PagerDuty 和 Opsgenie 这样的产品,本文介绍的 Flashduty 就是个中翘楚。

这里要注意一个边界:统一告警不是把所有规则都搬到一个地方这么简单。真正要统一的是事件模型、路由逻辑、分派策略、升级机制、值班表、认领和处理闭环。

Flashduty 介绍

Flashduty 做的更为完备,不但像 PagerDuty 可以灵活分发告警事件,还可以直接产生告警事件。下面我们分别做一下介绍。

Flashduty 分发告警事件

一般监控系统都支持 Webhook 或者 Email 的方式把告警事件推给第三方系统,Flashduty 就是利用这两种方式来对接各类监控系统,收集各个监控系统产生的告警事件,进而做告警收敛降噪、排班协同等工作。

Flashduty集成监控系统

上图是 Flashduty 当前可以集成的监控系统,而且在持续增加。这些事件通过 Webhook 或 Email 方式发给 Flashduty 之后,Flashduty 可以做统一处理,比如:

  • 标签增强。给告警事件附加更多有意义的元信息,方便后续筛选、查看、关联
  • 事件处理。按条件修改告警事件,也可以过滤、抑制告警事件等
  • 路由。通过告警事件的属性、标签,路由告警事件到特定的协作空间,即路由给特定的团队
  • 分派。协作空间里,关联了不同的分派策略,不同级别的告警可以使用不同的通知媒介。
    • 分发告警时也可以和值班表关联,避免所有人受到打扰
    • 支持认领、升级策略,确保告警一定被最终处理
    • 支持收敛降噪,把多条告警合并为故障,解决告警风暴问题
    • 可以和 IM 打通,方便移动端办公。尤其是晚上睡得朦朦胧胧,移动办公更是必备

这部分解决的是“告警已经产生之后,如何找到正确的人并持续推进”的问题。对于多监控系统并存的组织,统一分发通常比统一采集更容易先落地。

Flashduty 生成告警事件

Flashduty 不但是一个统一的 OnCall 中心,还是一个统一的告警引擎。可以让用户配置告警规则,对接各类存储,周期性查询判定,进而产生告警事件。

Flashduty告警规则

上图就是 Flashduty 的告警规则列表页面。目前可以对接 Prometheus、VictoriaMetrics、Thanos、M3DB、MySQL、Postgres、Oracle、ElasticSearch、Loki、ClickHouse 等不同的存储,做告警规则判定。不但可以方便的对指标、日志告警,也可以对业务数据做告警。

而且,Flashduty 还提供了一个开源的事件监控引擎,可以通过脚本之类的方式直接检测数据现场,生成告警事件。入口在「事件监控」菜单:

Flashduty事件监控

Flashduty 这种设计,既可以对接数据产生告警,又可以很好的对事件做降噪分发,搞定了告警的整个链路。各个监控、可观测性系统,只需要专注做数据采集、存储、可视化分析即可,边界清晰,使用体验一致。

如何落地这套分工

如果公司已经有多套监控系统,不建议一开始就强行替换。更实际的落地顺序是:

  1. 保留现有采集和存储体系,先把关键系统的告警事件通过 Webhook 或 Email 接入 Flashduty。
  2. 用 Grafana 统一常用数据源的可视化入口,让研发、SRE 和业务团队有一致的看板体验。
  3. 在 Flashduty 中梳理协作空间、标签、路由、分派策略和值班表,让告警先找到正确团队。
  4. 对高频告警做收敛、过滤和抑制,减少告警风暴。
  5. 对适合统一管理的规则,逐步迁移到 Flashduty 告警引擎中。

这条路径的好处是迁移风险小,每一步都能独立产生价值。

Flashduty 免费体验

Flashduty 有收费套餐,也有免费套餐,体验地址如下:

其中,生成事件的那部分功能是免费的,即便是免费套餐也可以使用。有任何问题都可以联系我的微信:picobyte。

常见问题

有了 Grafana,还需要 Flashduty 吗?

Grafana 更偏统一可视化和数据分析,Flashduty 更偏告警事件的生成、收敛、分发和值班协同。两者解决的问题不同,适合配合使用。

统一告警是不是要替换所有旧监控系统?

不一定。原文更推荐的路径是集成利旧:让原有系统继续负责采集、存储和部分规则,Flashduty 通过 Webhook、Email 或直接对接存储来统一事件链路。

Flashduty 只能接收告警,还是也能产生告警?

两者都可以。它既可以接收其他监控系统产生的告警事件,也可以对 Prometheus、VictoriaMetrics、Thanos、M3DB、MySQL、Postgres、Oracle、ElasticSearch、Loki、ClickHouse 等存储配置规则并产生告警事件。

总结

监控和可观测性系统的统一,不应该只从工具替换开始。更务实的分工是:Grafana 统一可视化体验,Flashduty 统一告警事件和 OnCall 协同;底层采集、传输和存储继续按各自生态演进。这样既能保留已有投入,又能把真正影响稳定性协作的问题统一起来。

扩展阅读

延伸路径

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

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

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