点击围观!腾讯 TAPD 助力金融行业研发提效、敏捷转型最佳实践! 了解详情
写点什么

使用 Thanos 实现 Prometheus 指标联邦

  • 2020-08-09
  • 本文字数:2524 字

    阅读完需:约 8 分钟

使用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: s3config:  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-08-09 14:052427

评论

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

消息队列存储消息数据的MySQL 表格设计

tom

设计消息队列存储消息数据的 MySQL 表格

风中奇缘

#架构实战营 「架构实战营」

模块8作业

Leo

架构实战营

spring-cloud-kubernetes背后的三个关键知识点

程序员欣宸

java 4月月更

5 月亚马逊云科技培训与认证课程,精彩不容错过!

亚马逊云科技 (Amazon Web Services)

架构师 培训 认证

设计消息队列存储消息数据的 MySQL 表格

smile

亚马逊云科技 2022 年 3 月新服务新功能强势来袭

亚马逊云科技 (Amazon Web Services)

服务 亚马逊

4月28日,一场为IT工程师们准备的盛宴

观测云

云原生 可观测性 IT 直播 产品发布会

建信金科在中国建设银行物联网平台项目的实践

EMQ映云科技

物联网 IoT 金融 银行 emq

加速OpenHarmony生态繁荣,华为使能OpenHarmony发行版厂商

科技汇

架构训练营模块八

Geek_16d2b8

架构训练营 模块八

文件包含漏洞带来的危害

喀拉峻

网络安全 漏洞

云原生训练营 -Week08-2

jjn0703

设计消息队列存储消息数据的MySQL表格

张逃逃

设计消息队列存储消息数据的 MySQL 表格

浪飞

面试突击40:线程休眠的方法有几种?

王磊

Java java面试

Linux驱动开发-内核共享工作队列

DS小龙哥

4月月更

谈谈客户体验管理有效实施

龙国富

客户体验 CEM CXM 客户体验管理

企业如何才能发挥出知识管理真正的价值

小炮

知识管理 企业知识管理

软件工程学习之道

乌龟哥哥

4月月更

CityClub游览随笔记录

耳东@Erdong

InfoQ InfoQ写作社区2周年 City Club

模块八

blazar

「架构实战营」

重学架构之消息队列存储消息数据的 MySQL 表格

陈华英

架构实战营 「架构实战营」

EasyRecovery2022全功能数据恢复介绍

茶色酒

EasyRecovery15

java培训Mybatis动态Sql处理解析

@零度

sql mybatis JAVA开发

MQ存储消息的MYSQL表格设计

邹玉麒

架构训练营5期

[模块8]消息队列存储消息数据的MySQL表格

凌波微步

「架构实战营」

模块八作业

Geek_ec866b

架构训练营

一个系统工程师的14条建议

一席

高可用 稳定性 SRE 混沌工程 故障排查

@DateTimeFormat 注解 和 @JsonFormat 注解

乌龟哥哥

4月月更

「架构实战营」模块八 消息队列存储设计

hxb

「架构实战营」

使用Thanos实现Prometheus指标联邦_安全_Rancher_InfoQ精选文章