简介
目前Prometheus已经成为Kubernetes集群事实上的标准监控解决方案。然而Prometheus的重点只放在对近期监控指标数据的操作上,这使得监控数据的本地存储在可扩展性和持久化方面受到单个节点的限制,Prometheus本身也并不试图去解决这些问题,而是专注做好其本身的核心功能,如监控指标的抓取,存储,查询与告警等;将可扩展性和持久化等问题的解决方案交给其它开源组件。目前这方面的解决方案主要有:
-
M3DB
M3DB可以收集大量的监控时间序列数据,然后以一种水平可扩展的方式来分配监控数据的存储,从而最有效地利用存储硬件。 -
Cortex
Cortex为Prometheus提供水平可扩展、高可用性(HA)、多租户、长期存储。 -
Thanos
Thanos是基于Prometheus的具有高可用(HA)、存储持久化,多集群查询功能的监控解决方案。选择Thanos的主要原因:- 所有组件都是无状态的(stateless)
- 监控数据和所有状态信息被持久化到对象存储(OSS)
- 服务之间通过稳定的StoreAPI对接
- 支持高可用的Prometheus部署(防止Prometheus单点故障)
- 最重要的一点,Thanos是CNCF项目
Thanos功能组件
-
Sidecar
- 作为Prometheus运行Pod中的Sidecar容器
- 将Prometheus的数据块(chuncks)上传到对象存储(OSS)
- 支持多种对象存储(OSS),如Aliyun、腾讯云、S3、Google云存储、Azure存储等
- 可无缝集成在Prometheus operator中进行部署
-
Store