公司要上監(jiān)控:Zabbix 和 Prometheus 到底怎么選?千萬(wàn)別用錯(cuò)了!
點(diǎn)擊關(guān)注公眾號(hào),Java干貨及時(shí)送達(dá)
來源:www.cnblogs.com/xiaoyuxixi/p/12235979.html
新公司要上監(jiān)控,面試提到了 Prometheus 是公司需要的監(jiān)控解決方案,我當(dāng)然是選擇跟風(fēng)了。
之前主要做的是 Zabbix,既然公司需要 Prometheus,那沒辦法,只能好好對(duì)比一番,了解下,畢竟技多不壓身。

但稍稍深入一點(diǎn),我就體會(huì)到了 Prometheus 的優(yōu)點(diǎn),總結(jié)一下這兩種監(jiān)控方式。
兩種監(jiān)控工具的歷史簡(jiǎn)介
Prometheus
Kubernetes 自從 2012 年開源以來便以不可阻擋之勢(shì)成為容器領(lǐng)域調(diào)度和編排的領(lǐng)頭羊。
Prometheus 是由 SoundCloud 開發(fā)的開源監(jiān)控報(bào)警系統(tǒng)和時(shí)序列數(shù)據(jù)庫(kù)。
Zabbix
Zabbix 官方的發(fā)行版本時(shí)間可以追朔到 2012 年,時(shí)間上比 Prometheus 早了四年。
這樣可以快速反饋服務(wù)器的問題?;谝汛鎯?chǔ)的數(shù)據(jù),提供了出色的報(bào)告和數(shù)據(jù)可視化功能。
架構(gòu)對(duì)比
Prometheus

Prometheus Server 負(fù)責(zé)定時(shí)在目標(biāo)上抓取 Metrics(指標(biāo))數(shù)據(jù)并保存到本地存儲(chǔ)里面。
如果監(jiān)控?cái)?shù)據(jù)達(dá)到告警閾值 Prometheus Server 會(huì)通過 HTTP 將告警發(fā)送到告警模塊 alertmanger,通過告警的抑制后觸發(fā)郵件或者 webhook。最新 HTTP 面試題整理好了,大家可以在Java面試庫(kù)小程序在線刷題。
Zabbix

Zabbix 由 2 部分構(gòu)成,Zabbix Server 與可選組件 Zabbix Agent。Zabbix Server 可以通過 SNMP,Zabbix Agent,ping,端口監(jiān)視等方法提供對(duì)遠(yuǎn)程服務(wù)器/網(wǎng)絡(luò)狀態(tài)的監(jiān)視,數(shù)據(jù)收集等功能。
它可以運(yùn)行在 Linux,Solaris,HP-UX,AIX,F(xiàn)ree BSD,Open BSD,OS X 等平臺(tái)上。最新 Linux 面試題整理好了,大家可以在Java面試庫(kù)小程序在線刷題。
核心組件主要是 Agent 和 Server,其中 Agent 主要負(fù)責(zé)采集數(shù)據(jù)并通過主動(dòng)或者被動(dòng)的方式采集數(shù)據(jù)發(fā)送到 Server/Proxy,除此之外,為了擴(kuò)展監(jiān)控項(xiàng),Agent 還支持執(zhí)行自定義腳本。
Server 主要負(fù)責(zé)接收 Agent 發(fā)送的監(jiān)控信息,并進(jìn)行匯總存儲(chǔ),觸發(fā)告警等。
Zabbix Server 將收集的監(jiān)控?cái)?shù)據(jù)存儲(chǔ)到 Zabbix Database 中。Zabbix Database 支持常用的關(guān)系型數(shù)據(jù)庫(kù),如果 MySQL、PostgreSQL、Oracle 等,默認(rèn)是 MySQL,并提供 Zabbix Web 頁(yè)面(PHP 編寫)數(shù)據(jù)查詢。
Zabbix 由于使用了關(guān)系型數(shù)據(jù)存儲(chǔ)時(shí)序數(shù)據(jù),所以在監(jiān)控大規(guī)模集群時(shí)常常在數(shù)據(jù)存儲(chǔ)方面捉襟見肘。
所以從 Zabbix 4.2 版本后開始支持 TimescaleDB 時(shí)序數(shù)據(jù)庫(kù),不過目前成熟度還不高。
點(diǎn)擊關(guān)注公眾號(hào),Java干貨及時(shí)送達(dá)
綜合對(duì)比

從系統(tǒng)成熟度上看,Zabbix 是老牌的監(jiān)控系統(tǒng):Zabbix 是在 1998 年就出現(xiàn)的,系統(tǒng)功能比較穩(wěn)定,成熟度較高。
從配置復(fù)雜度上看,Prometheus 只有一個(gè)核心 server 組件,一條命令便可以啟動(dòng),相比而言,其他系統(tǒng)配置相對(duì)麻煩。
從容器支持角度看,由于 Zabbix 出現(xiàn)得比較早,當(dāng)時(shí)容器還沒有誕生,自然對(duì)容器的支持也比較差。
總結(jié)
Prometheus 基本上是正相反,上手難度大一些,但由于定制靈活度高,數(shù)據(jù)也有更多的聚合可能,起步后的使用難度遠(yuǎn)小于 Zabbix。
但如果已經(jīng)對(duì)傳統(tǒng)監(jiān)控系統(tǒng)有技術(shù)積累的話,還是要謹(jǐn)慎考慮更換監(jiān)控。
甚至環(huán)境變動(dòng)不會(huì)很頻繁的情況下,Zabbix 也會(huì)比 Prometheus 好使;但如果是云環(huán)境的話,除非是 Zabbix 玩的非常溜,可以做各種定制,否則還是 Prometheus 吧,畢竟人家就是干這個(gè)的。
Prometheus 開始成為主導(dǎo)及容器監(jiān)控方面的標(biāo)配,并且在未來可見的時(shí)間內(nèi)被廣泛應(yīng)用。
如果是剛剛要上監(jiān)控系統(tǒng)的話,不用猶豫了,Prometheus 準(zhǔn)沒錯(cuò)。

關(guān)注Java技術(shù)??锤喔韶?/strong>


