一篇文章帶你了解當下主流的監控工具
監控做為自動化運維的重要組成部分,承擔著反饋的作用。
以往,在缺少告警機制的情況下,企業無法洞悉到系統發生故障,只能通過用戶的反饋來獲取,系統運維人員往往也只是充當了一個“救火” 隊員,大面積的系統癱瘓往往也會給企業和用戶帶來極大的損失
當下,通過監控,企業可以在系統受損時得到反饋,及時處理問題,大大減小了系統故障對企業和用戶造成的影響,更有可以做到無感知的修復。
選擇監控工具的原則是根據公司業務場景選擇,而不要盲目的追求新工具(如果公司內部有一定的研發能力,且對監控工具的需求比較大,那嘗試新工具也未嘗不可)。
但是大多數企業對于監控都是新模塊,面對琳瑯滿目的監控工具,不知所措。是選擇便宜的商業軟件,還是選擇開源工具自主開發,還是選擇第三方公司外包。今天就跟大家分享目前市場上最熱的十個監控工具詳解,希望能夠幫助您更好的選擇到合適的監控工具。
Prometheus
官方網站:https://prometheus.io/docs/introduction/overview/
Prometheus是一套開源的監控系統,它將所有信息都存儲為時間序列數據;因此實現一種Profiling監控方式,實時分析系統運行的狀態、執行時間、調用次數等,以找到系統的熱點,為性能優化提供依據。

本身的功能在于數據的提取,不具備監控功能,但是依靠它周邊組件從而實現了強大的監控功能。
優點:
- 易管理性,核心部分只有一個單獨的二進制文件,可直接在本地工作,不依賴于分布式存儲。
- 業務數據相關性,監控服務的運行狀態,從而讓用戶可以獲取服務和應用內部真正的運行狀態。
- 高效,單一Prometheus可以處理數以百萬的監控指標;每秒處理數十萬的數據點。
- 易于伸縮,通過使用功能分區(sharing)+聯邦集群(federation)可以對Prometheus進行擴展,形成一個邏輯集群;Prometheus提供多種語言的客戶端SDK。
- 良好的可視化,自帶有Prometheus UI,還提供了一個獨立的基于Ruby On Rails的Dashboard解決方案Promdash。
缺點:
- 對于Prometheus的使用者來說,所有的公制端點都必須是可達的,這意味著一個更加復雜的安全網絡配置。
- 在大型部署中,擴展成為一個問題,Prometheus建議收集短期的工作指標。
- Prometheus的主要設計目標之一是操作簡單性。這樣,Prometheus就限制了監控系統的可能失效模式數量,遵循著一原則,Prometheus目前只局限于單個點,因為集群帶來了額外的操作復雜性,使用單個節點不那么復雜,但是對可以由Prometheus監控的度量指標適量有著嚴格的限制。
Zabbix
Zabbix是一個基于WEB界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案,在企業中有非常全面的應用,也是目前國內互聯網用戶中使用最廣的監控軟件。

入門容易、上手簡單、功能強大并且開源免費是對Zabbix的最直觀評價。Zabbix易于管理和配置,能生成比較漂亮的數據圖,其自動發現功能大大減輕日常管理的工作量,豐富的數據采集方式和API接口可以讓用戶靈活進行數據采集,而分布式系統架構可以支持監控更多的設備。理論上,通過Zabbix提供的插件式架構,可以滿足企業的任何需求。
優點:
- 支持多平臺的企業級分布式開源監控軟件
- 安裝部署簡單,多種數據采集插件靈活集成
- 功能強大,可實現復雜多條件告警,
- 自帶畫圖功能,得到的數據可以繪成圖形
- 提供多種API接口,支持調用腳本
- 出現問題時可自動遠程執行命令(需對agent設置執行權限)
缺點:
- 項目批量修改不方便;
- 中文資料較少,服務支持有限:
- 入門容易,但是深層次需求需要非常熟悉 Zabbix 并進行大量的二:次定制開發,難度較大;
- 系統級別報警、報警郵件、自定義項目報警需要自己設置,過程繁瑣;
- 缺少數據匯總功能,數據報表也需進行二次開發。
Nagios
Nagios是一款開源的電腦系統和網絡監視工具,能有效監控Windows、Linux和Unix的主機狀態,交換機路由器等網絡設置,打印機等。在系統或服務狀態異常時發出郵件或短信報警通知運維人員,在狀態恢復后發出正常的郵件或短信通知。

Nagios提供一個基于瀏覽器的web界面,方便管理人員查看系統的運行狀態,網絡狀態、服務狀態、日志信息,以及其他異常現象。
優點:
- 出錯的服務器、應用和設備會自動重啟,自動日志滾動
- 配置靈活,可以自定義shell腳本,通過分布式監控模式
- 支持以冗余方式進行主機監控,報警設置多樣
- 命令重新加載配置文件無需打擾Nagios的運行
缺點:
- 事件控制臺功能弱,插件易用性差
- 對性能、流量等指標的處
- 無歷史數據,難追查故障
- 配置復雜,初學者費時長
Open-falcon
小米的監控系統:OpenFalcon是一款企業級、高可用、可擴展的開源監控解決方案。

可以從運營級別(基本配置即可),以及應用級別(二次開發,通過端口進行日志上報),對服務器、操作系統、中間件、應用進行全面的監控,及報警。
優點:
- 自動發現,支持 falcon-agent. Snmp、支持用戶主動 push、用戶自定義插件支持;
- 支持單周期億次的數據采集、告警判定、歷史數據存儲和查詢;
- 支持策略模板、模板繼承和覆蓋、多種告警方式、支持 callback 調用;
- 單機支撐 200 萬 metric 的上報、歸檔、存儲;
- 采用 rdool 的數據歸檔策略;
- 多維度的數據展示,用戶自定義 Screen;
- 通過各種插件目前支持 Linux、Windows、Mysql、Redis、Memache RabbitMQ 和交換機監控。
缺點:
- 發布時間較短;
- 不支持很多基礎的服務監控插件(如 Tomcat、apache 等);
- 功能不完善
- 無專門運維支撐,社區運營有欠缺。
Ganglia
官方網站:http://ganglia.info/
Ganglia監控系統是UC Berkeley開源的一個項目,設計初衷就是要做好分布式集群的監控。監控層面包含資源層面和業務層面,資源層面包含cpu、memory、disk、IO、網絡負載等

它是一個易于擴展的監控系統。使用它可以實時查看 Linux 服務器和集群(圖形化展示)中的各項性能指標。
優點:
- 適合監控系統性能,通過曲線很容易見到每個節點的工作狀態
- 可以自定義監控項,監控展示有表格和圖像兩種,支持手機版
- 部署方便,通過不同的分層管理上萬臺機器,無需逐個添加配置,有利于后期的大規模擴張。
缺點:
- 沒有內置的消息通知系統
- 沒有報警機制,出現問題不能夠及時報警
Cacti
Cacti是一套基于PHP,MySQL,SNMP及RRDTool開發的網絡流量監測圖形分析工具。它提供了非常強大的數據和用戶管理功能,可以指定每一個用戶能查看樹狀結構、host以及任何一張圖,還可以與LDAP結合進行用戶驗證,同時也能自己增加模板,功能非常強大完善。

優點:
- 開源,自由發行,開放源代碼,運行高效。
- 跨平臺,支持的平臺redhat 、windows 、solaris、centos 、suse
- 界面友好,圖形豐富、各種模板、自定義模板
- 可擴展,支持二十種的插件,豐富的插件資源,大大提高了cacti的功能。
缺點:
- 使用文本式的數據庫,數據不能重復使用;
- 只能按日、周、月、年來查看數據;每圖只能畫兩個DS(一條線、一個塊);
- 每取一次數據即需要繪圖一次,浪費系統資源;
- 不具備管理功能。
Graylog
Graylog是一個開源的完整的日志管理工具,功能和ELK類似,但又比ELK要簡單,是強大的日志管理、分析工具。它基于 Elasticsearch, Java和MongoDB。Graylog可以收集監控多種不同應用的日志

優點:
- 一體化方案,安裝方便,不像ELK有3個獨立系統間的集成問題。
- 個性化定制開發(帶來很大的自由度)采集日志的腳本,
- 搜索結果高亮顯示。
- 搜索語法簡單
缺點:
- 不能處理多行日志,比如Mysql慢查詢,Tomcat/Jetty應用的Java異常打印
- 不能保留原始日志,只能把原始日志分字段保存,這樣搜索日志結果是一堆Json格式文本,無法閱讀。
- 不符合正則表達式匹配的日志行,被全部丟棄。
Grafana
官方網站:http://grafana.org/

Grafana是一個可視化面板(Dashboard),有著非常漂亮的圖表和布局展示,功能齊全的度量儀表盤和圖形編輯器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作為數據源。
Grafana是一個展示的工具,我們可以搭配Prometheus和zabbix一同使用。
Zenoss Core
Zenoss Core是開源企業級IT管理軟件-是智能監控軟件,他允許IT管理員依靠單一的WEB控制臺來監控網絡架構的狀態和健康度。

Zenoss Core的強大能力來自于深入的列表與配置管理數據庫,以發現和管理公司IT環境的各類資產(包括服務器、網絡、和其他結構設備)。Zenoss可以創建 關鍵資產清單和對應的組件級別(接口、服務、進程,已安裝的軟件等)。建立好模型后,就可以監控與報告IT架構中各種資源的狀態和性能容限了。 Zenoss同時提供與CMDB關聯的事件和錯誤管理系統,以協助提高各類事件和提醒的管理效率。
優點:
- 功能全面,網絡管理軟件所應涵蓋的功能主要有:可用性管理,事件管理,性能監視等
- 配置使用靈活,由于使用了CMDB數據庫來存儲數據模型對象,可以方便地對數據模型對象進行增刪改操作
- 對開發者友好,基于zenoss下的開發,方便在于開發周期短,代碼簡潔,上手較為容易
缺點:
- 對資源要求較高,即使只管理少數幾臺設備,也需要消耗大量硬件及內存等附加資源
- 針對windows系統,開源版只提供SNMP,通過WMI檢測CPU,Disk,軟硬件和性能只在收費版提供
Graphite
Graphite 是一款用 Python 寫的開源企業級監控繪圖工具,可以在廉價機硬件上運行。Graphite 可以實時收集、存儲、顯示時間序列類型的數據。

優點:
- 非常快,它的架構是模塊化可規模化的
- 有很多與Graphite相互協作的開源工具
- Graphite完成單個工作且做得很好
缺點:
- Graphite不能對數據進行分片,因此要解決這個問題就是采用多個Graphite實例
- Graphite的安裝是一個很復雜的任務,盡管目前有了完整的Docker映像可以一次性安裝Graphite及其依賴