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

举报
Echo_Wish 发表于 2025/11/30 21:24:37 2025/11/30
【摘要】 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 的“性能爆炸版”。

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

  • 吞吐量到底多大
  • 查询模式有没有全局需求
  • 是否多租户
  • 有几个机房
  • 是否需要长期存储
  • 团队有没有能力维护复杂系统
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。