Thanos
官方架构图
sidecar模式
增加query-frontend组件
receiver模式
https://github.com/thanos-io/kube-thanos/tree/master/examples/all/manifests
Thanos Query: 实现了Prometheus API,将来自下游组件提供的数据进行聚合最终返回给查询数据的 client (如 grafana)
Thanos Sidecar: 连接 Prometheus,将其数据提供给 Thanos Query 查询,或者将其上传到对象存储,以供长期存储Thanos Store Gateway: 将对象存储的数据暴露给 Thanos Query 去查询Thanos Ruler: 对监控数据进行评估和告警,还可以计算出新的监控数据,将这些新数据提供给 Thanos Query 查询并且/或者上传到对象存储,以供长期存储Thanos Compact: 将对象存储中的数据进行压缩和降低采样率,加速大时间区间监控数据查询的速度Thanos Bucket:检查对象存储中数据的命令,通常作为独立命令运行并帮助我们进行故障排查,支持通过Web UI 查看目前Buket的数量Thanos Check:通过Thanos check 可以检查和验证Pormetheus Rules 是否正确
- Sidecar: 每个 Prometheus 实例都包含一个
Sidecar
,它与 Prometheus 实例运行在同一个 Pod 中。它有两个作用:1) 将本地超过 2 小时的监控数据上传到对象存储,如 Amazon S3 或 Google 云存储。2) 将本地监控数据(小于 2 小时)提供给 Thanos Query 查询。 - Store Gateway : 将对象存储的数据提供给 Thanos Query 查询。
- Query : 实现了 Prometheus 的查询 API[8],将 Sidecar 和对象存储提供的数据进行聚合最终返回给查询数据的客户端(如
Grafana
)。 - Compact : 默认情况下,Sidecar 以 2 小时为单位将监控数据上传到对象存储中。
Compactor
会逐渐将这些数据块合并成更大的数据块,以提高查询效率,减少所需的存储大小。 - Ruler : 通过查询
Query
获取全局数据,然后对监控数据评估记录规则[11]和告警规则,决定是否发起告警。还可以根据规则配置计算新指标并存储,同时也通过 Store API 将数据暴露给Query
,同样还可以将数据上传到对象存储以供长期保存。由于Query
和底层组件的可靠性较低,Ruler 组件通常故障率较高[12]: Ruler 组件在架构上做了一些权衡取舍,强依赖查询的可靠性,这可能对大多数场景都不利。对于 Prometheus 来说,都是直接从本地读取告警规则和记录规则,所以不太可能出现失败的情况。而对于Ruler
来说,规则的读取来源是分布式的,最有可能直接查询 Thanos Query,而 Thanos Query 是从远程 Store APIs 获取数据的,所以就有可能遇到查询失败的情况。 Receiver : 这是一个实验性组件,适配了 Prometheus 的 remote write API,也就是所有 Prometheus 实例可以实时将数据 push 到
Receiver
metrics
thanos sidecar
http://0.0.0.0:10902/metrics
prometheus
http://0.0.0.0:9090/metrics
thanos compact
http://0.0.0.0:10902/metrics
thanos query
http://0.0.0.0:9090/metrics
thanos rule
http://0.0.0.0:10902/metrics
thano store
http://0.0.0.0:10902/metrics
S3
thanos sidecar
thanos compact
thanos rule
thanos store
Thanos multi cluster