背景

现状

  1. 某司概况:

    1. PaaS/SaaS 公司,业务面向全球,包括 东南亚/南亚/中东/欧洲/非洲/美洲/东亚...
    2. 生产 k8s 集群数十套,生产非生产 >100 套(多种集群类型,各种公有云/专有云/私有云/数据中心...)
    3. 疫情以来,持续推进成本优化。
  2. 某司监控概况,由于历史原因和出于成本考虑:
    1. 基于 原生 Prometheus 深度定制+自研部分 exporter/sd, 没用使用 kube-prometheus-stack(不兼容,成本会增加)
    2. 监控覆盖:k8s/pod/各类中间件/微服务/url...
    3. 每个集群一套 Prometheus 监控
    4. 监控所占用的计算存储等资源受限
    5. 监控部署方式:ansible 安装监控组件及后续使用 jenkins devops CI/CD 的自动发布

综上,监控可以称得上:

  1. 全球化的
  2. 大规模的
  3. 混合云的
  4. Kubernetes 的
  5. 低成本监控

问题

近期因监控覆盖不足(具体为某集群缺少了 url 监控部分的配置)导致告警漏报,对此进行了深入复盘,核心问题可归纳为两点:

  1. 缺乏唯一可信配置来源,各集群监控配置分散,存在版本不一致、规则遗漏等问题;
  2. 手动操作导致配置漂移,无法实时同步全球集群状态,故障预警能力受限。

为避免此类问题再次发生,规划改进如下:

采用 GitOps(Git 作为唯一事实来源)+ Prometheus Operator 为核心的标准化监控架构,具体方案如下:

一、问题根源与改进方向

  1. 当前挑战

    • 碎片化管理:全球数百套集群的 Prometheus 监控配置部分仍依赖人工维护,易出现规则遗漏、阈值不统一。
    • 手动管理风险:手动管理监控组件和监控配置和阈值,存在过期或误配置隐患(如近期故障)。
    • 监控数据噪音:因配置不一致,告警误报/漏报频发,影响故障响应效率。
  2. 目标方案

    • 唯一事实来源(Single Source of Truth):通过 Git 仓库统一管理所有监控配置(Prometheus 规则、ServiceMonitor、AlertManager 等),消除人工干预。
    • GitOps 自动化同步 (reconcile) 与自愈:利用 ArgoCD 等相关 GitOps 专业工具实现配置实时同步,确保集群状态与 Git 声明一致。
    • 集中式可观测性:通过 Prometheus Operator 标准化部署,如有必要,后续可以考虑结合 Thanos/Cortex/Mimir 实现跨集群监控数据聚合。

二、技术实现路径

  1. GitOps (Git 作为唯一事实来源) 的标准化流程

    • GitOps:将所有监控资源(Prometheus CRD、Grafana 仪表盘)存储在 Git 仓库,版本控制+Code Review 机制保障变更可追溯。
    • 自动化同步 (reconcile):通过 ArgoCD 等相关 GitOps 专业工具监听 Git 仓库变更,自动推送至各集群,避免人工误操作(这里参考了红帽 OpenShift GitOps 最佳实践)。
    • 紧急修复流程:任何生产变更必须通过 Git 提交,仅允许 Git 仓库作为修改入口,杜绝“临时补丁”。
  2. Prometheus Operator 强化能力
    • 统一部署模板:使用 Helm Chart 封装 Prometheus Stack(AlertManager、BlackBox 等),确保各集群版本与配置一致。
    • 动态服务发现:通过 ServiceMonitor 自动识别微服务端点,避免手动添加 Exporter 导致的遗漏。

三、预期收益

  1. 降低运维风险:配置漂移减少 90%以上,监控组件/阈值/配置实现全自动化管理。
  2. 提升故障响应:通过集中告警视图与标准化规则,MTTD(平均故障检测时间)缩短 50%。
  3. (待定)成本优化:避免重复开发监控组件,资源利用率提升 30%(通过 Prometheus 联邦集群优化数据存储,如 Thanos/Cortex/Mimir 等)。

四、后续计划

  1. 试点推进:计划先搭建一个临时环境,进行一段时间的 PoC 验证,输出标准化模板及自动化流水线。
  2. 全球推广
    1. 监控专用管理集群搭建。
    2. 分阶段迁移至 GitOps(Git 作为唯一事实来源) + Prometheus Operator 体系,考虑到规模较大,预计需要持续投入。
  3. 培训与协同:组织团队内部分享会,同步 GitOps(Git 作为唯一事实来源)+ Prometheus Operator 协作规范(分支策略、项目结构策略、Review 流程等)。

️ 参考文档

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

关于全球化大规模混合云 Kubernetes Prometheus 监控体系标准化及 GitOps 自动化改进方案的更多相关文章

  1. 如何优雅地使用云原生 Prometheus 监控集群

    作者陈凯烨,腾讯云前端开发工程师.负责 TKE 集群,弹性集群和云原生监控等模块控制台开发. 概述 Prometheus 是一套开源的系统监控报警框架.2016 年,Prometheus 正式加入 C ...

  2. 1021 docker prometheus监控体系

    jmeter plugin监控的信息很少,只有cpu.内存.网络IO,但这些是不够的.例如对于分析mysql数据库的慢查询.最大连接数等更加细密度的信息. 服务端稳定测试的三个前提: 1.应用级别的自 ...

  3. Prometheus 监控 Redis 集群的正确姿势

    Prometheus 监控Redis的正确姿势(redis集群) Prometheus 监控 Redis cluster,其实套路都是一样的,使用 exporter. exporter 负责采集指标, ...

  4. kubernetes之监控Operator部署Prometheus(三)

    第一章和第二章中我们配置Prometheus的成本非常高,而且也非常麻烦.但是我们要考虑Prometheus.AlertManager 这些组件服务本身的高可用的话,成本就更高了,当然我们也完全可以用 ...

  5. 如何用Prometheus监控十万container的Kubernetes集群

    概述 不久前,我们在文章<如何扩展单个Prometheus实现近万Kubernetes集群监控?>中详细介绍了TKE团队大规模Kubernetes联邦监控系统Kvass的演进过程,其中介绍 ...

  6. Kubernetes集群部署史上最详细(二)Prometheus监控Kubernetes集群

    使用Prometheus监控Kubernetes集群 监控方面Grafana采用YUM安装通过服务形式运行,部署在Master上,而Prometheus则通过POD运行,Grafana通过使用Prom ...

  7. prometheus(2)之对kubernetes的监控

    prometheus服务发现 1.基于endpoints的service注释服务自动发现. 2.基于pod注释的服务自动发现 3.基于consul注册的服务自动发现 4.手动配置服务发现 5.push ...

  8. kubernetes之监控Prometheus实战--prometheus介绍--获取监控(一)

    Prometheus介绍 Prometheus是一个最初在SoundCloud上构建的开源监控系统 .它现在是一个独立的开源项目,为了强调这一点,并说明项目的治理结构,Prometheus 于2016 ...

  9. Prometheus监控学习笔记之解读prometheus监控kubernetes的配置文件

    0x00 概述 Prometheus 是一个开源和社区驱动的监控&报警&时序数据库的项目.来源于谷歌BorgMon项目.现在最常见的Kubernetes容器管理系统中,通常会搭配Pro ...

  10. Kubernetes容器集群管理环境 - Prometheus监控篇

    一.Prometheus介绍之前已经详细介绍了Kubernetes集群部署篇,今天这里重点说下Kubernetes监控方案-Prometheus+Grafana.Prometheus(普罗米修斯)是一 ...

随机推荐

  1. MySQL5.7x 主从复制

    原文链接:https://blog.liuzijian.com/post/9f8ede8e-26de-75d6-6347.html 在MySQL中,主从复制(Master-Slave Replicat ...

  2. 低成本高可用方案!Linux系统下SQL Server数据库镜像配置全流程详解

    低成本高可用方案!Linux系统下SQL Server数据库镜像配置全流程详解 背景 最近遇到一个客户需求,客户的生产环境有大量的SQL Server数据库(大概180套),客户的诉求是需要把生产环境 ...

  3. 利用Python开发Exporter,集成Prometheus和Grafana对进程监控

    利用Python开发Exporter,集成Prometheus和Grafana对进程监控 在现代软件开发和运维中,监控是确保系统稳定运行和快速响应问题的重要手段.Prometheus和Grafana的 ...

  4. 动态编译 Java 的神器 Liquor v1.3.10 发布

    Liquor 是一个开源的轻量级 Java 动态编译器(零依赖,40KB),它可以在运行时编译 Java 字符串代码片段.类.方法等. 源码地址:https://gitee.com/noear/liq ...

  5. [ZJOI2019] 语言 题解

    不愧是 \(ZJOI\),<最可做的一道题>都让人一头雾水-- 首先将问题转化到链上. 可以将总共的组数转化为每个点可以到达的城市. 明显给每个点建一棵动态开点线段树,维护可以和他通商的点 ...

  6. Thymeleaf 嵌套循环

    <label th:each="role:${roles}" class="check-box"> <input th:each=" ...

  7. ruoyi-vue axios通过接口请求wav、mp3音频二进制数据

    实现方式 在axios请求中注明responseType: 'blob',headers的Accept: 'audio/wav'不清楚要不要写,我加上了(请求接口) 在接口返回值中,使用Blob的构造 ...

  8. SignalR 外部调用自定义Hub类的方法,Clients为null

    这是因为外部调用的类的对象和你连接的Hub类的对象,这两个对象 不!一!样! 解决方法 在自定义的Hub类中,注入IHubContext对象,然后在方法中调用IHubContext对象来向前端推送数据 ...

  9. PIP 换源:提升 Python 包安装速度的秘诀

    一.引言 在使用 Python 进行开发时,我们经常需要通过 pip 命令安装各种库和依赖.然而,默认的源可能会因为网络原因导致下载速度缓慢,影响开发效率.这时候,换源就成为了一个非常实用的技巧. 二 ...

  10. Task VS ValueTask

    在 C# 中,异步编程是构建响应式应用程序的基础.Task 是表示异步操作的首选类型.但是,在某些高性能场景中,与 Task 相关的开销可能会达到一个瓶颈.ValueTask 是 .NET Core ...