本文介紹常見監控工具 zabbix 和 prometheus 的主要特色以及應用於容器監控時各自的優缺點,但願可以幫助同窗們選擇適合項目的監控工具。
說明:本文介紹的兩個工具 zabbix 和 prometheus 都是開源、免費的。html
做爲老牌監控工具,zabbix 歷史悠久,功能全面且強大。下面羅列一些它的主要特色:
數據收集方式靈活全面mysql
自動發現監控對象sql
高度可配置化的報警數據庫
強大的模板功能安全
完善的權限管理系統服務器
近乎無限的擴展能力網絡
看一眼 zabbix 提供的菜單感覺下它的豐富功能:分佈式
Prometheus 是一個開源的系統監控和警報工具包,許多公司和組織都採用了 Prometheus,該項目擁有很是活躍的開發人員和用戶社區。下面是 prometheus 的一些主要特色:工具
事實上,業界多把 prometheus 用於容器監控的解決方案,好比與 k8s 的集成。使用 cadvisor + prometheus + grafana 搭建容器監控事實上已經成爲了中小企業的首選方案。下圖是由 grafana 展現的單臺主機上運行容器的彙總信息(固然,數據源來自 prometheus):性能
其實,prometheus 的擴展性也很好,經過擴展不一樣的 exporter 能夠收集不一樣應用、設備的信息。
Zabbix 的功能很是全面,以致於僅僅用它來監控容器讓咱們覺着是大材小用了,同時也不免會覺着它不太專業(就監控容器來講)。
事實上 zabbix 監控容器的能力一點也不弱,特別是從版本 4.2 開始,zabbix 也支持 prometheus 作爲數據源了。這樣一來,zabbix 也就是在視覺展現上比 grafana 差些罷了。
固然 zabbix 還有其它一些問題,好比功能過多(優勢有時候也會變成缺點),若是僅僅須要容器監控功能,會覺着 zabbix 用起來太繁瑣了。
Zabbix 使用的是 mysql 數據庫,對於時序型的數據,性能上確定無法和專門的時序型數據庫相比。
最後,zabbix 的安裝和配置雖然不是很難,但離開箱即用仍是有段距離的。
Prometheus 和 zabbix 比起來就輕多了,它就是爲容器監控而生的。特別是它使用的是時序型的數據庫,對於監控類的場景而言性能很是好。
Prometheus + grafana 作出來的視覺效果很是的棒:
而且多數狀況下你都不須要本身動手設計這些圖表,下載你們作好的模板,直接就能用,效果棒棒的!
但與 zabbix 相比,grafana 的報警功能卻不夠靈活。
關於監控信息的收集,zabbix 支持 pull/push 兩種模式,而 prometheus 只支持 pull 模式。關於 pull/push 模式,你們的關注點彷佛都在性能上。而對於我管理的較小的系統來講基本上沒有性能問題,我更關注的是安全性。使用 pull 模式,須要生產環境對外暴露端口號,咱們須要爲此提供安全性相關的配置,而使用 push 模式則沒有這個問題(實際上是須要提供監控服務器端的安全配置)。
不論是 zabbix 仍是 prometheus 都可以完成容器監控的任務。Zabbix 大而全,在傳統的監控領域依然是主流的解決方案。而 prometheus 做爲一個輕量級的後起之秀,在性能和展現方面優點比較明顯,對容器監控支持的很是好。我的認爲,在中小企業中搭建 zabbix 監控平臺是很是必要的,它能把大大小小、各式各樣的設備管理起來。而對於那些運行在雲端的容器,選擇 prometheus 搭建獨立的監控系統會是個不錯的選擇。
參考:
Zabbix Documentation 3.4 功能點
Zabbix 4.2 發佈:支持 Prometheus 數據收集
《Zabbix 企業級分佈式監控系統》
《Zabbix 監控系統深度實踐第2版》
Prometheus : 入門
Prometheus and the Debate Over 'Push' Versus 'Pull' Monitoring