最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

Thanos 如何让 Prometheus 更易用?

  • 2018-12-23
  • 本文字数:1846 字

    阅读完需:约 6 分钟

Thanos如何让Prometheus更易用?

Prometheus 本身其实非常棒:它提供了出色的查询语言和统一的收集、发布指标的方法。不过,要让 Prometheus 具备高可用性和可扩展性却是一个不小的挑战。


我们需要以下这些特性:


  • 高可用的 Prometheus;

  • 可在一个地方查询所有指标;

  • 轻松备份和归档数据。


而这就是 Thanos 的用武之地。

让 Prometheus 具备高可用性

Thanos 最基本的功能就是让你可以一次查询多个 Prometheus 实例,并且能够对来自多个实例的相同指标进行去重。这样你就可以运行多个相同的 Prometheus 副本,而无需担心重复指标。


Thanos 边车是 Thanos 提供的一个组件,它与每个 Prometheus 容器一起运行,共同形成一个集群。你实际上查询的是 Thanos Query 组件,而不是 Prometheus 实例。下图有助于理解 Prometheus 与 Thanos 之间的关系。



光是这一点就已经很棒了,因为它可以让你轻松地实现高可用的 Prometheus。除此之外,你还可以使用这些构建块做更多的事情。

在同一个地方查看指标

下一个问题是如何将所有指标集中到一个地方。


我们运行了多个 Kubernetes 集群,每个集群都有自己的 Prometheus 实例。我们之前通常是通过使用特殊的 Prometheus 来抓取每个 Prometheus 实例的联合端点来聚合它们的指标。这样确实可行,但是太浪费资源了,因为我们复制了所有指标,而且这个特殊的 Prometheus 存在单点故障问题。


Thanos Query 节点可以将另一个 Query 节点作为数据源,如果将集群中 Thanos Query 节点的 gRPC 端点公开,就可以将它们作为数据存储,并创建聚合它们的 Thanos Query,见下图。



我们可以使用一个 Thanos Query 来获取所有集群的指标。在下面的屏幕截图中,我只用一个查询查询三个集群(红色、黑色、蓝色)中的 Daemonset 副本数量。



但是这个设置仍然存在问题,因为在每个集群中都有一个特殊的 Thanos Query,我们通过它将获取指标视图,如果它宕机就会导致不可用。我们希望运行多个 Thanos Query 节点,每个集群中都有一个这样的节点,实现用户查询的负载均衡。通过使用我们的 AWS 多集群负载均衡工具Yggdrasil,可以在多个 Kubernetes 集群中分配流量。用户可以查询任意的集群,并接收所有的指标。


当我们把它们放在一起时看起来像这样:



请注意,每个 Thanos Query 层都是 Thanos Query 节点的副本集,这样做是为了增加弹性。


这为我们提供了一个令人难以置信的弹性 Prometheus 设置,跨多个集群,并具有多个副本,为我们提供了大量的冗余层。如果你想查看 Prometheus 指标,可以直接在一个地方查看,而无需操心应用程序所在的集群和命名空间等问题。

存储

Prometheus 的另一个常见问题是备份和保留所有指标。将数据保存在 Prometheus 实例上通常很昂贵,并且会影响性​​能。Thanos 通过边车不断将数据备份到云存储(如 S3),然后通过 Store 节点公开数据来解决这个问题。Store 节点让你感觉好像在 Thanos 集群中有另一个 Prometheus 实例,但所有数据都来自 S3 存储桶。


如果集群发生故障,Store 节点也会为我们提供一些很好的弹性。因为如果 Prometheus 实例消失,就无法查询到最新的数据,但我仍然可以通过查询另一个集群中的 Store 节点来访问数据,因为这些节点可以访问 S3 中的历史数据。

未来的工作

一直以来,我们很想做的一件事情是可以按照团队或命名空间来拆分 Prometheus 集群,这样,每个 Prometheus 实例就不会太大,并且具备了冗余,避免有团队产生大量的指标搞垮 Prometheus。但这样做会非常费力,因为为每个团队或命名空间设置一个单独的端点会带来很多开销,但是有了 Thanos,我们就可以将基于团队的 Prometheus 添加到 Thanos 集群中,并且仍然可以使用相同的单一指标来源。因此,我们希望切换到使用很多小型的 Prometheis,并使用 Prometheus Operator 来创建它们。


总的来说,Thanos 给了我们:


  • 高可用的 Prometheus ——使用 Thanos 边车 + Thanos Query 进行数据去重;

  • 在一个地方查询所有指标——聚合所有集群的 Thanos Query;

  • 轻松备份和归档数据——Thanos 边车和 Thanos Store(基于 S3)。


Thanos 确实将我们的指标设置提升到了一个新的水平,简化了用户查询指标的方式,并为我们提供了一定的弹性。现在,从新的 Kubernetes 集群添加指标变得非常容易。不过,有一点需要注意的是,Thanos 仍然是一个相对较新的产品,所以它可能还是会存在一些奇怪的 bug,幸好它的背后有一个非常活跃的团队和社区在不断地改进它。如果你想加入他们,可以看看他们的Github项目Slack频道


英文原文:https://medium.com/uswitch-labs/making-prometheus-more-awesome-with-thanos-fbec8c6c28ad


2018-12-23 13:015059
用户头像

发布了 731 篇内容, 共 433.8 次阅读, 收获喜欢 1997 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

前端开发培训机构学习方法

小谷哥

SPL工业智能:原料与产品的拟合

石臻臻的杂货铺

工业智能体 SPL 10月月更

Apache Dolphin Scheduler 3.0.1 发布,对核心及UI相关进行优化

Apache DolphinScheduler

海豚调度 Apache DolphinScheduler 任务调度 版本发布 新版本/特性发布

25分钟了解php?php基础

贤鱼很忙

php 10月月更

激活工具带毒,静默安装360、2345系列软件

火绒安全

安全 下载器 病毒 恶意软件

浅谈Vue3组件通信

CoderBin

Vue 前端 10月月更

美团前端二面必会手写面试题汇总

helloworld1024fd

JavaScript

React源码分析6-hooks源码

goClient1992

React

【等保小知识】等保测评整体测评是什么意思?

行云管家

等保 等级保护 等保测评 等保2.0

学习型索引在数据库中的应用实践

KaiwuDB

前端开发培训机构怎么学

小谷哥

2022年9月国产数据库大事记-墨天轮

墨天轮

数据库 opengauss TiDB 国产数据库 KingBase

Zebec地平线节点运营计划,Web3流支付赛道或多一条全新公链

鳄鱼视界

【开发者说】一课表,你的智能课业管理工具

HarmonyOS开发者

HarmonyOS

React源码分析5-commit

goClient1992

React

加油,也可以更智慧

华为云开发者联盟

云计算 开发 物联网 智慧加油站 企业号十月 PK 榜

一文步入python大门,基础教程大全(25分钟)

贤鱼很忙

Python 网络安全 10月月更

哪些js手写题是需要掌握的

helloworld1024fd

JavaScript

参与中国信通院低代码&无代码市场调研问卷,浅抽超丰富奖池!

云智慧AIOps社区

大前端 低代码 数据可视化 无代码 低代码报告

java培训学习怎么选择培训机构

小谷哥

java培训学习后能高薪就业吗?

小谷哥

ReactDOM.render在react源码中执行之后发生了什么?

flyzz177

React

React Context源码是怎么实现的呢

flyzz177

React

广州云管平台有哪些?联系方式是什么?

行云管家

云计算 企业上云 云管平台 广州

十大 CI/CD 安全风险(一)

SEAL安全

权限管理 流程控制 身份验证 CI/CD管道 软件供应链安全

对在前端培训初学者的几点建议

小谷哥

一文详解 | 低代码发展的 “背后推手”

SoFlu软件机器人

React生命周期深度完全解读

夏天的味道123

React

React核心技术浅析

夏天的味道123

React

leetcode 236. Lowest Common Ancestor of a Binary Tree 二叉树的最近公共祖先(中等)

okokabcd

LeetCode 数据结构与算法

公共数据开放落地细则探讨,企业如何合规取用?

Jessica@数牍

安全隐私 公共数据开放 安全合规

Thanos如何让Prometheus更易用?_云原生_Joseph Irving_InfoQ精选文章