本文介紹常見監(jiān)控工具 zabbix 和 prometheus 的主要特點(diǎn)以及應(yīng)用于容器監(jiān)控時(shí)各自的優(yōu)缺點(diǎn),希望能夠幫助同學(xué)們選擇適合項(xiàng)目的監(jiān)控工具。
說明:本文介紹的兩個(gè)工具 zabbix 和 prometheus 都是開源、免費(fèi)的。
Zabbix 的主要特點(diǎn)
作為老牌監(jiān)控工具,zabbix 歷史悠久,功能全面且強(qiáng)大。下面羅列一些它的主要特點(diǎn):
數(shù)據(jù)收集方式靈活全面
- 支持可用性和性能檢查
- 支持 SNMP(包括主動(dòng)輪訓(xùn)和被動(dòng)獲取),IPMI,JMX,VMware 監(jiān)控
- 支持自定義檢查
- 按照自定義的間隔收集需要的數(shù)據(jù)
- 支持 server/proxy+agents 的模式
自動(dòng)發(fā)現(xiàn)監(jiān)控對(duì)象
- 自動(dòng)發(fā)現(xiàn)網(wǎng)絡(luò)設(shè)備
- 監(jiān)控代理自動(dòng)注冊(cè)
- 發(fā)現(xiàn)文件系統(tǒng),網(wǎng)絡(luò)接口等等
高度可配置化的報(bào)警
- 支持收斂的報(bào)警策略
- 可以使用宏變量讓報(bào)警通知更加高效
- 在報(bào)警的同時(shí)可以執(zhí)行應(yīng)對(duì)策略
強(qiáng)大的模板功能
- 在模板中分組檢查
- 模板可以關(guān)聯(lián)其他模板
完善的權(quán)限管理系統(tǒng)
- 安全用戶認(rèn)證
- 特定用戶可以限制訪問特定的視圖
近乎無限的擴(kuò)展能力
- 支持通過腳本進(jìn)行擴(kuò)展
看一眼 zabbix 提供的菜單感受下它的豐富功能:
Prometheus 的主要特點(diǎn)
Prometheus 是一個(gè)開源的系統(tǒng)監(jiān)控和警報(bào)工具包,許多公司和組織都采用了 Prometheus,該項(xiàng)目擁有非常活躍的開發(fā)人員和用戶社區(qū)。下面是 prometheus 的一些主要特點(diǎn):
- 多維度數(shù)據(jù)模型
- 靈活的查詢語言
- 不依賴分布式存儲(chǔ),單個(gè)服務(wù)器節(jié)點(diǎn)是自主的
- 通過 pull 方式采集時(shí)序數(shù)據(jù)
- 可以通過中間網(wǎng)關(guān)進(jìn)行時(shí)序列數(shù)據(jù)推送
- 通過服務(wù)發(fā)現(xiàn)或者靜態(tài)配置來發(fā)現(xiàn)目標(biāo)服務(wù)對(duì)象
- 支持多種界面展示方案,比如 grafana 等
事實(shí)上,業(yè)界多把 prometheus 用于容器監(jiān)控的解決方案,比如與 k8s 的集成。使用 cadvisor + prometheus + grafana 搭建容器監(jiān)控事實(shí)上已經(jīng)成為了中小企業(yè)的首選方案。下圖是由 grafana 展示的單臺(tái)主機(jī)上運(yùn)行容器的匯總信息(當(dāng)然,數(shù)據(jù)源來自 prometheus):
其實(shí),prometheus 的擴(kuò)展性也很好,通過擴(kuò)展不同的 exporter 可以收集不同應(yīng)用、設(shè)備的信息。
使用 zabbix 監(jiān)控容器的缺點(diǎn)
Zabbix 的功能非常全面,以至于僅僅用它來監(jiān)控容器讓我們覺著是大材小用了,同時(shí)也難免會(huì)覺著它不太專業(yè)(就監(jiān)控容器來說)。
事實(shí)上 zabbix 監(jiān)控容器的能力一點(diǎn)也不弱,特別是從版本 4.2 開始,zabbix 也支持 prometheus 做為數(shù)據(jù)源了。這樣一來,zabbix 也就是在視覺展示上比 grafana 差些罷了。
當(dāng)然 zabbix 還有其它一些問題,比如功能過多(優(yōu)點(diǎn)有時(shí)候也會(huì)變成缺點(diǎn)),如果僅僅需要容器監(jiān)控功能,會(huì)覺著 zabbix 用起來太繁瑣了。
Zabbix 使用的是 MySQL 數(shù)據(jù)庫,對(duì)于時(shí)序型的數(shù)據(jù),性能上肯定沒法和專門的時(shí)序型數(shù)據(jù)庫相比。
最后,zabbix 的安裝和配置雖然不是很難,但離開箱即用還是有段距離的。
使用 prometheus 監(jiān)控容器的優(yōu)缺點(diǎn)
Prometheus 和 zabbix 比起來就輕多了,它就是為容器監(jiān)控而生的。特別是它使用的是時(shí)序型的數(shù)據(jù)庫,對(duì)于監(jiān)控類的場景而言性能非常好。
Prometheus + grafana 做出來的視覺效果非常的棒:
并且多數(shù)情況下你都不需要自己動(dòng)手設(shè)計(jì)這些圖表,下載大家做好的模板,直接就能用,效果棒棒的!
但與 zabbix 相比,grafana 的報(bào)警功能卻不夠靈活。
關(guān)于監(jiān)控信息的收集,zabbix 支持 pull/push 兩種模式,而 prometheus 只支持 pull 模式。關(guān)于 pull/push 模式,大家的關(guān)注點(diǎn)似乎都在性能上。而對(duì)于我管理的較小的系統(tǒng)來說基本上沒有性能問題,我更關(guān)注的是安全性。使用 pull 模式,需要生產(chǎn)環(huán)境對(duì)外暴露端口號(hào),我們需要為此提供安全性相關(guān)的配置,而使用 push 模式則沒有這個(gè)問題(其實(shí)是需要提供監(jiān)控服務(wù)器端的安全配置)。
結(jié)論
不管是 zabbix 還是 prometheus 都能夠完成容器監(jiān)控的任務(wù)。Zabbix 大而全,在傳統(tǒng)的監(jiān)控領(lǐng)域依然是主流的解決方案。而 prometheus 作為一個(gè)輕量級(jí)的后起之秀,在性能和展示方面優(yōu)勢比較明顯,對(duì)容器監(jiān)控支持的非常好。個(gè)人認(rèn)為,在中小企業(yè)中搭建 zabbix 監(jiān)控平臺(tái)是非常必要的,它能把大大小小、各式各樣的設(shè)備管理起來。而對(duì)于那些運(yùn)行在云端的容器,選擇 prometheus 搭建獨(dú)立的監(jiān)控系統(tǒng)會(huì)是個(gè)不錯(cuò)的選擇。
參考:
Zabbix Documentation 3.4 功能點(diǎn)(https://www.zabbix.com/documentation/3.4/zh/manual/introduction/features)
Zabbix 4.2 發(fā)布:支持 Prometheus 數(shù)據(jù)收集(https://www.infoq.cn/article/4IZBSI-ZASgfR9kbsW0H)
《Zabbix 企業(yè)級(jí)分布式監(jiān)控系統(tǒng)》
《Zabbix 監(jiān)控系統(tǒng)深度實(shí)踐第2版》
Prometheus : 入門(https://www.cnblogs.com/sparkdev/p/7637583.html)
Prometheus and the Debate Over 'Push' Versus 'Pull' Monitoring(https://thenewstack.io/exploring-prometheus-use-cases-brian-brazil/)
作者:sparkdev
出處:http://www.cnblogs.com/sparkdev/