使用Thanos实现Prometheus指标联邦

2020 年 8 月 09 日

使用Thanos实现Prometheus指标联邦

Prometheus 是 CNCF 中已经毕业的项目之一,主要用于监控和告警。在 Kubernetes 生态中,它是应用最为广泛的监控和告警工具之一。Rancher 用户可以通过使用内置的监控堆栈( https://rancher2.docs.rancher.cn/docs/cluster-admin/tools/monitoring/_index )来快速利用 Prometheus。

Prometheus 将其指标(metrics)作为时序数据库存储在本地磁盘上,因此 Prometheus 的本地存储会受到磁盘大小以及所能保留的指标数量的制约。但是,Prometheus 允许与远程系统集成,通过 _remotewrite和 _remoteread指令读写指标,同时它还支持大量远程端点和存储集成:

https://prometheus.io/docs/operating/integrations/#remote-endpoints-and-storage

联邦可以实现可扩展的 Prometheus 监控设置,或者将相关的指标从一个服务的 Prometheus 拉取到另一个 Prometheus 中。

在本文中,我们将探索一个快速和简单的方式来设置 Rancher 监控远程端点与 Thanos receive 的集成。Thanos 是一个开源的、高可用的 Prometheus 设置,有长期指标存储功能。你可以使用这个解决方案在所有的 Prometheus 实例中实现联邦指标,并允许中央 Grafana dashboard 在 Thanos 上运行。

重要提醒:作为指标联邦的一部分,项目 / 集群指标将不在 Rancher 管理平面内。此外,集群管理员必须确保建立适当的访问控制机制,以限制对该指标存储的访问。

安装 Thanos

在本篇文章中,我们可以使用 kube-thanos( https://github.com/thanos-io/kube-thanos )在 Kubernetes 集群上快速设置 Thanos。

我们将需要以下 Thanos 组件:

  • Thanos 存储 gateway
  • Thanos 接收器(receiver)
  • Thanos 查询器(querier)
  • 对象存储

该解决方案如下所示:

复制代码
+
Tenant's Premise | Provider Premise
|
| +------------------------+
| | |
| +-------->+ Object Storage |
| | | |
| | +-----------+------------+
| | ^
| | S3 API | S3 API
| | |
| | +-----------+------------+
| | | | Store API
| | | Thanos Store Gateway +<-----------------------+
| | | | |
| | +------------------------+ |
| | |
| +---------------------+ |
| | |
+--------------+ | +-----------+------------+ +---------+--------+
| | | Remote | | Store API | |
| Prometheus +------------->+ Thanos Receiver +<-------------+ Thanos Querier |
| | | Write | | | |
+--------------+ | +------------------------+ +---------+--------+
| ^
| |
+--------------+ | |
| | | PromQL |
| User +----------------------------------------------------------------+
| | |
+--------------+ |
+
来源:Thanos receive proposal

https://github.com/thanos-io/thanos/blob/master/docs/proposals/201812_thanos-remote-receive.md

Thanos 支持若干对象存储配置:

https://thanos.io/storage.md/#configuration

我们将使用 MinIO 作为我们的对象存储。你需要在名为 thanos-objectStorage 的 secret 中定义对象存储,它需要在你的 Thanos deployment 命名空间中。

thanos-config.yaml如下所示:

复制代码
type: s3
config:
bucket: thanos
endpoint: ${minio-endpoint}
access_key: ${minio-access-key}
secret_key: ${minio-secret-key}
insecure: true

你可以按照以下方式创建 secret:

kubectl create secret generic thanos-objectstorage --from-file=thanos.yaml="$PATH_TO_CONFIG"/thanos-config.yaml

配置 Rancher 监控

与 Rancher 监控 operator 打包的 Prometheus 版本已经支持 remote_read 和 remote_write 集成。

Thanos receive endpoint 的额外设置可以通过高级选项传递,如下所示:

我们需要按照 Prometheus remote_write 规范的要求,指定一个唯一的名字。

复制代码
# The name will be used in metrics and logging in place of a generated value to help users distinguish between
# remote write configs.
[ name: <string> ]

你完成了监控的部署之后,你应该可以使用 Thanos 查询器查看你的指标。

已存储的指标也将在对象存储中获取。

由于所有的集群指标在这个 Thanos 安装中都是可用的,所以工作负载的所有者需要确保对工作负载和指标的访问是安全的。

总结

使用 Rancher 监控(即 Prometheus)和 Thanos 接收器中的远程读写功能,你可以通过几个简单的步骤就能够实现长期指标存储和多个集群指标的全局视图。而在 Rancher 企业版中已经默认集成了多集群全局监控,你可以获得更直观更方便的全局监控体验。如果你想进一步了解 Rancher 企业版的其他特性,欢迎扫描文末二维码咨询小助手。

本文转载自公众号 RancherLabs(ID:RancherLabs)。

原文链接

https://mp.weixin.qq.com/s/rmPmwAR_DUplSnzEHV8Rjw

2020 年 8 月 09 日 14:05 1169

评论

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

区块链合约层是一种自动执行的数字协议

CECBC区块链专委会

区块链 智能合约

牛批!清华毕业的Java大牛用一个坦克大战游戏项目来演示设计模式

Java成神之路

Java 学习 编程 程序员 设计模式

USDT跑分承兑系统开发,区块链支付平台搭建

13823153121

所见即所得的用户增长技术背后是如何实现的

海豚调度

用户增长 大数据技术 大数据架构 用户增长技术 ad-hoc技术

两年Java工作经验涨到23K,这究竟是怎么做到的?

Java架构师迁哥

区块链技术与我们的生活将并存

CECBC区块链专委会

区块链 数字经济

端-边-云全面协同创新 英特尔携手百度共推产业智能化升级

intel001

数字货币合约跟单系统开发app,跟单系统搭建源码

WX13823153201

区块链技术最重要价值所在

CECBC区块链专委会

区块链 数字经济 互联网革命

SpringBoot写后端接口,看这一篇就够了!

华为云开发者社区

后端 swagger pringboot

Mysql学习笔记:InnoDB索引结构浅析

马迪奥

MySQL 索引结构 innodb

一次代码评审,差点过不了试用期!

小傅哥

Java 小傅哥 代码质量 代码优化 代码规范

音乐创作者必备软件,轻松玩转原创

Geek_96964a

音乐制作 编曲 电音 作曲 乐团

架构师期末作业

傻傻的帅

Mysql学习笔记:分库分表(sharding)

马迪奥

MySQL Sharding

阿里P9技术专家:Java程序员这些必备技能的进阶书籍一定要读一读

Java成神之路

Java 学习 程序员 面试

巧用决策树消灭if-else/switch

赫杰辉

决策树 可视化 简化代码

彻底理解JavaScript执行上下文

Walker

JavaScript 前端 this指针 函数执行

用Go-Guardian写一个Golang的可扩展的身份认证

朱亚光

go golang 微服务 身份认证

设计模式只是一把锤子

博文视点Broadview

读书笔记 编程 面向对象 设计模式

解Bug之路-记一次JVM堆外内存泄露Bug的查找

无毁的湖光

Linux JVM heap memory GC Linux Kenel

云图说 | 华为云GPU共享型AI容器,让你用得起,用得好,用的放心

华为云开发者社区

gpu caffe

如何让知识图谱告诉你“故障根因”

华为云开发者社区

华为云 知识图谱 图谱

不懂 ZooKeeper?没关系,这一篇给你讲的明明白白

海星

阿里P8大牛手写的源码笔记:Java集合+Java多线程+MyBatis+Spring

Java成神之路

Java spring 面试 多线程 mybatis源码

如何正确设置Java.home

谷鱼

区块链交易系统开发,期货合约平台搭建

13823153121

@所有人 Flink Forward Asia 2020 向您发出议题征集邀请!

Apache Flink

flink

拥抱K8S系列-07-部署K8S集群(Rancher)

张无忌

Kubernetes rancher

知识点总结

Acker飏

我敢说,这个版本的斗地主你肯定没玩过?

华为云开发者社区

命令行 游戏 斗地主

使用Thanos实现Prometheus指标联邦-InfoQ