写点什么

使用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: 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 年 8 月 09 日 14:051377

评论

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

架构师训练营-第3周-总结

Dawn

设计模式 极客大学架构师训练营

第三周-学习总结

molly

极客大学架构师训练营

架构师训练营第三周作业

草原上的奔跑

架构师训练营-第三周-作业1

seng man

week3 课后作业

Geek_165f3d

架构师-Week3-总结

龙7

架构师训练营W3 学习总结

Kun

架构师训练营第三周-代码重构

草原上的奔跑

架构师训练营 - 第三周 - 总结

seng man

架构师训练营第三章作业及总结

Benjamin

极客大学架构师训练营

架构师-Week3-作业

龙7

Week3

泛岁月的涟漪

架构师训练营 第三周-作业

无心水

单例模式 极客大学架构师训练营 组合模式 23种设计模式

架构师训练营 W3 作业

Kun

Nginx系列教程(一)| 手把手教你在Linux环境下搭建Nginx服务

JackTian

nginx Linux 运维 lnmp httpd

架构师训练营第三周心得

努力努力再努力m

极客大学架构师训练营

第三周学习总结

桔子

架构师训练营 -- 第三周 -- 作业1

lei Shi

架构师第3周总结

上山砍柴

极客大学架构师训练营

作业

chenzt

架构师训练营第三周作业

努力努力再努力m

极客大学架构师训练营

架构师训练营 - 第三周作业

桔子

架构师训练营第三周作业

坂田吴奇隆

第三周总结

uangguan

架构师训练营第三周作业

路人

极客大学架构师训练营

【第三周】架构师训练营总结

星星

组合模式

Jeff

第3周作业

娄江国

极客大学架构师训练营

第三周 学习内容总结

安阳

架构师训练营第3周作业

子豪sirius

week3 作业

a晖

2021年,算法还“香”吗?

2021年,算法还“香”吗?

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