thanos實現prometheus高可用

2021-10-09 02:59:10 字數 3939 閱讀 8715

thanos元件:

通用api:store api提供服務給查詢介面,通過grpc查詢prometheus的remote-read介面,rule的storeapi,store gateway的storeapi。

一、thanos query:

1、封裝prometheus query api,支援promql

2、暴露query服務,實現store api,可查詢來自四類endpoint的資料:

包括:rule節點record資料,sidecar節點prometheus原生資料,store gateway**的object storage資料,receiver收集到的資料。

3、無狀態,可水平擴充套件(高可用)

二、thanos sidecar

1、prometheus sidecar,實現store api,提供grpc給query元件進行指標查詢;

2、使用時與prometheus放在乙個pod裡,共享生命週期;

3、prometheus每兩個小時把資料存到硬碟一次,此時sidecar shipper同時把資料上傳到物件儲存;

4、此方案,如果prometheus節點down,會丟失最近兩個小時的資料;

三、thanos receiver

1、在prometheus remote-write基礎上實現;

2、prometheus服務會把資料實時寫到receiver;

3、receiver可分布式部署,實現一致性hash,(疑問:多個prometheus同時pull資料並上傳到receiver,配置了external_labels,receiver是否能夠實現一致性hash進行去重;)

4、此方案,乙個prometheus down掉以後,仍然保證資料完整,目前thanos還沒有推出比較穩定的版本。

5、receiver也會把資料寫入object storage。(疑問:什麼時候,什麼頻率)

6、遠端寫的同時,prometheus本地磁碟依然會寫入資料。

四、thanos store gateway

1、query查詢object storage資料的唯一入口;

2、實現query api;

3、快取物件儲存索引,優化查詢。

五、compactor

1、單例

2、object storage資料壓縮

3、object storage資料降取樣,個人理解就是把資料重新整理,生成取樣間隔更長的資料block,並上傳至物件儲存,可優化查詢。

4、官方推薦100g磁碟空間用作臨時資料處理空間

5、上傳deletion-mark.json來標記刪除物件儲存裡的block,三個重要引數–retention.resolution-raw,–retention.resolution-5m,–retention.resolution-1h

六、thanos rule

1、類似於prometheus的rule,可根據配置檔案提前生成使用者配置的metric,已經對altermanagement發去告警資訊;

2、rule聚合生成的資料也會上傳至object storage;

3、rule的資料來源是通過thanos query至prometheus查詢到的,可見於thanos query互相查詢。

thanos高可用多prometheus是如何部署的?

1、prometheus多副本。

個人理解:多副本可以達到高可用,也可以多副本採集不同分割槽的資料,可以減少儲存。

thanos本身高可用是如何部署的?

1、thanos query水平擴充套件,thanos receiver分布式部署,一致性hash,thanos gateway可以水平擴充套件

指標是水平分片還是主備冗餘還是多副本同時提供服務?

1、sidecar:指標會冗餘儲存,查詢的時候去重

2、receiver一致性hash,去重(有疑問,由於標籤不同,應該不會去重)

3、多副本同時提供服務

物件儲存如何部署? minio是什麼?

1、minio是物件儲存,相容aws s3模式

可以儲存多久的歷史資料?

1、理論上無上限

可以快速查詢多久的歷史資料?

1、採用降取樣,可以保證查詢效能。

熱資料儲存在**?儲存多久?開銷如何?

1、prometheus儲存兩個小時的資料在記憶體裡;

2、prometheus根據配置儲存資料在本地磁碟,receiver 接收資料在本地磁碟並定時上傳資料到物件儲存

thanos架構和原生prometheus架構共存,通過配置檔案切換

1、query語法相同,可通過配置檔案切換

故障/高可用測試(節點故障, 部分服務故障)

查詢效能測試(響應時間,當前資料和歷史資料)

寫入效能測試(高併發下寫延遲)

穩定性測試(連續執行一段時間)

prometheus:

1、四種資料型別,counter、gauge、histogram、summary,對於client無差別,因為prometheus server暫時未啟用資料型別;

2、exporter負責收集endpoint資料,例如:node_exporter,負責收集k8s集群node資料,專案採用daemonset資源型別,保證每個node只有乙個exporter副本;

3、exporter收集資料,server進行retrieval,整理成metric形式。可以對原生metric進行封裝生成自定義metric,至於metric是exporter生成還是server生成,不太清楚;

4、prometheus單節點執行,單副本,如果多副本,每個server會同時執行;

5、server具有自動的服務發現,個人理解,如果node上有兩個exporter,都會被發現並收集。

6、prometheus server資料儲存在pod本地儲存下,不做掛載持久化處理,會導致資料丟失。

thanos:

資料來源節點:prometheus sidecar prometheus rule node

metric data bachup:

頂級目錄:ulid,可按照字典順序檢索,編碼建立時間

chunk: metric name對齊

index:標籤查詢、所在chunk位置

meta.json: 統計範圍、時間範圍、壓縮級別

store: 索引快取,同步物件儲存塊,減少物件儲存訪問

query layer: store node、 sidecar、 rule查詢

compactor: 僅指向物件儲存,資料壓縮,降取樣,應用保留策略

擴充套件: 1、壓縮器

2、store gateway 時間分片 --min-time --max-time

compactor: 降取樣:生成額外的block,以便於統計更廣範圍的歷史資料

thanos query: promql發起,通過storeapi支撐,所以配置檔案需要制定store api的位址(grpc)

查詢目標可包括: prometheus sidecar,object storage(store gateway),rule裡面的資料,receiver裡面的資料

不同租戶可以使用不同prometheus例項

dedup:不是group by,類似於刪除label,應replica=a和replica=b被認為是一類資料

partial response: 某個store api錯誤不影響整體查詢,增加warnings欄位

sidecar: prometheus每兩小時儲存資料到tsdb時,sidecar shipper把資料寫入物件儲存

高可用: 1、業務拆分,多個sidecar對應多個bucket,多個store gateway**查詢

2、時間分片:多個store gateway分別查詢不同時間段的資料。

sidecar與receiver對比:sidecar利用remote read api,依賴於底層prometheus,如果prometheus掛了,丟失兩小時的資料,receiver利用remote write api,資料實時同步

使用thanos管理Prometheus持久化資料

關於thanos的介紹可以參考這篇官方部落格的翻譯文件,本文不作部署操作介紹。下圖是thanos的官方架構圖,主要有5個元件 通常thanos管理多集群時,除sidecar元件需要在每個集群內部署,其餘元件僅部署乙份,用於處理多個集群的資料。需要注意的是,thanos的storeapi採用的是grp...

thanos配置promethes高可用

prometheus官方的高可用有幾種方案 ha 即兩套prometheus採集完全一樣的資料,外邊掛負載均衡 ha 遠端儲存 除了基礎的多副本prometheus,還通過remote write寫入到遠端儲存,解決儲存持久化問題 聯邦集群 即federation,按照功能進行分割槽,不同的shar...

虛擬機器使用docker搭建Prometheus

docker pull prom node exporter docker pull prom prometheus docker pull grafana grafana docker run d p 9100 9100 v proc host proc ro v sys host sys ro ...