系統監控方案:
當下主流的監控方案有三個,分別是:
- Zabbix
- Prometheus
- Open-falon
一、簡介
Zabbix
zabbix是一個老牌監控系統,基於web界面的企業級開源監控軟件。Zabbix服務器需要LAMP環境或LNMP環境,提供分布式系統監控與網絡監視功能。其具備主機的性能監控,網絡設備性能監控,數據庫性能監控,多種告警方式,詳細報表、圖表的繪制等功能。監測對象可以是Linux或Windows服務器,也可以是路由器、交換機等網絡設備,通過SNMP、zabbix Agent、PING、端口監視等方法提供對遠程網絡服務器等監控、數據收集等功能。
特點:可以監控服務器,路由器,交換機
Prometheus(普羅米修斯)
Prometheus是由SoundCloud開發的開源監控系統的開源版本。2016年,由Google發起的Linux基金會(Cloud Native Computing Foundation,CNCF)將Prometheus納入其第二大開源項目。Prometheus在開源社區也十分活躍。Prometheus是與kubernetes是師兄弟關系,CNCF開源第一個項目是k8s,第二項目就是prometheus。
特點:更適合雲環境下監控,特別是k8s系統下的服務監控
Open-falcon
Open-Falcon是小米運維部門開源出來的互聯網企業級監控系統,目前包括小米、金山雲、美團、京東金融、趕集網等都在使用Open-Falcon。Open-Falcon 整體可以分為兩部分,即繪圖組件、告警組件。
“繪圖組件”負責數據的采集、收集、存儲、歸檔、采樣、查詢、展示(Dashboard/Screen)等功能,可以單獨工作,作為time-series data的一種存儲展示方案。
“告警組件”負責告警策略配置(portal)、告警判定(judge)、告警處理(alarm/sender)、用戶組管理(uic)等,
特點:國產監控系統,資料豐富
總結:
Zabbix文檔資料較少,配置項不多,功能不夠豐富,優點是直接可以在頁面上進行配置;
Prometheus功能比Zabbix多,比Open-falcon少,配置項多但文檔不夠詳細;Open-falcon功能豐富,官方文檔也比較詳細。
二、安裝部署難度
Zabbix:
- 安裝zabbix-server端
- 使用web頁面配置
- 增加client端的監控都在web上完成
Prometheus
- 安裝go 語言環境
- 在監控服務器上安裝prometheus
- 在被監控環境上安裝客戶端export
- 安裝grafana(可以不裝)
Open-falcon
- 安裝redis
- 安裝mysql
- 安裝go語言環境
- 安裝后端模塊
- 安裝客戶端模塊

三、數據采集
zabbix
Zabbix 通過 SNMP、Agent、ICMP、SSH、IPMI 等對系統進行數據采集。數據量大時,展示需要直接讀取數據庫,會卡慢
節點監控規模:1000+
prometheus
Prometheus的基本原理是通過HTTP協議周期性抓取被監控組件的狀態,任意組件只要提供對應的HTTP接口就可以接入監控。不需要任何SDK或者其他的集成過程。這樣做非常適合做虛擬化環境監控系統,比如VM、Docker、Kubernetes等。輸出被監控組件信息的HTTP接口被叫做exporter 。目前互聯網公司常用的組件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系統信息(包括磁盤、內存、CPU、網絡等等)。
Prometheus采集的數據包括了主機性能監控、容器性能監控、Nginx訪問流量、Kubernetes狀態以及平台各個組件的性能指標。目前Prometheus本地數據指保留一個月,歷史數據保存到M3DB中。
節點監控規模:1000+
Open-falcon
Open-falcon數據傳輸基於tcp協議。agent節點能自動獲取到系統的基礎監控指標,並上報給transfer,agent與transfer建立了TCP長連接,每隔60秒發送一次數據到transfer。
open-falcon的agent組件直接支持CPU、Load、內存、磁盤、IO、網絡相關、內核參數、ss 統計輸出、端口采集、核心服務的進程存活信息采集、關鍵業務進程資源消耗、NTP offset采集、DNS解析采集。還有第三方擴展組件可以支持更多的數據采集。
節點監控規模:1000+

四、數據存儲
Zabbix
存儲:mysql prostgresql
Zabbix存儲在MySQL上,也可以存儲在其他數據庫服務。Zabbix由於使用了關系型數據存儲時序數據,所以在監控大規模集群時常常在數據存儲方面捉襟見肘。所以從Zabbix 4.2版本后開始支持TimescaleDB時序數據庫,不過目前成熟度還不高。
Prometheus
存儲:opentsdb
Prometheus自研一套高性能的時序數據庫,在V3版本可以達到每秒千萬級別的數據存儲,通過對接第三方時序數據庫擴展歷史數據的存儲。
為了解決單節點存儲的限制,prometheus沒有自己實現集群存儲,而是提供了遠程讀寫的接口,讓用戶自己選擇合適的時序數據庫來實現prometheus存儲的擴展性。
Open-falcon
存儲:歸檔用RRD 存儲用mysql +redis+opentsdb
Open-Falcon都采用RDD數據存儲,Open-Falcon還加入了一致性hash算法分片數據,並且可以對接到OpenTSDB。
RRD 全稱是 Round Robin Database ,即「環型數據庫」。顧名思義,它是一種循環使用存儲空間的數據庫,適用於存儲和時間序列相關的數據。
RRD 數據庫在被創建的時候就已經定義好了大小,當空間存儲滿了以后,又從頭開始覆蓋舊的數據,所以和其他線性增長的數據庫不同,RRD 的大小可控且不用維護。
總結:
如果只是短期存儲和查詢,那么Prometheus、Open-falcon、zabbix現有的都能滿足要求。但如果要對大量數據進行分析預測等過程,則三者都需要轉用其他可接入spark、mapreduce等的數據庫。Open-falcon需要進行二次開發,Prometheus提供了遠程讀寫的接口。Zabbix后台用C開發,二次開發的難度比較大。

五、告警監控
1.Zabbix 可以實現復雜的多條報警信息
電話報警、郵件報警、微信報警、短信報警、報警升級機制等(無論什么報警都可以)。
2.Prometheuss
目前支持郵件、slack、微信和webhook,如果是對接釘釘,便可以通過webhook方式觸發釘釘的客戶端發送告警。
3.Open-falcon
短信、微信、郵件、電話。
可配置報警級別,比如P0/P1/P2等等,每個及別的報警都會對應不同的redis隊列。
六、選擇方案
|
|
安裝復雜度 |
數據采集支持 |
數據存儲難度 |
告警支持 |
| Zabbix |
中 |
低 |
高 |
高 |
| Prometheuss |
低 |
高 |
高 |
中 |
| Open-falcon |
高 |
中 |
低 |
中 |
對比三種監控數據的各個特征指標,能夠得出結論open-falcon不是功能最強大的,但是是使用最簡單便捷的。特別是數據存儲方面不用擔心數據量一直增加而出現的磁盤問題,節省運維成本。同時考慮目前openlab系統的服務器規模,功能需求不復雜以及可能需要的告警擴展,open-falcon都能夠滿足需求。
