Prometheus 撑不住了?上 Thanos、Cortex、M3!一篇给你讲明白大规模监控的江湖

简介: Prometheus 撑不住了?上 Thanos、Cortex、M3!一篇给你讲明白大规模监控的江湖

Prometheus 撑不住了?上 Thanos、Cortex、M3!一篇给你讲明白大规模监控的江湖

大家好,我是 Echo_Wish。今天咱聊一个运维人绕不过的现实问题:

业务疯狂长,指标像下雨一样砸进来,Prometheus 单机那点小身板,撑得住吗?

你别说,还真撑不住。

当指标量从几十万级往千万、亿级爬的时候,Prometheus 的痛点会一个接一个地冒出来:

  • 存储爆炸
  • 查询变慢
  • 单点崩溃
  • 多机房聚合困难
  • 长期数据留存压力大

于是,“Prometheus 增强组件三巨头”横空出世:

Thanos、Cortex、M3 —— 三大大规模监控系统的天花板级架构。

今天咱不玩废话,直接告诉你:

  • 它们能解决什么?
  • 哪个更适合你?
  • 架构到底啥样?
  • 怎么落地?
  • 为什么大厂都这么用?

用运维人的口吻总结一句话:

Prometheus 是家用电饭煲;Thanos/Cortex/M3 是工地 50 升大铁锅,炒啥都不怕爆。


一、为什么 Prometheus 在大规模场景下必挂?(痛点先亮出来)

1)存储有限

Prometheus 是本地 TSDB(Time Series Database),磁盘一满直接玩完。

2)横向扩展弱

多台 Prometheus 不共享数据,每个都是孤岛。

3)Cross-cluster 查询很难

跨机房、跨地域做聚合,非常费劲。

4)历史数据成本高

长期数据要么丢,要么手动压缩存 OSS/HDFS,过程痛苦。

5)PromQL 在大规模查询下变慢

业务稍一查全局,Prometheus 就先跪。

所以,大规模监控系统必须满足四个硬指标:

  • 无限扩展
  • 全局查询
  • 多集群合并
  • 长期低成本存储

而这,就是 Thanos、Cortex、M3 出场的理由。


二、三巨头快速对比:一句话总结风格

方案 一句话总结 适用规模
Thanos “给 Prometheus 加外挂”,简单粗暴扩展 中大型、云上、混合环境
Cortex 真·云原生横向扩展 TSDB 超大型、SaaS、百万实例级
M3 Uber 打造的高性能监控引擎 高写入量、极致性能场景

你别被术语吓到,本质只是风格不同:

  • Thanos:最容易上手,最贴近原生 Prometheus。
  • Cortex:最云原生,要依赖对象存储 + 微服务架构。
  • M3:最性能怪兽。

三、Thanos:Prometheus 的“黄金外挂”

为什么最常用?
因为它几乎不用改 Prometheus,把多个 Prom 实例变成一个“超级大 Prom”。

Thanos 核心能力:

  • 聚合多 Prometheus
  • 通过 sidecar 同步数据到对象存储
  • 全局查询
  • 低成本长期存储
  • 高可用

一句话:

原来的 Prom 你别动,我帮你变强。


核心架构长啥样?(简化版)

Prometheus -- Sidecar ----> Thanos Store ----> Object Storage (S3/OSS/COS)
                    \-----> Thanos Query <-----/

Thanos 配置示例(Sidecar)

args:
  - sidecar
  - --prometheus.url=http://127.0.0.1:9090
  - --tsdb.path=/prometheus
  - --objstore.config-file=/etc/thanos/objstore.yaml

Thanos 查询组件示例(Query)

args:
  - query
  - --store=thanos-storegateway:10901
  - --store=sidecar-prom01:10901
  - --store=sidecar-prom02:10901

就这点配置,你的 Prometheus 就从单机小弟升级成集群大佬。


四、Cortex:真正云原生 Prometheus 集群

Cortex 是 CNCF 项目,也是 Grafana 公司主推的方案。

它不像 Thanos 一样“加外挂”,而是:

自己做 TSDB,自己做多租户,自己做水平扩展。

更适合:

  • 多租户 SaaS
  • 云平台
  • 多团队共享监控系统

Cortex 架构的核心关键词:

  • 微服务组件(ingester、querier、distributor…)
  • Ring 管理
  • 对象存储
  • 高可用
  • 分片与副本

写入流程逻辑(伪代码示例)

func ingest(sample) {
   
    hash := hashFunc(sample.seriesID)
    ingester := ring.lookup(hash)
    ingester.append(sample)
}

这“hash 打散”的方式让 Cortex 可以无限横向扩展。

查询流程(简化)

func query(expr) {
   
   shards := distributor.split(expr)
   results := parallel(shards)
   return merge(results)
}

是不是云原生味道很足?

缺点也明显:

  • 组件多
  • 部署复杂
  • 运维门槛高

但只要上规模,你会发现:

比 Thanos 更能扛。


五、M3:性能狂魔的选择(Uber 出品)

M3 是 Uber 为了承受海量监控数据自研的监控系统。

最大的优势就是两个字:

快。稳。

核心特性:

  • M3DB:高性能分布式时序数据库
  • M3Coordinator:查询路由
  • M3Aggregator:预聚合提升性能
  • 自带多机房、强一致、水平扩展

Uber 监控规模你想象不到:

  • 亿级时序
  • 每秒百万+写入

Prometheus 纯靠自己?根本活不下来。


M3 写入 pipeline 示例

m3coordinator:
  listenAddress: 0.0.0.0:7201
  ingestion:
    metrics:
      type: unaggregated
      downsample: true

它会自动做预聚合:

sum(rate(http_requests_total[5m]))

在 M3 中会成为:

http_requests_total__sum_5m

也就是说你 PromQL 执行的时候,系统已经提前聚好了,速度快得飞起。


六、实际业务怎么选?一张表给你拍板

场景 推荐方案 理由
中型企业,Prom 规模几十台 Thanos 简单好用,几乎无迁移成本
大型企业,多租户、百万指标规模 Cortex 真正云原生扩展能力强
超高写入场景(金融/出行/广告) M3 写入量大、延迟要求高
快速上线低成本方案 Thanos 低门槛
云原生平台/容器平台 Cortex 最灵活易扩展
单地域但数据量大 Thanos 或 M3 看需求:功能 vs 性能

我一般建议:

  • 先上 Thanos,易用性最高。
  • 如果 Prom 集群已经 100+、指标量亿级,就考虑 Cortex。
  • 如果写入量炸裂,就上 M3。

七、我的实战感受:别迷信单一方案,混搭往往更香

有一段时间我们做集群监控,非常典型的情况:

  • Kubernetes + Prometheus Operator
  • 多集群 Prometheus 抓指标
  • Thanos 做全局聚合和长期存储
  • 一部分高写入指标走 M3 做实时监控

你没看错:

监控系统不是非黑即白,不同特点的指标应该用最适合的存储。

例如:

  • Pod 指标 → Thanos(易查、结构化)
  • 网关 QPS、业务流量 → M3(大量高频)
  • SaaS 多租户指标 → Cortex

这是很多大厂真正的落地方式。


八、总结:大规模 Prometheus 架构不是选谁,而是选适合你业务的扩展方式

如果你问我一句话怎么总结:

Thanos 是 Prometheus 的“外挂增强版”,Cortex 是 Prometheus 的“云原生集群版”,M3 是 Prometheus 的“性能爆炸版”。

想上大规模监控,关键不是工具本身,而是:

  • 吞吐量到底多大
  • 查询模式有没有全局需求
  • 是否多租户
  • 有几个机房
  • 是否需要长期存储
  • 团队有没有能力维护复杂系统
目录
相关文章
|
3月前
|
弹性计算 运维 API
用错工具比没工具更可怕:Ansible vs Terraform 实战对比,用最接地气的方式讲清楚
用错工具比没工具更可怕:Ansible vs Terraform 实战对比,用最接地气的方式讲清楚
353 22
|
存储 Prometheus 监控
高可用prometheus集群方案选型分享
高可用prometheus集群方案选型分享
7547 2
高可用prometheus集群方案选型分享
|
弹性计算 Cloud Native 云计算
云计算|云计算的一些基础概念(HCS和OpenStack)
云计算|云计算的一些基础概念(HCS和OpenStack)
2552 0
|
JavaScript 前端开发 数据安全/隐私保护
VUE3实现全局水印功能
watermark-js-plus 是一个用于给图片添加水印的 JavaScript 库。它提供了一个简单的方式来在图片上添加文字水印、图片水印或自定义水印。
1224 0
|
3月前
|
搜索推荐 Java 关系型数据库
基于Android的在线音乐个性化推荐APP系统
本研究聚焦数字时代下在线音乐个性化推荐APP的开发,探讨其背景、意义与技术实现。面对海量音乐内容带来的发现难题,结合Android Studio、Java、SpringBoot与MySQL等技术,构建智能推荐系统,提升用户体验与平台价值,推动音乐产业数字化发展。
|
3月前
|
存储 分布式计算 数据库
ETL vs ELT:到底谁更牛?别被名字骗了,这俩是两种世界观
ETL vs ELT:到底谁更牛?别被名字骗了,这俩是两种世界观
179 12
|
2月前
|
人工智能 数据可视化 API
看完《疯狂动物城》心痒痒?试试ComfyUI,让朱迪和尼克走进你的画布
看完《疯狂动物城》意犹未尽?用ComfyUI+Flux文生图模型,让朱迪和尼克跃然纸上!通过节点式工作流精准控制生成细节,还原动画级质感。毛发、表情、服饰皆栩栩如生,支持风格定制与角色一致性强的图像创作。无需高配硬件,Lab4AI平台一键部署,轻松实现你的创意构想。Anyone can create anything!
563 1
看完《疯狂动物城》心痒痒?试试ComfyUI,让朱迪和尼克走进你的画布
|
2月前
|
存储 SQL 大数据
分布式存储三国杀:对象存储 vs HDFS vs 列式存储,到底该怎么选?
分布式存储三国杀:对象存储 vs HDFS vs 列式存储,到底该怎么选?
185 3
|
存储 前端开发 数据可视化
Grafana Loki,轻量级日志系统
本文介绍了基于Grafana、Loki和Alloy构建的轻量级日志系统。Loki是一个由Grafana Labs开发的日志聚合系统,具备高可用性和多租户支持,专注于日志而非指标,通过标签索引而非内容索引实现高效存储。Alloy则是用于收集和转发日志至Loki的强大工具。文章详细描述了系统的架构、组件及其工作流程,并提供了快速搭建指南,包括准备步骤、部署命令及验证方法。此外,还展示了如何使用Grafana查看日志,以及一些基本的LogQL查询示例。最后,作者探讨了Loki架构的独特之处,提出了“巨型单体模块化”的概念,即一个应用既可单体部署也可分布式部署,整体协同实现全部功能。
4707 69
Grafana Loki,轻量级日志系统