市場上有數以千計的開源運維監控工具,例如流量監控工具(MRTG、Cacti、SmokePing、Graphite等)和性能報警工具(Nagios、Zabbix、Zenoss Core、Ganglia、OpenTSDB等)可供選擇。

每個監控工具都有自己的特點和功能,側重點和目標也不完全相同,但在設計理念和實現方法上也存在很多共同之處。例如,采集數據、分析顯示、報警、簡單故障自動處理等。總之,監控工具的根本目標都是幫助企業實現IT系統服務可用性的可視化完整展示。

下面,我們將介紹并點評業內五種常用開源監控工具(Cacti、Nagios、Zabbix、Grafana、Prometheus、Nightingale、OpenFalcon)的功能。每種監視工具的優點和功能都不同,用戶可根據實際需求選擇合適的監控工具。

Cacti

Cacti是用PHP、MySQL、SNMP和RRDtool開發的網絡流量監控和繪圖工具。

Cacti通過snmpget檢索數據并使用RRDtool進行繪圖,但用戶不需要知道RRDtool的復雜參數。Cacti提供了非常強大的數據和用戶管理功能,可以指定樹結構、主機設備和每個用戶可以查看的任何圖表,也可以與LDAP結合使用進行用戶認證。同時,它還可以自定義模板。在顯示和監控歷史數據方面,它的功能相當不錯。

Cacti還添加了模板,通過強大的繪圖功能(數據疊加)使對不同設備的監控可重復使用和定制。

Nagios

Nagios是一個企業級監控系統,可以監控服務運行狀態和網絡信息,監控指定的本地或遠程主機參數和服務,并提供異常告警通知功能。

Nagios可以在Linux和UNIX平臺上運行,并且還為系統管理員提供了可選的基于Web的瀏覽器界面,用于查看網絡狀態、各種系統問題和日志等。Nagios專注于服務的可用性,可以根據觸發條件及時報警。

目前,雖然Nagios占據了一定的市場份額,但從產品進化來看,Nagios并沒有與時俱進,無法滿足不斷變化的監控需求,可擴展性和可用性需要改進,其高級功能集成在商業版Nagios XI中。

Zabbix

Zabbix是一個分布式監控系統,支持各種采集方式和采集客戶端,專用代理,還可以支持SNMP、IPMI、JMX、Telnet、SSH等多種協議。它將收集的數據存儲在數據庫中,然后對其進行分析和組織,以便在滿足條件時觸發警報。

Zabbix具有良好的擴展性,功能豐富,可以監控CPU負載、內存使用情況、磁盤使用情況、網絡狀態、端口監控、日志監控等。但是資源消耗較大,如果監控主機較多,可能會導致監控超時和告警超時等。

Prometheus

Prometheus是一個功能強大的為數據監控解決方案,擁有一個大型社區提供支持,該社區由來自700多家企業的6300多位貢獻者組成,代碼提交高達13500次,pull request數量超過7200次。

Prometheus具有以下特點:

  • 多維數據模型(基于時間序列的鍵值對)。
  • 靈活的查詢和聚合語言PromQL。
  • 提供本地存儲和分布式存儲。
  • 通過基于HTTP的拉取模型收集時序數據。
  • 推送模式可以通過Pushgateway(Prometheus的可選中間件)來實現。
  • 可以通過動態服務發現或靜態配置發現目標計算機。

Grafana

Grafana是一個用Go語言編寫的開源應用程序,主要用于大規模指標數據的可視化。

Grafana支持許多不同的數據源。每個數據源都對應一個特定的查詢編輯器,該編輯器的特性和功能是根據特定數據源的具體情況定制的。官方支持以下數據源:Graphite、Elasticsearch、InfluxDB、Prometheus、Cloudwatch、MySQL和OpenTSDB等。

每個數據源的查詢語言和功能都不同。用戶可將多個源的數據合并到一個儀表板中,其中每個面板都可關聯特定組織的特定數據源。