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)。
? 參考文件:
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 方式部署:
Receiver 方式部署:
三人行, 必有我師; 知識共享, 天下為公. 本文由東風微鳴技術部落格 EWhisper.cn 編寫.