Thanos--架构-组件-模式

Thanos Query:  实现了 Prometheus API,将来自下游组件提供的数据进行聚合最终返回给查询数据的 client (如 grafana),类似数据库中间件。

Querier是Thanos中负责处理查询请求的组件。它可以从多个数据源(如Thanos Sidecars、Store Gateways、和Thanos Receivers)查询数据,实现了对多个Prometheus实例数据的透明访问。Querier的关键功能是提供一个全局视图,无论监控数据存储在何处,用户都可以通过单一的查询接口获取信息。此外,Querier还支持对查询结果进行去重,确保即使在高可用性部署场景中,相同指标的数据不会被重复计算。

 

存储网关(Store Gateway)

Store Gateway组件使Thanos能够接入长期存储解决方案,如Amazon S3、Google Cloud Storage等,访问历史监控数据。它对外提供与Prometheus兼容的API接口,让Querier能够透明地查询这些长期存储中的数据。Store Gateway通过对存储在对象存储中的数据块进行索引,实现了高效的数据访问,同时还支持对数据进行压缩和分片,以优化存储空间和查询性能。

 

接收器(Receiver)

Receiver组件主要负责接收来自Prometheus的监控数据,并将其写入到长期存储中。它支持接收Prometheus远程写入协议的数据,可以作为一个集中式的数据接收点,汇总来自多个集群的监控数据。Receiver通过实现数据的多副本存储,增强了监控数据的可靠性。此外,Receiver还可以与Thanos Querier结合使用,提供实时监控数据的查询功能。

Compact 压缩降采

Compactor是Thanos中负责处理监控数据压缩和优化的组件。它定期对存储在对象存储中的数据块进行压缩,合并重复的时间序列数据,减少存储占用并提高查询效率。Compactor还负责清理过期的监控数据,实现监控数据的生命周期管理。通过数据去重和压缩,Compactor显著降低了长期存储成本,同时保持了查询性能。

 

边车(Sidecar)

Sidecar组件部署在每个Prometheus服务器旁边,负责实时同步监控数据到对象存储,以实现数据的长期存储。同时,Sidecar还提供了一个查询代理功能,使Querier能够通过它查询Prometheus的实时数据。Sidecar确保了数据的即时可用性和完整性,同时降低了对Prometheus服务器的直接访问需求。

 

规则器(Ruler)

Ruler组件提供了基于时间序列数据的警报规则和数据聚合规则的评估功能。它允许用户定义复杂的查询并在满足特定条件时触发警报。Ruler与Prometheus的规则引擎非常相似,但它可以跨多个Prometheus实例和Thanos组件工作,提供全局的规则评估能力。

 

-----

Sidecar 模式

thanos-sidecar 与prometheus-server共享数据存储目录
exporter的指标数据存储到WAL预写日志 , 每2个小时把WAL合并成一个块,
sidecar把块上传的远端存储中
 
查询
promQL --> thanos-query  --> 去 thanos-store-gateway--> ob-storage  和 sidecar 查询, 最新的2小时数据 sidecar会去 wal日志查询

15

 

---- ---- ----

Ruler 与告警

Ruler 不直接连某个 Prometheus,而是经 Thanos Query 查询(Query 再去连各个 Sidecar / Store Gateway)

这取决于你希望告警是“每集群自治”还是“全局统一”。在你这个场景(5 个集群、Sidecar,Thanos 组件集中部署在 A),最常见、最稳的做法是:

推荐实践:两层告警

1)每个集群的 Prometheus 上放“本集群告警”(强烈推荐)

放在各集群 Prometheus(PrometheusRule)里评估:

  • Node/K8s 组件存活、Pod CrashLoop、CPU/内存/磁盘、本集群 APIServer/etcd/coredns 等
  • 任何“集群网络断了/到 A 不通”的情况下仍能告警
  • 延迟最低、依赖链路最短(Prometheus → 本集群 Alertmanager)

结论:SRE 保障类、集群可用性类告警,一定要“就地评估”。

2)在 A 集群的 Thanos Ruler 上放“全局/跨集群告警”(按需)

在 Thanos Ruler 里评估(Ruler → Thanos Query → 各集群 Sidecar/StoreGW):

  • 跨集群聚合类告警(例如:5 个集群总体错误率、全局 SLO burn rate)
  • 对比/一致性类(A vs B 指标差异)
  • 多集群容量总量、全局 TopN 等
  • 想统一一套规则、统一管理、统一路由的“业务级告警”

结论:跨集群、全局视角的才放 Ruler。

----- ---- -----

Receive模式

  • Prometheus 通过 remote_write 把样本写到 Thanos Receive(Receiver 集群)
  • Receiver:
    • 接收 remote write 写入
    • 写入自己的本地 TSDB(并生成 blocks)
    • 再把 blocks 上传到对象存储
  • 查询侧:
    • Thanos Query 连 Receiver(近实时)+ Store Gateway(历史)

16

 

posted @ 2025-12-26 10:09  lavida2000  阅读(2)  评论(0)    收藏  举报