一匾效、現(xiàn)實可用的小規(guī)模高可用方案
??關(guān)于Prometheus的高可用,官方文檔中只提供了一個解決方案,具體實現(xiàn)方式如下:
??使用兩個Prometheus主機(jī)監(jiān)控同樣的目標(biāo)赁咙,然后有告警出現(xiàn)镇匀,也會發(fā)送同樣的告警給Alertmanager照藻,然后使用Alertmanager自身的去重告警功能,只發(fā)出一條告警出來坑律。從而實現(xiàn)了prometheus高可用的一個架構(gòu)岩梳。
??基于此架構(gòu),我們還可以使用keepalived做雙機(jī)熱備晃择,通過VIP與grafana相連冀值。實現(xiàn)一個完整的帶web界面展示告警的高可用Prometheus監(jiān)控架構(gòu)。
??根據(jù)查找的資料宫屠,可知Prometheus的監(jiān)控數(shù)量和Prometheus主機(jī)的內(nèi)存和磁盤大小的關(guān)系表列疗。
??根據(jù)表格中數(shù)據(jù),我們可以用兩臺8G內(nèi)存浪蹂,磁盤大小為100G的Prometheus主機(jī)做主備架構(gòu)抵栈,進(jìn)行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ī)模目標(biāo)監(jiān)控的功能FEDERATION聯(lián)邦機(jī)制,是指從其它Prometheus主機(jī)上抓取特定的數(shù)據(jù)到一個匯總的Prometheus主機(jī)中滑绒,既然是從其它Prometheus主機(jī)匯總而來闷堡,那么數(shù)據(jù)量會很大,難以長久儲存在主機(jī)本地疑故,所以我們需要使用Prometheus的遠(yuǎn)程讀寫數(shù)據(jù)庫的功能杠览,來遠(yuǎn)程保存至第三方數(shù)據(jù)庫。
??而這個用于匯總的Prometheus主機(jī)纵势,我們也使用主備兩臺主機(jī)做高可用處理踱阿,不過與第三方數(shù)據(jù)庫之間需要用一個adapter工具,來做主備數(shù)據(jù)庫傳輸切換钦铁。如下圖所示软舌。
??在這里第三方存儲是使用的PostgreSQL + TimescaleDB,而adapter是用的官方開發(fā)的Prometheus-postgresql-adpter自帶leader切換的功能育瓜,當(dāng)設(shè)置好Prometheus和adapter后葫隙,如果adapter長時間沒有收到對應(yīng)的Prometheus的數(shù)據(jù),那么它會自動鎖定然后切換到備用adapter躏仇,備用adpter會將自己所對應(yīng)的Prometheus主機(jī)的數(shù)據(jù)發(fā)往第三方存儲恋脚。
??也就是說腺办,這兩臺Prometheus主機(jī)都是會實時接收其它相同Prometheus主機(jī)的數(shù)據(jù),然后只有其中一方的數(shù)據(jù)會被標(biāo)識為leader的adapter發(fā)送到第三方存儲中糟描。完整架構(gòu)圖如下怀喉。
三、總結(jié)
??不管是第一章的小規(guī)模監(jiān)控高可用方案還是第二章的大規(guī)模監(jiān)控高可以方案船响,主要應(yīng)用的還是Prometheus官方文檔提到高可用方法和Prometheus的聯(lián)邦機(jī)制機(jī)遠(yuǎn)程讀寫存儲的功能躬拢。而主備切換的工具keepalive和Prometheus-postgresql-adpter,以及遠(yuǎn)程數(shù)據(jù)庫PostgreSQL+TimescaleDB见间,這些都可以替換成Nginx proxy聊闯、服務(wù)注冊工具consul,遠(yuǎn)程存儲Thanos米诉,我們可以根據(jù)實際需求做測試菱蔬,再決定使用哪些第三方工具。
遠(yuǎn)程存儲相關(guān)參考資料:https://blog.timescale.com/blog/prometheus-ha-postgresql-8de68d19b6f5/