使用Thanos實現Prometheus指標聯邦

RancherLabs發表於2020-07-20

本文來自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接收器中的遠端讀寫功能,你可以通過幾個簡單的步驟就能夠實現長期指標儲存和多個叢集指標的全域性檢視。

相關文章