分布式技術(shù)原理與實戰(zhàn)45講--第44講:分布式下有哪些好用的監(jiān)控組件?
在上一課時的內(nèi)容中,分析了分布式系統(tǒng)下的線上服務(wù)監(jiān)控的常用指標(biāo),那么在實際開發(fā)中,如何收集各個監(jiān)控指標(biāo)呢?線上出現(xiàn)告警之后,又如何快速處理呢?這一課時我們就來看下這兩個問題。
常用監(jiān)控組件
目前分布式系統(tǒng)常用的監(jiān)控組件主要有 OpenFalcon、Nagios、Zabbix、CAT 等,下面一起來看看這幾款組件的應(yīng)用及相關(guān)特性。好鋼要用在刀刃上,由于各類監(jiān)控組件的應(yīng)用和配置更偏向基礎(chǔ)運維,所以本課時的目的是希望你對幾種組件有個基本了解,不建議投入太多時間學(xué)習(xí)組件的配置細(xì)節(jié)。
OpenFalcon
Open-Falcon 是小米開源的一款企業(yè)級應(yīng)用監(jiān)控組件,在很多一線互聯(lián)網(wǎng)公司都有應(yīng)用,已經(jīng)成為國內(nèi)最流行的監(jiān)控系統(tǒng)之一。
我們在上一課時中介紹的監(jiān)控指標(biāo),Open-Falcon 都有支持,我個人覺得,Open-Falcon 是監(jiān)控指標(biāo)最完善的監(jiān)控組件之一。Falcon有一個特點,它是第一個國內(nèi)開發(fā)的大型開源監(jiān)控系統(tǒng),所以更適合國內(nèi)互聯(lián)網(wǎng)公司的應(yīng)用場景,在使用上,Open-Falcon 也要比其他的監(jiān)控組件更加靈活,關(guān)于Open-Falcon 的監(jiān)控指標(biāo),你可以在官網(wǎng)上了解更多的信息: Open-Falcon 官網(wǎng)。
Zabbix
Zabbix 基于 Server-Client 架構(gòu),和 Nagios 一樣,可以實現(xiàn)各種網(wǎng)絡(luò)設(shè)備、服務(wù)器等狀態(tài)的監(jiān)控。Zabbix 的應(yīng)用比較靈活,數(shù)據(jù)存儲可以根據(jù)業(yè)務(wù)情況,使用不同的實現(xiàn),比如 MySQL、Oracle 或 SQLite 等,Zabbix 的 Server 使用 C 語言實現(xiàn),可視化界面基于 PHP 實現(xiàn)。
Zabbix 整體可以分為 Zabbix Server 和 Zabbix Client,即 Zabbix Agent,Zabbix對分布式支持友好,可以對各類監(jiān)控指標(biāo)進(jìn)行集中展示和管理,并且有很好的擴(kuò)展性,采用了微內(nèi)核結(jié)構(gòu),可以根據(jù)需要,自己開發(fā)完善各類監(jiān)控。
如果希望了解更多具體的應(yīng)用,還可以去 Zabbix 官網(wǎng)了解相關(guān)的內(nèi)容: ZABBIX 產(chǎn)品手冊。
Nagios
Nagios(Nagios Ain’t Goona Insist on Saintood)是一款開源監(jiān)控組件,和 Zabbix 等相比,Nagios 支持更豐富的監(jiān)控設(shè)備,包括各類網(wǎng)絡(luò)設(shè)備和服務(wù)器,并且對不同的操作系統(tǒng)都可以進(jìn)行良好的兼容,支持 Windows 、Linux、VMware 和 Unix 的主機(jī),另外對各類交換機(jī)、路由器等都有很好的支持。

Nagios 對各類網(wǎng)絡(luò)協(xié)議下的監(jiān)控支持非常好,我們在第 42 課時提過硬件負(fù)載均衡的 F5 設(shè)備,就可以應(yīng)用 Nagios 進(jìn)行監(jiān)控。
Nagios 雖然監(jiān)控報警能力強(qiáng)大,但是配置比較復(fù)雜,各種功能都要依靠插件來實現(xiàn),圖形展示效果很差。從這個角度來看,Nagios 的應(yīng)用更加偏向運維,大部分業(yè)務(wù)開發(fā)同學(xué)在工作中簡單了解就可以。
Nagios 還可以監(jiān)控網(wǎng)絡(luò)服務(wù),包括 SMTP、POP3、HTTP、NNTP、PING 等,支持主機(jī)運行狀態(tài)、自定義服務(wù)檢查,可以進(jìn)行系統(tǒng)狀態(tài)和故障歷史的查看,另外,使用 Nagios 可以自定義各種插件實現(xiàn)定制化的功能。感興趣的同學(xué)可 點擊這里查看官網(wǎng) 了解一下。
CAT
CAT(Central Application Tracking)早期是大眾點評內(nèi)部的監(jiān)控組件,2014 年開源,并且在攜程、陸金所、獵聘網(wǎng)等大型互聯(lián)網(wǎng)公司內(nèi)部廣泛應(yīng)用。
CAT 基于 Java 開發(fā),特別適合 Java 技術(shù)棧的公司,對分布式系統(tǒng)支持非常好。在社區(qū)開源以后,CAT 又加入了很多特性功能,已經(jīng)成為一個大而全的應(yīng)用層統(tǒng)一監(jiān)控組件,對各類分布式服務(wù)中間件、數(shù)據(jù)庫代理層、緩存和消息隊列都有很好的支持,可以為業(yè)務(wù)開發(fā)提供各個系統(tǒng)的性能指標(biāo)、健康狀況,并且還可以進(jìn)行實時告警。
相比其他偏向運維的監(jiān)控組件,比如 Nagios、Cat 更加關(guān)注應(yīng)用層面的監(jiān)控指標(biāo),支持性能埋點和優(yōu)化,對開發(fā)工程師更加友好。我在工作中和 CAT 打交道比較多,比較推薦這款監(jiān)控組件,大家有機(jī)會可以在自己的公司里推廣使用。
點擊這里查看 CAT 項目的開源地址,由于篇幅所限,這里只做簡單介紹,另外附上點評技術(shù)團(tuán)隊發(fā)表的技術(shù)文章:
CAT 3.0 開源發(fā)布,支持多語言客戶端及多項性能提升
深度剖析開源分布式監(jiān)控 CAT
監(jiān)控處理制度
大型互聯(lián)網(wǎng)公司都非常重視服務(wù)穩(wěn)定性工作,因為服務(wù)穩(wěn)定性直接影響用戶體驗,影響公司產(chǎn)品在用戶心中的口碑,線上服務(wù)穩(wěn)定性是開發(fā)者需要重點關(guān)注的,那么如何處理線上告警,出現(xiàn)報警如何第一時間處理呢?
一般來說,線上故障處理有下面幾個原則:
發(fā)現(xiàn)故障,第一時間同步到相關(guān)業(yè)務(wù)負(fù)責(zé)人,上下游鏈路;
第一時間快速恢復(fù)業(yè)務(wù),快速進(jìn)行故障止血;
及時協(xié)調(diào)資源,避免故障升級;
事后進(jìn)行故障復(fù)盤和總結(jié),避免再次出現(xiàn)類似問題。
線上告警和故障,相信大部分開發(fā)同學(xué)都會遇到,故障處理經(jīng)驗的提高是研發(fā)工程師進(jìn)階和成長當(dāng)中必須經(jīng)歷的。如何處理各類故障,是否有一個體系化的穩(wěn)定性知識,也是衡量架構(gòu)師的重要標(biāo)準(zhǔn),從故障中我們可以吸取到很多教訓(xùn),提升服務(wù)的穩(wěn)定性,更好的支持業(yè)務(wù)。
總結(jié)
這一課時的內(nèi)容分享了常見的分布式監(jiān)控組件應(yīng)用,以及線上故障處理制度的相關(guān)內(nèi)容,介紹了 Open-Falcon、Zabbix、Nagios 及 Cat 的應(yīng)用,一起討論了線上告警的 SOP 如何制定。
在穩(wěn)定性建設(shè)中,監(jiān)控指標(biāo)和監(jiān)控組件都是我們的工具,是術(shù)的層面;故障告警如何處理,如何做好事前監(jiān)控和事后復(fù)盤,是道的層面,術(shù)業(yè)專攻,再結(jié)合合理的制度,才可以把穩(wěn)定性工作做好。
在你負(fù)責(zé)的項目中,應(yīng)用了哪些監(jiān)控組件呢?又是如何進(jìn)行配置的呢?歡迎留言分享你的經(jīng)驗。