Prometheus集群介绍-1 (2)

如果我们现在有多个集群,并希望他们的监控数据存储到一起,可以进行聚合查询,用上述部署方案显然是不够的,因为上述方案中的Prometheus只能识别出本集群内的被监控目标,即服务发现无法跨集群。另外就是网络限制,多个集群之间的网络有可能是不通的,这就使得即使在某个集群中知道另一个集群的target地址,也没法去抓取数据。总结多集群的特点主要有:

服务发现隔离

网络隔离

那只用Prometheus能解决吗?

答案其实是能,用联邦。

Prometheus支持拉取其他Prometheus的数据到本地,称为联邦机制。这样我们就可以在每个集群内部署一个Prometheus,再在他们之上部署一个Top Prometheus,用于拉取各个集群内部的Prometheus数据进行汇总。

Prometheus集群介绍-1

联邦的问题在哪?

联邦的方案其实也是社区所认可的,在集群规模普遍较小,整体数据量不大的情况下,联邦的方案部署简单,理解成本低,没有其他组件的引入,是一个很不错的选择。
但是联邦也有其问题。由于所有数据最终都由Top Prometheus进行存储,当总数据量较大的时候,Top Prometheus的压力将增大,甚至难抗重负,另外,每个集群中的Prometheus实际上也会保存数据(Prometheus2.x 不支持关闭本地存储),所以实际上出现了数据无意义冗余。总结而言,联邦的问题主要是。

Top Prometheus压力大

数据有无意义冗余

4.用Thanos实现多集群监控 Thanos简介

Thanos 是一款开源的Prometheus 高可用解决方案,其支持从多个Prometheus中查询数据并进行汇总和去重,并支持将Prometheus本地数据传送到云上对象存储进行长期存储。官方架构图如下:

Prometheus集群介绍-1

Query: query代理Prometheus作为查询入口,他会去所有Prometheus,Store, 以及 Ruler查询数据,汇总并去重。

Sidecar:将数据上传到对象存储,也负责接收Thanos query的查询请求。

Ruler:进行数据的预聚合及告警。

Store:负责从对象存储中查询数据。
简化版本图:

Prometheus集群介绍-1

部署方案

使用Thanos来替代联邦方案,我们只需要将上图中的Prometheus和Thanos sidecar部署到Kubernetes集群中,将Thano query等组件部署在原来Top Prometheus的位置即可。

Prometheus集群介绍-1

相比联邦的优势

使用Thanos相比于之前使用联邦,拥有一些较为明显的优势

由于数据不再存储在单个Prometheus中,所以整体能承载的数据规模比联邦大。

数据不再有不必要的冗余。

由于Thanos有去重能力,实际上可以每个集群中部署两个Prometheus来做数据多副本。

可以将数据存储到对象存储中,相比存储在本地,能支持更长久的存储。

5.总结

我们首先介绍了Prometheus的基本原理,并介绍了最为常用的使用Prometheus监控单一小集群的方案。
随后,针对多集群场景,我们还谈了联邦方式与Thanos方式各有什么优缺点。

后续我应该还会分享下三篇内容

1.Prometheus具体的配置说明;

2.Prometheus-operator部署prometheus集群;

3.Grafana面板展示以及PromQL语法查询;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyxggp.html