Thanos工作原理及元件簡介

東風微鳴發表於2023-04-02

Thanos 簡介

Thanos 是一個「開源的,高可用的 Prometheus 系統,具有長期儲存能力」。很多知名公司都在使用 Thanos,也是 CNCF 孵化專案的一部分。

Thanos 的一個主要特點就是透過使用物件儲存(比如 S3)可以允許 “無限” 儲存空間。物件儲存可以是每個雲提供商提供的物件儲存也可以是 ceph、rook 或 minio 這樣的解決方案。

工作原理

Thanos 和 Prometheus 並肩作戰,從 Prometheus 開始升級到 Thanos 是很常見的。

Thanos 被分成幾個元件,每個元件都只有一個目標(典型雲原生架構),元件之間透過 gRPC 進行通訊。

Thanos Sidecar

Thanos 和 Prometheus 一起執行(有一個邊車),每 2 小時向一個物件儲存庫輸出 Prometheus 指標。這使得 Prometheus 幾乎是無狀態的。Prometheus 仍然在記憶體中儲存著 2 個小時的度量值,所以在發生當機的情況下,你可能仍然會丟失 2 個小時的度量值(這個問題應該由你的 Prometheus 設定來處理,使用 HA/分片,而不是 Thanos)。

? 參考文件:

Prometheus 基本高可用架構

Thanos sidecar 與 Prometheus Operator 和 Kube Prometheus 棧一起,可以輕鬆部署。這個元件充當 Thanos 查詢的儲存。

Thanos Store(儲存)

Thanos 儲存充當一個閘道器,將查詢轉換為遠端物件儲存。它還可以在本地儲存上快取一些資訊。基本上,這個元件允許你查詢物件儲存以獲取指標。這個元件充當 Thanos 查詢的儲存。

Thanos Compactor

Thanos Compactor(壓縮器) 是一個單體(它是不可擴充套件的),它負責壓縮和降低儲存在物件儲存中的指標。下采樣(資料老化)是隨著時間的推移對指標粒度的寬鬆。例如,你可能想將你的指標保持 2 年或 3 年,但你不需要像昨天的指標那麼多資料點。這就是壓縮器的作用,它可以在物件儲存上節省位元組,從而節省成本。

Thanos Query

Thanos Query(查詢)是 Thanos 的主要元件,它是向其傳送 PromQL 查詢的中心點。Thanos 查詢暴露了一個與 Prometheus 相容的端點。然後它將查詢分派給所有的 “stores”。記住,Store 可能是任何其他提供指標的 Thanos 元件。Thanos 查詢可以傳送查詢到另一個 Thanos 查詢(他們可以堆疊)。

  • Thanos Store
  • Thanos Sidecar
  • Thanos Query

還負責對來自不同 Store 或 Prometheus 的相同指標進行重複資料刪除。例如,如果你有一個度量值在 Prometheus 中,同時也在物件儲存中,Thanos Query 可以對該指標值進行重複資料刪除。在 Prometheus HA 設定的情況下,重複資料刪除也基於 Prometheus 副本和分片。

Thanos Query Frontend(查詢前端)

正如它的名字所暗示的,Thanos 查詢前端是 Thanos 查詢的前端,它的目標是將大型查詢拆分為多個較小的查詢,並快取查詢結果(在記憶體或 memcached 中)。

還有其他元件,比如在遠端寫的情況下 Thanos Receiver(接收器)、Thanos Ruler(規則)。

Thanos 部署架構

Sidecar 方式部署:

thanos-architecture-deployment-with-sidecar

Receiver 方式部署:

thanos-architecture-deployment-with-receiver

三人行, 必有我師; 知識共享, 天下為公. 本文由東風微鳴技術部落格 EWhisper.cn 編寫.

相關文章