使用Thanos實現Prometheus指標聯邦

本文來自Rancher Labsgit

Prometheus是CNCF中已經畢業的項目之一,主要用於監控和告警。在Kubernetes生態中,它是應用最爲普遍的監控和告警工具之一。Rancher用戶能夠經過使用內置的監控堆棧來快速利用Prometheus。github

Prometheus將其指標(metrics)做爲時序數據庫存儲在本地磁盤上,所以Prometheus的本地存儲會受到磁盤大小以及所能保留的指標數量的制約。可是,Prometheus容許與遠程系統集成,經過_remotewrite和_remoteread指令讀寫指標,同時它還支持大量遠程端點和存儲集成數據庫

聯邦能夠實現可擴展的Prometheus監控設置,或者將相關的指標從一個服務的Prometheus拉取到另外一個Prometheus中。安全

在本文中,咱們將探索一個快速和簡單的方式來設置Rancher監控遠程端點與Thanos receive的集成。Thanos是一個開源的、高可用的Prometheus設置,有長期指標存儲功能。你可使用這個解決方案在全部的Prometheus實例中實現聯邦指標,並容許中央Grafana dashboard在Thanos上運行。ide

重要提醒:做爲指標聯邦的一部分,項目/集羣指標將不在Rancher管理平面內。此外,集羣管理員必須確保創建適當的訪問控制機制,以限制對該指標存儲的訪問。工具

安裝Thanos

在本篇文章中,咱們可使用kube-thanos在Kubernetes集羣上快速設置Thanos。ui

咱們將須要如下Thanos組件:code

  • Thanos存儲gateway對象

  • Thanos接收器(receiver)blog

  • 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接收器中的遠程讀寫功能,你能夠經過幾個簡單的步驟就可以實現長期指標存儲和多個集羣指標的全局視圖。

相關文章
相關標籤/搜索