本文来自Rancher Labs

Prometheus是CNCF中曾经毕业的我的项目之一,次要用于监控和告警。在Kubernetes生态中,它是利用最为宽泛的监控和告警工具之一。Rancher用户能够通过应用内置的监控堆栈来疾速利用Prometheus。

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

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

在本文中,咱们将摸索一个疾速和简略的形式来设置Rancher监控近程端点与Thanos receive的集成。Thanos是一个开源的、高可用的Prometheus设置,有长期指标存储性能。你能够应用这个解决方案在所有的Prometheus实例中实现联邦指标,并容许地方Grafana dashboard在Thanos上运行。

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

装置Thanos

在本篇文章中,咱们能够应用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

Thanos反对若干对象存储配置。咱们将应用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_readremote_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接收器中的近程读写性能,你能够通过几个简略的步骤就可能实现长期指标存储和多个集群指标的全局视图。