使用Thanos强化Prometheus
背景 Prometheus 是目前云原生架构中监控解决方案中的基石,而对于 “metrics”,“traces” 和 “logs” 是组成云原生架构中“可观测性”的一个基础,当在扩展 Prometheus,那么 Prometheus 提供的基础架构是无法满足需求的(高可用性和可扩展性), 而高可用性与可扩展性是满足不断增长基础设施的一个基本条件。而 Prometheus 本身并没有提供“弹性”的集群配置,也就是说,多个副本的 Prometheus 实例,对于分布在每个 Pod 上的数据也会不一致,这时也需要保证指标的归档问题。 并且在一定的集群规模下,问题的出现远远大于 Prometheus 本身的能力,例如: 如何经济且搞笑的存储历史数据(TB, PB)?如何快速的查询历史数据? 如何合并 Promehtues 多个实例收集来的副本数据? 以及多集群间的监控? 由于 TSDB 的块同步,Prometheus 严重依赖内存,使得 Prometheus 监控项的扩展将导致集群中的CPU/MEM 的使用加大 .. 解决 Thanos 是一款可以使 Prometheus 获得 ”长期存储“,并具体有”高可用性“ 的 Prometheus 的功能扩展,“Thanos” 源自希腊语“ Athanasios”,英文意思是”不朽“。这也正是 ”Thanos“ 提供的功能:”无限制的对象存储“,并与原生 Prometheus API 高度兼容,你可以理解为 Thanos API 就是 Prometheus API。 Cortexmetrics 与 Thanos 类似,是用通过将 Prometheus 实例的”存储“和”查询“等功能分离到独立的组件中,实现水平扩展。它使用对象存储来持久化历史指标,块存储(TSDB)是他的存储后端;此外,Cortex 还提供了多租户与多租户隔离等功能 联邦集群,联邦集群是 Prometheus 官方提供的一个概念,使用了联邦将允许 Prometheus 从另一个 Prometheus 中抓取选定的指标。可以使用的一些模型如下: 分层联邦:大规模的集群中,Prometheus 部署模型如一个”树形“,高级别的从多个低级实例中抓取指标,并存储聚合 跨服务联邦:Prometheus 从另一个 Prometheus 只抓取指定的数据 图:Prometheus 联邦 Source:https://www....