极豆科技夜莺监控实践:20 个 K8s 集群统一监控与告警治理

极豆科技分享基于夜莺(Nightingale)的统一监控落地实践:面对 20 个 Kubernetes 集群的监控碎片化,用夜莺替代多套 Prometheus+Grafana,实现多数据源接入、告警动态路由与智能抑制,故障定位时间缩短至 15 分钟内,告警误报率下降 76%。含选型对比、架构设计与告警治理经验。

作者 极豆科技

夜莺项目开源地址:https://github.com/ccfos/nightingale 欢迎收藏,欢迎分享您的落地案例。

极豆科技在 20 个 Kubernetes 生产集群中落地夜莺(Nightingale),把原本分散在多套 Prometheus、Grafana、Alertmanager 中的监控和告警能力收敛到统一平台。核心目标不是简单替换工具,而是解决多集群告警规则分散、跨集群排障低效、多 IM 通知配置混乱和告警重复处理的问题。

核心要点

  • 业务规模:20 个 Kubernetes 生产集群,其中自营业务集群 5 个、客户托管代维集群 15 个。
  • 原有问题:每个集群独立部署 Prometheus + Grafana + Alertmanager,规则、图表、通知和排障入口割裂。
  • 选型结果:采用夜莺统一接入 Prometheus 和 VictoriaMetrics 等数据源,集中管理告警规则、通知渠道和业务组权限。
  • 治理方式:基于 cluster 标签做动态路由,结合内部告警分发平台进行聚合降噪和 IM 卡片通知。
  • 实践效果:正文中记录的效果包括故障定位时间缩短至 15 分钟内、告警误报率下降 76%、关键告警到达率 100%。

公司和业务介绍

极豆科技成立于2014年,站在车企立场,立足产业创新,为车企提供汽车座舱AI及数字化解决方案,提升汽车智能化水平和用户体验,挖掘用户全生命周期价值,赋能车企数字化转型。深耕产业10年,成为众多豪华、合资、自主、新势力等车企Tier1供应商,凭借在行业认知、车企客户资源、数据规模、应用场景等方面的优势,基于多家车企超1000万车辆和用户数据,使用行业领先模型,并对基础模型进行训练和微调,研发一系列座舱大模型应用产品和服务,针对不同场景和用户需求,生成文本、知识库、语音、图像、视频以及多模态的内容,提升座舱智能化体验。

背景与痛点:监控体系的“碎片化”危机

在业务快速扩张过程中,我们管理着 20 个 Kubernetes 生产集群,其中自营业务 Kubernetes 集群 5 个,客户托管代维集群 15 个。早期每个集群均独立部署监控体系:

  • 每套集群部署 Prometheus + Grafana + Alertmanager,告警规则散落在各套集群中,管理不便,也不方便后续的统一分析、治理
  • 部分客户也需要自己的告警接收媒介,存在一条告警需要同时进入多个 IM 的情况,且不同告警需要分级处理。

这种模式很快暴露出以下问题:

问题类型 具体表现
资源浪费 每套Prometheus需要一定资源
配置割裂 告警规则在每个Alertmanager中独立维护,版本差异率达35%
管理黑洞 跨集群故障排查需切换每个Grafana实例,浪费定位问题时间
消息壁垒 告警无交互式操作,存在多人都去处理排查一个告警
配置紊乱 部分客户需要在其对应的IM中得到重要告警通知,导致配置十分紊乱

选型思考:为什么是夜莺(Nightingale)?

我们对比了三大技术路线。选型重点不是单点功能,而是是否能支撑多 Kubernetes 集群、多数据源、多团队权限和多通知渠道的统一治理。

方案 优势 劣势 评分
Thanos 原生云原生,适合超大规模 部署复杂度高,学习曲线陡峭;国内使用较少 ★★☆
Zabbix + Grafana 成熟稳定,社区支持广 K8s监控能力弱,主要侧重设备监控 ★★
夜莺 多数据源、多集群支持,告警通知灵活 最初由滴滴开源,非国际大厂出品 ★★★★★

关键决策因素:

  1. 成本效率

    • 夜莺单集群可对接多数据源,替代原来每套 K8s 独立的监控体系,统一管理
    • 资源消耗降低,监控系统本身的运维成本降低
    • 与 Prometheus 相同的数据传输协议,既可以接收 Remote Write 数据上报,也可以主动抓取业务暴露的 /metrics 数据
    • 内置 业务组权限隔离,满足独立运维需求,各个团队可以分别管理自己规则、仪表盘,省的啥事都来找我们团队
  2. 告警治理能力

    • 动态路由:基于 cluster 标签自动分发告警,每个 K8s 集群的数据都统一带上 cluster 标签
    • 智能抑制:避免 K8s 节点宕机时产生数百条重复告警,这里用 AI 写了一个简单的告警聚合降噪模块,除了夜莺的告警之外,也一并处理公司内部其他监控系统、安全系统产生的告警事件,统一降噪分发
    • 交互式操作:支持在国内主流 IM 中屏蔽告警,夜莺所有的操作都提供 API,使用 API 即可完成屏蔽,可以短期屏蔽一段时间,也可以周期性屏蔽

最终架构:统一监控平台的落地实践

落地时,我们先把所有数据源接入夜莺。部分 Prometheus 直接作为数据源接入;对于有聚合分析需求的场景,则在 Prometheus 配置 Remote Write 写入 VictoriaMetrics,再把 VictoriaMetrics 作为数据源接入夜莺。

Nightingale DataSource Integrations

夜莺的核心职能:

模块 职能 业务价值
数据接入层 聚合多集群指标,相当于一个 Pushgateway 网关 消除跨集群查询门槛,故障定位时间缩短至15分钟内
告警引擎 基于标签的动态路由(如cluster=shanghai → 上海值班组) 告警误报率下降76%,关键告警到达率100%
可视化告警配置 可以在图形化页面配置告警,支持导入导出功能,可列出活跃告警 降低使用告警规则使用门槛,各团队自助操作
多消息通知渠道 可以通知企业微信,钉钉,飞书等国内主流IM渠道 客户用哪个 IM 都可以收到告警,避免配置文件中进行配置

夜莺除了支持 Prometheus、VictoriaMetrics 的告警,也支持 ElasticSearch、Loki 等日志源的告警。上了夜莺之后,我们就下掉了 ESAlert(原本用于 ElasticSearch 的告警),使用一个平台统一管理。

但是夜莺不支持 SkyWalking 的告警,我们就做了一个统一的告警分发中心,同时接收夜莺、SkyWalking、Falco 的告警,做告警聚合降噪。在这个项目中我参考了 Flashduty 和博哥爱运维的大监控告警中心项目,在此致谢。

统一告警分发平台的架构图如下:

统一告警分发平台

告警事件由夜莺产生,做一些 Pipeline 二次处理,然后回调我们的统一告警分发平台(内部叫“谛听”),谛听生成 IM 卡片,流程图如下:

系统交互图

最终的效果图如下:

告警效果图-1 告警效果图-2

落地经验

这次实践的关键,不只是把多个数据源接到夜莺,而是先统一标签和告警入口。cluster 标签承担了多集群路由的核心作用;夜莺的业务组权限隔离,让不同团队可以自助维护自己的规则和仪表盘;内部告警分发平台则补齐了跨夜莺、SkyWalking、Falco 的统一降噪和 IM 卡片交互。

对多 Kubernetes 集群团队来说,建议优先处理三件事:

  1. 统一标签模型:至少保证 cluster、业务、环境、负责人等标签稳定。
  2. 统一告警入口:先让告警进入同一个平台,再做路由、抑制和升级。
  3. 统一通知体验:把客户和团队使用的 IM 渠道抽象成通知策略,而不是散落在各个配置文件中。

未来计划和期望

  • 夜莺支持 opensearch 日志数据源,目前在逐步使用夜莺聚合多个日志数据源的告警。
  • 希望夜莺具备更多 AI 的能力,比如自然语言转 promql、自动定位根因等。

FAQ

Q1:极豆科技为什么没有继续维护每个集群独立的 Prometheus + Grafana + Alertmanager? A:独立维护会导致规则版本、排障入口、通知配置和权限管理分散。集群数量达到 20 个后,统一治理的收益明显高于继续复制单集群监控栈。

Q2:夜莺在这个方案中替代了哪些能力? A:夜莺承担多数据源接入、告警规则管理、可视化配置、多消息通知和业务组权限隔离等能力。原本用于 ElasticSearch 告警的 ESAlert 也被统一平台替代。

Q3:为什么还要建设内部告警分发平台? A:夜莺统一了大部分监控告警,但 SkyWalking、Falco 等来源还需要统一接入、聚合降噪和 IM 卡片交互。因此内部平台用于承接多来源告警的二次处理和分发。

总结

极豆科技的实践说明,多 Kubernetes 集群监控的难点不只是采集数据,而是规则、标签、通知和处理流程的统一。夜莺提供了统一监控和告警治理底座,内部告警分发平台进一步补齐跨系统聚合降噪能力,两者结合后,才能把分散的集群监控变成可协同的统一运维平台。

夜莺项目开源地址:https://github.com/ccfos/nightingale 欢迎收藏。

延伸路径

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

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

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