- 深入淺出Prometheus:原理、應用、源碼與拓展詳解
- 陳曉宇 楊川胡 陳嘯編著
- 807字
- 2019-06-19 15:57:28
1.10 監控系統的對比
下面針對 Prometheus、Zabbix、Nagios 和 Open-Falcon 這幾種監控系統進行橫向對比,如表1-1所示。
表1-1

從開發語言上看,為了應對高并發和快速迭代的需求,監控系統的開發語言已經慢慢從C轉移到Go。不得不說,Go憑借簡潔的語法和優雅的并發,在Java占據業務開發領域、C 占領底層開發領域的情況下,準確定位中間件開發需求,在當前的開源中間件產品中被廣泛應用。
從系統成熟度方面來看,Zabbix 和 Nagios 都是老牌的監控系統:Zabbix 是在1998年出現的,Nagios 是在1999年出現的,系統功能比較穩定,成熟度較高。而Prometheus和Open-Falcon都是最近幾年才誕生的,雖然功能還在不斷迭代、更新,但它們站在巨人的肩膀之上,在架構設計上借鑒了很多老牌監控系統的經驗。
從系統擴展性方面來看,Zabbix 和 Open-Falcon 都可以自定義各種監控腳本。Zabbix不僅可以做到主動推送,還可以做到被動拉取;Prometheus則定義了一套監控數據規范,并通過各種exporter擴展系統采集能力。
從數據存儲方面來看,Zabbix采用關系數據庫存儲數據,這極大限制了 Zabbix的數據采集性能。Nagios和Open-Falcon都采用了RDD數據存儲方式。Open-Falcon還加入了一致性 Hash 算法進行數據分片,并且可以對接到 OpenTSDB,而且Prometheus 自研的一套高性能時序數據庫,在 V3版本時可以達到每秒千萬級別的數據存儲,可通過對接第三方時序數據庫擴展對歷史數據的存儲性能。
從社區活躍度方面來看,目前 Zabbix 和 Nagios 的社區活躍度比較低,尤其是Nagios,Open-Falcon 的社區雖然也比較活躍,但基本都是國內的公司在參與。Prometheus的社區活躍度很高,并且得到CNCF的支持,后期的發展值得期待。
從容器支持方面來看,由于 Zabbix 和 Nagios 出現得比較早,當時容器還沒有誕生,所以它們對容器的支持自然也比較差。Open-Falcon雖然提供了容器監控功能,但支持力度有限。Prometheus的動態發現機制,不僅支持Swarm原生集群,還支持Kubernetes 容器集群監控,是目前容器監控的最佳解決方案。Zabbix 在傳統監控系統中,尤其是在服務器相關監控方面,占據絕對優勢。Nagios則在網絡監控方面有廣泛應用。伴隨著容器的發展,Prometheus 開始成為容器監控方面的標配,并將被廣泛應用??傮w來說,Prometheus可以說是目前監控領域最鋒利的“瑞士軍刀”了。