Prometheus 高可用方案

一、現實可用的小規模高可用方案

關於 Prometheus 的高可用,官方文檔中只提供了一個解決方案,具體實現方式如下:

使用兩個 Prometheus 主機監控同樣的目標,然後有告警出現,也會發送同樣的告警給 Alertmanager,然後使用 Alertmanager 自身的去重告警功能,只發出一條告警出來。從而實現了 prometheus 高可用的一個架構。 基於此架構,我們還可以使用 keepalived 做雙機熱備,通過 VIP 與 grafana 相連。實現一個完整的帶 web 界面展示告警的高可用 Prometheus 監控架構。

根據查找的資料,可知 Prometheus 的監控數量和 Prometheus 主機的內存和磁盤大小的關係表。

根據表格中數據,我們可以用兩臺 8G 內存,磁盤大小爲 100G 的 Prometheus 主機做主備架構,進行 500 個節點以下的基礎架構的監控,然後由於抓取間隔和數據留存時間的設定是直接關乎內存和磁盤空間的使用率,所以我們可以通過調整這兩點,來調整內存和磁盤空間到合適的值。

二、大規模監控的高可用方案

根據官方文檔,Prometheus 有一個面向於大規模目標監控的功能 ** FEDERATION ** 聯邦機制,是指從其它 Prometheus 主機上抓取特定的數據到一個彙總的 Prometheus 主機中,既然是從其它 Prometheus 主機彙總而來,那麼數據量會很大,難以長久儲存在主機本地,所以我們需要使用 Prometheus 的遠程讀寫數據庫的功能,來遠程保存至第三方數據庫。 而這個用於彙總的 Prometheus 主機,我們也使用主備兩臺主機做高可用處理,不過與第三方數據庫之間需要用一個 adapter 工具,來做主備數據庫傳輸切換。如下圖所示。

在這裏第三方存儲是使用的 PostgreSQL + TimescaleDB,而 adapter 是用的官方開發的 Prometheus-postgresql-adpter 自帶 leader 切換的功能,當設置好 Prometheus 和 adapter 後,如果 adapter 長時間沒有收到對應的 Prometheus 的數據,那麼它會自動鎖定然後切換到備用 adapter,備用 adpter 會將自己所對應的 Prometheus 主機的數據發往第三方存儲。 也就是說,這兩臺 Prometheus 主機都是會實時接收其它相同 Prometheus 主機的數據,然後只有其中一方的數據會被標識爲 leader 的 adapter 發送到第三方存儲中。完整架構圖如下。

三、總結

不管是第一章的小規模監控高可用方案還是第二章的大規模監控高可以方案,主要應用的還是 Prometheus 官方文檔提到高可用方法和 Prometheus 的聯邦機制機遠程讀寫存儲的功能。而主備切換的工具 keepalive 和 Prometheus-postgresql-adpter,以及遠程數據庫 PostgreSQL+TimescaleDB,這些都可以替換成 Nginx proxy、服務註冊工具 consul,遠程存儲 Thanos,我們可以根據實際需求做測試,再決定使用哪些第三方工具。

轉自:wrf2020

jianshu.com/p/bccfc58bcbcd

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/aa7aesbpPTxKpMkcJI_Zow