东亚银行、岚图汽车带你解锁 AIGC 时代的数字化人才培养各赛道新模式! 了解详情
写点什么

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:015055
用户头像

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

关注

评论 1 条评论

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

图文结合带你搞懂GreatSQL体系架构

GreatSQL

greatsql greatsql社区

HTML5 游戏开发实战 | 黑白棋

TiAmo

html html5 6 月 优质更文活动

C++的重载运算符和重载函数

二哈侠

强化学习从基础到进阶--案例与实践[7.1]:深度确定性策略梯度DDPG算法、双延迟深度确定性策略梯度TD3算法详解项目实战

汀丶人工智能

人工智能 深度学习 强化学习 6 月 优质更文活动 DDPG算法

再见Navicat,dbeaver才是真香

程序员小毕

Java 数据库 程序员 后端 架构师

安全专家们看过来,易安联EnSRC第二期众测启动

权说安全

快上车,搭乘HUAWEI HiCar驶向未来

HMS Core

HMS Core

【网络安全】堡垒机对于企业的重要性你知道吗?

行云管家

云计算 运维 网络安全 堡垒机

一图讲清楚公众号扫码关注绑定手机号自动登录

越长大越悲伤

微信 公众号接入

瓴羊Quick BI四度入选魔力象限报告,标志着BI系统的国产化进程加速

对不起该用户已成仙‖

CSS中常用的颜色格式

南城FE

CSS css3 前端 设计

大语言模型的开发利器langchain

程序那些事

程序那些事 AIGC ChatGPT 大语言模型

重磅新品全球公测!华为云数据库又有大动作

平平无奇爱好科技

强化学习从基础到进阶-常见问题和面试必知必答[7]:深度确定性策略梯度DDPG算法、双延迟深度确定性策略梯度TD3算法详解

汀丶人工智能

人工智能 深度学习 强化学习 6 月 优质更文活动 DDPG算法

SQL 优化(二):避免隐式转换

hungxy

Redis跳跃表是如何添加元素的?

小小怪下士

Java redis 面试

软件测试/测试开发丨Python内置库学习笔记

测试人

Python 软件测试 io 科学计算 内置库

MaxCompute湖仓一体近实时增量处理技术架构揭秘

阿里云大数据AI技术

sql 大数据 分布式计算 数据处理 企业号 6 月 PK 榜

【直播预告】HarmonyOS极客松赋能直播第三期:一次开发多端部署与ArkTS卡片开发

HarmonyOS开发者

HarmonyOS

G1垃圾回收参数调优及MySQL虚引用造成GC时间过长分析 | 京东云技术团队

京东科技开发者

MySQL G1 GC 企业号 6 月 PK 榜

华为云专家出品《从零到一•Python图像处理入门》电子书

华为云PaaS服务小智

Python 华为 华为云 华为开发者大会2023

Intellij IDEA 插件开发 | 京东云技术团队

京东科技开发者

Java IntelliJ IDEA 企业号 6 月 PK 榜 插件工程

推荐几款可以大幅提高开发效率的vscode插件 | 京东云技术团队

京东科技开发者

Vue 前端 vscode

STC89C52+AT24C02实现设备开机次数记录

DS小龙哥

6 月 优质更文活动

程序员用哪一种IDE写代码比较好?

没有用户名丶

构建系列之新一代利器Esbuild(下)

江湖修行

前端 cli 构建 #web esbuild

直播系统源码知识分享:解你忧愁!降低直播延迟的实现

山东布谷科技

软件开发 源码搭建 直播系统源码 直播源码

2023银川市等级保护测评中心地址在哪里?有几家?

行云管家

等保 等保测评 等级测评 银川

强化学习从基础到进阶--案例与实践[7]:深度确定性策略梯度DDPG算法、双延迟深度确定性策略梯度TD3算法详解

汀丶人工智能

人工智能 深度学习 强化学习 6 月 优质更文活动 DDPG算法

BI分析能力:当今企业必备核心竞争力

夜雨微澜

Spring Boot配置文件加载顺序详解

2756

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