監控系統選型,一文輕鬆搞定!

這篇文章,我將對監控體系的基礎知識、原理和架構做一次系統性整理,同時還會對幾款最常用的開源監控產品做下介紹,以便大家選型時參考。內容包括 3 部分:

必知必會的監控基礎知識

我們可以理解監控系統就像我們古代打戰的哨兵一樣,哨兵的角色非常重要,敵人來了,哨兵會第一時間發出預警 (吹笛、打鼓、放煙),讓守城的戰士能夠最快的時間處理,應對。

那對於我們應用系統而言,監控系統就像我們第三隻眼,如果有應用系統出現問題,我們可以通過監控系統看是哪裏出現問題,是 redis 掛了,還是說服務器內存滿了,有監控系統我們可以很輕鬆、快速的定位問題。

甚至我們可以設置預警,對一些將要出現的問題進行提前預防處理,及時避免問題的發生。

1、監控系統的作用

2、常見的監控對象和指標都有哪些?

3、監控系統的基本流程

市面上的一些常見監控系統比較

下面再來認識下主流的開源監控系統,由於篇幅有限,我挑選了 3 款使用最廣泛的監控系統:「Zabbix」「Open-Falcon」「Prometheus」,會對它們的架構進行介紹,同時總結下各自的優劣勢。

1、Zabbix 介紹

Zabbix 1998 年誕生,核心組件採用 C 語言開發,Web 端採用 PHP 開發。它屬於老牌監控系統中的優秀代表,監控功能很全面,使用也很廣泛,差不多有 70% 左右的互聯網公司都曾使用過 Zabbix 作爲監控解決方案。

先來了解下 Zabbix 的架構設計:

Zabbix 的優勢:
Zabbix 的劣勢:

需要在被監控主機上安裝 Agent,所有的數據都存在數據庫裏,產生的數據很大,瓶頸主要在數據庫。

2、Open-Falcon(小米出品,國內流行)

Open-falcon 是小米 2015 年開源的企業級監控工具,採用 Go 和 Python 語言開發,這是一款靈活、高性能且易擴展的新一代監控方案,目前小米、美團、滴滴等超過 200 家公司在使用它。

小米初期也使用的 Zabbix 進行監控,但是機器量和業務量上來後,Zabbix 就有些力不從心了。因此,後來自主研發了 Open-Falcon,在架構設計上吸取了 Zabbix 的經驗,同時很好地解決了 Zabbix 的諸多痛點。

架構看去比 Zabbix 複雜多了,其實它也是基於Server---Agent的模式,只不過 Server 又給他劃分了好幾個組件,這個耦合性和擴展性都得到了明顯提高。

Open-Falcon 優勢
Open-Falcon 缺點

3、Prometheus(號稱下一代監控系統)

我們知道 zabbix 在監控界佔有不可撼動的地位,功能強大。但是對容器監控顯得力不從心。爲解決監控容器的問題,引入了 Prometheus 技術。

Prometheus 是一套開源的系統監控報警框架。是由前 google 員工 2015 年正式發佈的開源監控系統,採用 Go 語言開發。它不僅有一個很酷的名字,同時它有 Google 與 k8s 的強力支持,開源社區異常火爆。

先來了解下Prometheus的架構設計:

Prometheus 優點
Prometheus 缺點

選型建議

通過上面的介紹,大家對主流的監控系統應該有了一定的認識。面對選型問題,我的建議是:

1、先明確清楚你的監控需求:要監控的對象有哪些?機器數量和監控指標有多少?需要具備什麼樣的告警功能?

2、監控是一項長期建設的事情,一開始就想做一個 All In One 的監控解決方案,我覺得沒有必要。從成本角度考慮,在初期直接使用開源的監控方案即可,先解決有無問題。

3、從系統成熟度上看,Zabbix 屬於老牌的監控系統,資料多,功能全面且穩定,如果機器數量在幾百臺以內,不用太擔心性能問題,另外,採用數據庫分區、SSD 硬盤、Proxy 架構、Push 採集模式都可以提高監控性能。

4、Zabbix 在服務器監控方面佔絕對優勢,可以滿足 90% 以上的監控場景,但是應用層的監控似乎並不擅長,比如要監控線程池的狀態、某個內部接口的執行時間等,這種通常都要做侵入式埋點。相反,新一代的監控系統Open-FalconPrometheus在這一點做得很好。

5、從整體表現上來看,新一代監控系統也有明顯的優勢,比如:靈活的數據模型、更成熟的時序數據庫、強大的告警功能,如果之前對 zabbix 這種傳統監控沒有技術積累,建議使用Open-Falcon或者Prometheus.

6、Open-Falcon的核心優勢在於數據分片功能,能支撐更多的機器和監控項;Prometheus則是容器監控方面的標配,有 Google 和 k8s 加持。

7、ZabbixOpen-FalconPrometheus都支持和 Grafana 做快速集成,想要美觀且強大的可視化體驗,可以和 Grafana 進行組合。

8、用合適的監控系統解決相應的問題即可,可以多套監控同時使用,這種在企業初期很常見。

9、到中後期,隨着機器數據增加和個性化需求增多(比如希望統一監控平臺、打通公司的 CMDB 和組織架構關係),往往需要二次開發或者通過監控系統提供的 API 做集成,從這點來看,Open-Falcon或者Prometheus更合適。

10、如果非要自研,可以多研究下主流監控系統的架構方案,借鑑它們的優勢。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/x_TosBZU3qELoHaRUKw52w