背景
现状
某司概况:
- PaaS/SaaS 公司,业务面向全球,包括 东南亚/南亚/中东/欧洲/非洲/美洲/东亚...
- 生产 k8s 集群数十套,生产非生产 >100 套(多种集群类型,各种公有云/专有云/私有云/数据中心...)
- 疫情以来,持续推进成本优化。
某司监控概况,由于历史原因和出于成本考虑:
- 基于 原生 Prometheus 深度定制+自研部分 exporter/sd, 没用使用 kube-prometheus-stack(不兼容,成本会增加)
- 监控覆盖:k8s/pod/各类中间件/微服务/url...
- 每个集群一套 Prometheus 监控
- 监控所占用的计算存储等资源受限
- 监控部署方式:ansible 安装监控组件及后续使用 jenkins devops CI/CD 的自动发布
综上,监控可以称得上:
- 全球化的
- 大规模的
- 混合云的
- Kubernetes 的
- 低成本监控
问题
近期因监控覆盖不足(具体为某集群缺少了 url 监控部分的配置)导致告警漏报,对此进行了深入复盘,核心问题可归纳为两点:
- 缺乏唯一可信配置来源,各集群监控配置分散,存在版本不一致、规则遗漏等问题;
- 手动操作导致配置漂移,无法实时同步全球集群状态,故障预警能力受限。
为避免此类问题再次发生,规划改进如下:
采用 GitOps(Git 作为唯一事实来源)+ Prometheus Operator 为核心的标准化监控架构,具体方案如下:
一、问题根源与改进方向
当前挑战
- 碎片化管理:全球数百套集群的 Prometheus 监控配置部分仍依赖人工维护,易出现规则遗漏、阈值不统一。
- 手动管理风险:手动管理监控组件和监控配置和阈值,存在过期或误配置隐患(如近期故障)。
- 监控数据噪音:因配置不一致,告警误报/漏报频发,影响故障响应效率。
目标方案
- 唯一事实来源(Single Source of Truth):通过 Git 仓库统一管理所有监控配置(Prometheus 规则、ServiceMonitor、AlertManager 等),消除人工干预。
- GitOps 自动化同步 (reconcile) 与自愈:利用 ArgoCD 等相关 GitOps 专业工具实现配置实时同步,确保集群状态与 Git 声明一致。
- 集中式可观测性:通过 Prometheus Operator 标准化部署,如有必要,后续可以考虑结合 Thanos/Cortex/Mimir 实现跨集群监控数据聚合。
二、技术实现路径
GitOps (Git 作为唯一事实来源) 的标准化流程
- GitOps:将所有监控资源(Prometheus CRD、Grafana 仪表盘)存储在 Git 仓库,版本控制+Code Review 机制保障变更可追溯。
- 自动化同步 (reconcile):通过 ArgoCD 等相关 GitOps 专业工具监听 Git 仓库变更,自动推送至各集群,避免人工误操作(这里参考了红帽 OpenShift GitOps 最佳实践)。
- 紧急修复流程:任何生产变更必须通过 Git 提交,仅允许 Git 仓库作为修改入口,杜绝“临时补丁”。
Prometheus Operator 强化能力
- 统一部署模板:使用 Helm Chart 封装 Prometheus Stack(AlertManager、BlackBox 等),确保各集群版本与配置一致。
- 动态服务发现:通过 ServiceMonitor 自动识别微服务端点,避免手动添加 Exporter 导致的遗漏。
三、预期收益
- 降低运维风险:配置漂移减少 90%以上,监控组件/阈值/配置实现全自动化管理。
- 提升故障响应:通过集中告警视图与标准化规则,MTTD(平均故障检测时间)缩短 50%。
- (待定)成本优化:避免重复开发监控组件,资源利用率提升 30%(通过 Prometheus 联邦集群优化数据存储,如 Thanos/Cortex/Mimir 等)。
四、后续计划
- 试点推进:计划先搭建一个临时环境,进行一段时间的 PoC 验证,输出标准化模板及自动化流水线。
全球推广:
- 监控专用管理集群搭建。
- 分阶段迁移至 GitOps(Git 作为唯一事实来源) + Prometheus Operator 体系,考虑到规模较大,预计需要持续投入。
- 培训与协同:组织团队内部分享会,同步 GitOps(Git 作为唯一事实来源)+ Prometheus Operator 协作规范(分支策略、项目结构策略、Review 流程等)。
📚️ 参考文档
- OpenShift GitOps Recommended Practices | Red Hat Developer
- Lightning Talk: Best Practices on Organizing GitOps Repositories - Konstantinos Kapelonis, Codefresh
三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。