Prometheus 高可用方案

Prometheus的本地存儲給Prometheus帶來了簡單高效的使用體驗,可以讓Promthues在單節(jié)點的情況下滿足大部分用戶的監(jiān)控需求。但是本地存儲也同時限制了Prometheus的可擴展性,帶來了數(shù)據(jù)持久化等一系列的問題。通過Prometheus的Remote Storage特性可以解決這一系列問題,包括Promthues的動態(tài)擴展,以及歷史數(shù)據(jù)的存儲。
而除了數(shù)據(jù)持久化問題以外,影響Promthues性能表現(xiàn)的另外一個重要因素就是數(shù)據(jù)采集任務(wù)量,以及單臺Promthues能夠處理的時間序列數(shù)。因此當監(jiān)控規(guī)模大到Promthues單臺無法有效處理的情況下,可以選擇利用Promthues的聯(lián)邦集群的特性,將Promthues的監(jiān)控任務(wù)劃分到不同的實例當中。
這一部分將重點討論Prometheus的高可用架構(gòu)。
一、現(xiàn)實可用的小規(guī)模高可用方案
關(guān)于 Prometheus 的高可用,官方文檔中只提供了一個解決方案,具體實現(xiàn)方式如下:

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

根據(jù)查找的資料,可知 Prometheus 的監(jiān)控數(shù)量和 Prometheus 主機的內(nèi)存和磁盤大小的關(guān)系表。


根據(jù)表格中數(shù)據(jù),我們可以用兩臺 8G 內(nèi)存,磁盤大小為 100G 的 Prometheus 主機做主備架構(gòu),進行 500 個節(jié)點以下的基礎(chǔ)架構(gòu)的監(jiān)控,然后由于抓取間隔和數(shù)據(jù)留存時間的設(shè)定是直接關(guān)乎內(nèi)存和磁盤空間的使用率,所以我們可以通過調(diào)整這兩點,來調(diào)整內(nèi)存和磁盤空間到合適的值。
二、大規(guī)模監(jiān)控的高可用方案
根據(jù)官方文檔,Prometheus 有一個面向于大規(guī)模目標監(jiān)控的功能** FEDERATION ** 聯(lián)邦機制,是指從其它 Prometheus 主機上抓取特定的數(shù)據(jù)到一個匯總的 Prometheus 主機中,既然是從其它 Prometheus 主機匯總而來,那么數(shù)據(jù)量會很大,難以長久儲存在主機本地,所以我們需要使用 Prometheus 的遠程讀寫數(shù)據(jù)庫的功能,來遠程保存至第三方數(shù)據(jù)庫。?而這個用于匯總的 Prometheus 主機,我們也使用主備兩臺主機做高可用處理,不過與第三方數(shù)據(jù)庫之間需要用一個 adapter 工具,來做主備數(shù)據(jù)庫傳輸切換。如下圖所示。

在這里第三方存儲是使用的 PostgreSQL + TimescaleDB,而 adapter 是用的官方開發(fā)的 Prometheus-postgresql-adpter 自帶 leader 切換的功能,當設(shè)置好 Prometheus 和 adapter 后,如果 adapter 長時間沒有收到對應(yīng)的 Prometheus 的數(shù)據(jù),那么它會自動鎖定然后切換到備用 adapter,備用 adpter 會將自己所對應(yīng)的 Prometheus 主機的數(shù)據(jù)發(fā)往第三方存儲。?也就是說,這兩臺 Prometheus 主機都是會實時接收其它相同 Prometheus 主機的數(shù)據(jù),然后只有其中一方的數(shù)據(jù)會被標識為 leader 的 adapter 發(fā)送到第三方存儲中。完整架構(gòu)圖如下。

三、總結(jié)
不管是第一章的小規(guī)模監(jiān)控高可用方案還是第二章的大規(guī)模監(jiān)控高可用方案,主要應(yīng)用的還是 Prometheus 官方文檔提到高可用方法和 Prometheus 的聯(lián)邦機制機遠程讀寫存儲的功能。而主備切換的工具 keepalive 和 Prometheus-postgresql-adpter,以及遠程數(shù)據(jù)庫 PostgreSQL+TimescaleDB,這些都可以替換成 Nginx proxy、服務(wù)注冊工具 consul,遠程存儲 Thanos,我們可以根據(jù)實際需求做測試,再決定使用哪些第三方工具。
文章轉(zhuǎn)載:Devops技術(shù)棧
(版權(quán)歸原作者所有,侵刪)
有收獲,點個在看?


