在DevOps和SRE流行的今天,在開(kāi)發(fā)可靠性或?qū)嵤〥evOps實(shí)踐時(shí),企業(yè)決策的核心是統(tǒng)計(jì)數(shù)據(jù)。而企業(yè)數(shù)據(jù)信息中最重要的一環(huán)就是線上業(yè)務(wù)的監(jiān)控信息,如果沒(méi)有業(yè)務(wù)運(yùn)行時(shí)間,網(wǎng)絡(luò)負(fù)載和資源使用情況等關(guān)鍵性監(jiān)控指標(biāo),企業(yè)將無(wú)法有效的開(kāi)發(fā)或操作實(shí)踐。而這些數(shù)據(jù)都有依靠各種各樣的監(jiān)控工具來(lái)收集和匯集。
當(dāng)基于對(duì)客戶影響的度量標(biāo)準(zhǔn)時(shí),SLO之類的SRE實(shí)踐最有用。確定監(jiān)控什么以及如何進(jìn)行監(jiān)控是一個(gè)重要的決策。本文我們就來(lái)了解SRE時(shí)代下的監(jiān)控和流行監(jiān)控工具。
監(jiān)控分類
確定在系統(tǒng)體系結(jié)構(gòu)中監(jiān)控點(diǎn)的分布非常重要。根據(jù)監(jiān)控實(shí)施的位置,監(jiān)控工具將能夠獲取不同類型的數(shù)據(jù)。監(jiān)控最常見(jiàn)分類及監(jiān)控點(diǎn)分布如下:
資源監(jiān)控
資源監(jiān)控也稱為服務(wù)器監(jiān)控或基礎(chǔ)結(jié)構(gòu)監(jiān)控,它通過(guò)收集有關(guān)服務(wù)器運(yùn)行方式的數(shù)據(jù)來(lái)獲取基本信息。資源監(jiān)控工具會(huì)監(jiān)控最基本的主機(jī)內(nèi)存使用率,CPU負(fù)載和磁盤(pán)空間等信息。在基于物理服務(wù)器的體系結(jié)構(gòu)中,有關(guān)硬件運(yùn)行狀況的信息(比如CPU溫度和組件正常運(yùn)行時(shí)間)也有助于避免服務(wù)器故障。在基于云的環(huán)境中,虛擬服務(wù)器系統(tǒng)的匯聚信息更為有用。
網(wǎng)絡(luò)監(jiān)控
網(wǎng)絡(luò)監(jiān)控用來(lái)監(jiān)控下行和上行主機(jī)的網(wǎng)絡(luò)數(shù)據(jù)。監(jiān)控工具可捕獲所有組件(如交換機(jī),防火墻,服務(wù)器等)中的所有請(qǐng)求和響應(yīng)數(shù)據(jù)包。網(wǎng)絡(luò)監(jiān)控可以簡(jiǎn)單只收集入口和出口總流量,也可以針對(duì)更詳細(xì)的應(yīng)用或者端口為基準(zhǔn)來(lái)收集。
App性能監(jiān)控
APP性能監(jiān)控用來(lái)收集有關(guān)整體服務(wù)執(zhí)行情況的數(shù)據(jù)。這些工具會(huì)將自己的請(qǐng)求發(fā)送到服務(wù)接口,并跟蹤指標(biāo),例如響應(yīng)的速度和完整性。目標(biāo)是推動(dòng)對(duì)APP性能問(wèn)題的檢測(cè)和診斷,以確保接口以預(yù)期的水平運(yùn)行。
第三方組件監(jiān)控
這涉及監(jiān)控體系結(jié)構(gòu)中第三方組件的運(yùn)行狀況和可用性。在微服務(wù)盛行的時(shí)代,服務(wù)可能取決于外部服務(wù)的正常運(yùn)行。像APP性能監(jiān)控一樣,工具可以根據(jù)自己的請(qǐng)求檢查這些服務(wù)的狀態(tài)。
在整體解決方案中包括每種監(jiān)控類型。優(yōu)先考慮使用健壯的冗余監(jiān)控工具,以確保不會(huì)遺漏潛在問(wèn)題。同時(shí),指標(biāo)和警報(bào)應(yīng)與服務(wù)綁定在一起,以確保與業(yè)務(wù)影響相關(guān)。
監(jiān)控指標(biāo)
擁有可操作的數(shù)據(jù)不僅與數(shù)據(jù)本身有關(guān);為了正確響應(yīng)監(jiān)控工具報(bào)告的內(nèi)容,還需要以最有用的方式顯示數(shù)據(jù)。以下是監(jiān)控工具可以提供的事項(xiàng):
告警:當(dāng)指標(biāo)超過(guò)特定閾值時(shí)觸發(fā)告警;
事件日志:創(chuàng)建事件日志,根據(jù)參數(shù)突出顯示;
趨勢(shì)圖:創(chuàng)建一段時(shí)間內(nèi)的指標(biāo)趨勢(shì)圖;
儀表板:一目了然地提供關(guān)鍵服務(wù)運(yùn)行狀況組件的儀表板;
指標(biāo)數(shù)據(jù)庫(kù):創(chuàng)建可以查詢的指標(biāo)數(shù)據(jù)庫(kù)。
在制定開(kāi)發(fā)決策或?qū)κ录龀鲰憫?yīng)時(shí),需要了解自己需要什么?需要什么監(jiān)控指標(biāo)?這些指標(biāo)怎么可視化等。
監(jiān)控工具推薦
下面我們推薦最受歡迎的SRE和DevOps監(jiān)控工具,可供大家選擇。
Prometheus

Prometheus是一種流行的開(kāi)源監(jiān)控工具,提供警報(bào),查詢,可視化和許多其他有用的功能。Prometheus有專門(mén)的開(kāi)發(fā)社區(qū)提供了大量文檔和說(shuō)明,可以幫助我們快速入門(mén)。蟲(chóng)蟲(chóng)之前的文章也專門(mén)介紹過(guò)Prometheu,大家可以查看歷史文章進(jìn)行了解。
Zabbix

Zabbix 是最流行的開(kāi)源分布式企業(yè)監(jiān)控系統(tǒng)。zabbix自帶各種模版可以監(jiān)控各種服務(wù)器監(jiān)控項(xiàng)、網(wǎng)絡(luò)設(shè)備。zabbix server可以通過(guò)SNMP,zabbix agent,ping,端口監(jiān)視等方法提供對(duì)遠(yuǎn)程服務(wù)器/網(wǎng)絡(luò)狀態(tài)的監(jiān)視和數(shù)據(jù)收集。zabbix是目前使用最廣泛最流行的傳統(tǒng)以物理服務(wù)器為架構(gòu)的業(yè)務(wù)系統(tǒng)監(jiān)控。
zabbix目前在SRE時(shí)代問(wèn)題數(shù)據(jù)依賴于中心關(guān)系數(shù)據(jù)庫(kù)(MySQL或者PostgreSQL),監(jiān)控?cái)?shù)據(jù)量不能自動(dòng)清理,累積過(guò)大會(huì)拖慢系統(tǒng)運(yùn)行速度。而且對(duì)云架構(gòu)體系監(jiān)控支持還不夠。
Grafana
Grafana是使用golang開(kāi)發(fā)的開(kāi)源的度量分析與監(jiān)控可視化儀表盤(pán)系統(tǒng)。

Grafana支持時(shí)間序列數(shù)據(jù)和應(yīng)用程序分析的可視化以儀表盤(pán)形式展示當(dāng)前系統(tǒng)狀態(tài)。Grafana常見(jiàn)監(jiān)控系統(tǒng)數(shù)據(jù)源,也支持對(duì)日志匯聚數(shù)據(jù)源,支持對(duì)數(shù)據(jù)進(jìn)行篩選,也可以對(duì)多個(gè)數(shù)據(jù)源組合顯示為一個(gè)儀表盤(pán)。
NagIOS
Nagios提供了開(kāi)源(Nagios Core)和商業(yè)化定制版本(Nagios XI)。Nagios提供了高度可定制的界面,并可以監(jiān)控整個(gè)IT網(wǎng)絡(luò)。支持通過(guò)配置向?qū)?lái)突出其易用性,以引導(dǎo)用戶設(shè)置新的監(jiān)控服務(wù)。

AppDynamics

AppDynamics是專注于APM的監(jiān)控平臺(tái)。除了傳統(tǒng)的APM監(jiān)控外,提供的其他功能包括基于AI的視角,用于人工智能模擬客戶和最終用戶監(jiān)控,以及集成收益分析的業(yè)務(wù)監(jiān)控。自從2017年AppDynamics被思科收購(gòu)以后除了基本APM外,在基礎(chǔ)網(wǎng)絡(luò)設(shè)置方面進(jìn)行的監(jiān)控
DataDog

DataDog是一個(gè)針對(duì)云規(guī)模服務(wù)的監(jiān)控平臺(tái)。它在可視化,警報(bào)以及數(shù)據(jù)匯聚和分析方面具有強(qiáng)大的功能。它們使性能指標(biāo)與業(yè)務(wù)影響相關(guān)聯(lián)。
聽(tīng)云云平臺(tái)
聽(tīng)云云平臺(tái)是國(guó)內(nèi)權(quán)威的APM平臺(tái)之一,通過(guò)針對(duì)全平臺(tái)的應(yīng)用性能監(jiān)控。聽(tīng)云平臺(tái),由聽(tīng)云App、聽(tīng)云Network、聽(tīng)云Server、聽(tīng)云Browser和聽(tīng)云Sys組成,提供針對(duì)手機(jī)應(yīng)用、網(wǎng)絡(luò)、瀏覽器、服務(wù)器的性能監(jiān)控產(chǎn)品,可以實(shí)現(xiàn)應(yīng)用性能全方位可視化,包括PC端、瀏覽器、移動(dòng)客戶端到服務(wù)器。
New Relic

New Relic是一個(gè)監(jiān)控平臺(tái),提供了幾個(gè)也可以獨(dú)立使用的組件:New Relic APM(應(yīng)用程序性能監(jiān)控),New Relic Browser和New Relic Infrastructure。New Relic提供了適用于iOS和Android的應(yīng)用程序,為移動(dòng)應(yīng)用提供了更多監(jiān)控選項(xiàng)。
Site24x7

Site24x7專門(mén)從事網(wǎng)站監(jiān)控,提供諸如狀態(tài)頁(yè)和Web服務(wù)(例如AWS和Azure)運(yùn)行狀況診斷的工具。它們還提供綜合Web事務(wù)監(jiān)控,使可以模擬使用情況并收集指標(biāo)。
SignalFx

SignalFx提供了廣泛的微服務(wù)集成,可以看到服務(wù)運(yùn)行狀況的完整結(jié)構(gòu),幫助用戶從單一模型到微服務(wù)模型構(gòu)建架構(gòu)。SignalFX可以通過(guò)多種方式收集所需的指標(biāo),包括收集的,自定義指標(biāo)或使用第三方應(yīng)用程序。對(duì)于自定義指標(biāo)類型的用戶,則可以直接通過(guò)Ruby,Python,JAVA或Node.js從應(yīng)用程序發(fā)送數(shù)據(jù)。 使用第三方應(yīng)用程序則可以選擇使用現(xiàn)有工具之一,例如AWS cloudwatch,Docker,Elasticsearch,MySQL甚至New Relic。
PRTG Network Monitor

PRTG Network Monitor是一體式完整網(wǎng)絡(luò)運(yùn)營(yíng)監(jiān)控系統(tǒng),可以集成到體系結(jié)構(gòu)的許多階段和位置,可以在網(wǎng)絡(luò),單個(gè)服務(wù)器,特定應(yīng)用程序以及兩者之間的所有內(nèi)容上提供監(jiān)控。功能包括:停機(jī)監(jiān)測(cè),阻塞和使用監(jiān)測(cè),數(shù)據(jù)包嗅探,深入分析和簡(jiǎn)明的報(bào)告。PRTG Network Monitor有一個(gè)基于Web的用戶友好的界面,允許用戶快速配置網(wǎng)絡(luò)設(shè)備和傳感器。