关于kubernetes:使用Thanos实现Prometheus指标联邦

54次阅读

共计 2247 个字符,预计需要花费 6 分钟才能阅读完成。

本文来自 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: 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_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 接收器中的近程读写性能,你能够通过几个简略的步骤就可能实现长期指标存储和多个集群指标的全局视图。

正文完
 0