MENU

Prometheus+Grafana(二)Thanos组件与架构

July 22, 2021 • Read: 682 • 默认分类

prometheus官方的高可用有几种方案:

  • HA:即两套 prometheus 采集完全一样的数据,外边挂负载均衡
  • HA + 远程存储:除了基础的多副本prometheus,还通过Remote write 写入到远程存储,解决存储持久化问题
  • 联邦集群:即federation,按照功能进行分区,不同的 shard 采集不同的数据,由Global节点来统一存放,解决监控数据规模的问题。

Thanos-logo_fullmedium.png

Improbable 的一个开源项目,GitHub:https://github.com/thanos-io/thanos

概述

Thanos 一组通过跨集群联合、跨集群无限存储和全局查询为Prometheus增加高可用性的组件,可以组合成具有无限存储容量的高可用性度量系统.
Thanos 是一个CNCF孵化项目。

Thanos 利用 Prometheus 2.0 存储格式经济高效地将历史指标数据存储在任何对象存储中,同时保持快速查询延迟。此外,它还提供了所有 Prometheus 安装的全局查询视图,并且可以动态合并来自 Prometheus HA 对的数据
该项目的具体目标是:
1.指标的全局查询视图。
2.无限保留指标。
3.组件的高可用性,包括 Prometheus。
总的来说特点就是:全局视图,长期存储,高可用

Thanos和Prometheus一起运行(有一个边车),每2小时向一个对象存储库输出Prometheus指标。这使得Prometheus几乎是无状态的。Prometheus仍然在内存中保存着2个小时的度量值,所以在发生宕机的情况下,你可能仍然会丢失2个小时的度量值(这个问题应该由你的Prometheus设置来处理,使用HA/分片,而不是Thanos)。

为什要使用Thanos

目前Prometheus已经成为Kubernetes集群事实上的标准监控解决方案。然而Prometheus的重点只放在对近期监控指标数据的操作上,这使得监控数据的本地存储在可扩展性和持久化方面受到单个节点的限制,Prometheus本身也并不试图去解决这些问题,而是专注做好其本身的核心功能,如监控指标的抓取,存储,查询与告警等;将可扩展性和持久化等问题的解决方案交给其它开源组件。目前这方面的解决方案主要有:

  • M3DB
    M3DB可以收集大量的监控时间序列数据,然后以一种水平可扩展的方式来分配监控数据的存储,从而最有效地利用存储硬件。
  • Cortex
    Cortex为Prometheus提供水平可扩展、高可用性(HA)、多租户、长期存储。
  • Thanos
    Thanos是基于Prometheus的具有高可用(HA)、存储持久化,多集群查询功能的监控解决方案。选择Thanos的主要原因:

    • 所有组件都是无状态的(stateless)
    • 监控数据和所有状态信息被持久化到对象存储(OSS)
    • 服务之间通过稳定的StoreAPI对接
    • 支持高可用的Prometheus部署(防止Prometheus单点故障)
    • 最重要的一点,Thanos是CNCF项目

Thanos功能组件

20210225153339968.png

  • Sidecar

    • 作为Prometheus运行Pod中的Sidecar容器
    • 将Prometheus的数据块(chuncks)上传到对象存储(OSS)
    • 支持多种对象存储(OSS),如Aliyun、腾讯云、S3、Google云存储、Azure存储等
    • 可无缝集成在Prometheus operator中进行部署
  • Store

    • 从对象存储(OSS)中检索块(chunks),以便查询长周期的监控指标
    • 支持基于时间(time-based)的分区查询
    • 支持基于标签(label-based)的分区查询
  • Compact

    • 为OSS中的监控数据创建降采样块(Downsampled chunks),以加快长周期范围的数据查询
  • Query

    • 作为PromQL查询入口(替代Prometheus查询)
    • 消除来自不同数据源(多个Store)的重复数据
    • 支持部分响应
  • Rule

    • 一个简化版的Prometheus(主要使用rule功能,不抓数据,不做PromQL解析查询)
    • 以Prometheus2.0存储格式将结果写入OSS
    • 主要作为Rule存储节点(通过StoreAPI将TSDB块上传至OSS)
  • Bucket

    • 监视对象存储Bucket中存储的监控数据

Thanos逻辑架构图

1.png

- - - The END - - -
  • 文章作者:谭先生
  • 版权所有:文章转载时,注明出处即可!
  • 本站部分资源收集于网络,纯个人收藏,无商业用途,如有侵权请及时告知!
  • Last Modified: July 27, 2021
    Archives QR Code Tip
    QR Code for this page
    Tipping QR Code
    阅读:682