Thanos 简介
Thanos 是一个「开源的,高可用的 Prometheus 零碎,具备长期存储能力」。很多出名公司都在应用 Thanos,也是 CNCF 孵化我的项目的一部分。
Thanos 的一个次要特点就是通过应用对象存储(比方 S3)能够容许“有限”存储空间。对象存储能够是每个云提供商提供的对象存储也能够是 ceph、rook 或 minio 这样的解决方案。
工作原理
Thanos 和 Prometheus 并肩作战,从 Prometheus 开始降级到 Thanos 是很常见的。
Thanos 被分成几个组件,每个组件都只有一个指标(典型云原生架构),组件之间通过 gRPC 进行通信。
Thanos Sidecar
Thanos 和 Prometheus 一起运行(有一个边车),每 2 小时向一个对象存储库输入 Prometheus 指标。这使得 Prometheus 简直是无状态的。Prometheus 依然在内存中保留着 2 个小时的度量值,所以在产生宕机的状况下,你可能依然会失落 2 个小时的度量值(这个问题应该由你的 Prometheus 设置来解决,应用 HA/ 分片,而不是 Thanos)。
参考文档:
Prometheus 根本高可用架构
Thanos sidecar 与 Prometheus Operator 和 Kube Prometheus 栈一起,能够轻松部署。这个组件充当 Thanos 查问的存储。
Thanos Store(存储)
Thanos 存储充当一个网关,将查问转换为近程对象存储。它还能够在本地存储上缓存一些信息。基本上,这个组件容许你查问对象存储以获取指标。这个组件充当 Thanos 查问的存储。
Thanos Compactor
Thanos Compactor(压缩器)是一个单体(它是不可扩大的),它负责压缩和升高存储在对象存储中的指标。下采样(数据老化)是随着工夫的推移对指标粒度的宽松。例如,你可能想将你的指标放弃 2 年或 3 年,但你不须要像昨天的指标那么少数据点。这就是压缩器的作用,它能够在对象存储上节俭字节,从而节省成本。
Thanos Query
Thanos Query(查问)是 Thanos 的次要组件,它是向其发送 PromQL 查问的中心点。Thanos 查问裸露了一个与 Prometheus 兼容的端点。而后它将查问分派给所有的“stores”。记住,Store 可能是任何其余提供指标的 Thanos 组件。Thanos 查问能够发送查问到另一个 Thanos 查问(他们能够重叠)。
- Thanos Store
- Thanos Sidecar
- Thanos Query
还负责对来自不同 Store 或 Prometheus 的雷同指标进行反复数据删除。例如,如果你有一个度量值在 Prometheus 中,同时也在对象存储中,Thanos Query 能够对该指标值进行反复数据删除。在 Prometheus HA 设置的状况下,反复数据删除也基于 Prometheus 正本和分片。
Thanos Query Frontend(查问前端)
正如它的名字所暗示的,Thanos 查问前端是 Thanos 查问的前端,它的指标是将大型查问拆分为多个较小的查问,并缓存查问后果(在内存或 memcached 中)。
还有其余组件,比方在近程写的状况下 Thanos Receiver(接收器)、Thanos Ruler(规定)。
Thanos 部署架构
Sidecar 形式部署:
Receiver 形式部署:
三人行, 必有我师; 常识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.