從大數(shù)據(jù)的角度來談?wù)勥\維監(jiān)控這件事兒
小清新同學(xué),負責百度云監(jiān)控產(chǎn)品規(guī)劃及設(shè)計,具備多年監(jiān)控領(lǐng)域產(chǎn)品經(jīng)驗。
干貨概覽
做運維的人對監(jiān)控這件事兒都太熟悉了,但是對于監(jiān)控這么一件老生常談的事兒,我們今天換個角度,從大數(shù)據(jù)的角度來看看有什么新的發(fā)現(xiàn)。
為什么要從大數(shù)據(jù)的角度來看監(jiān)控這件事兒呢?首先,以大家最熟悉的服務(wù)器監(jiān)控為例,雖然原理很簡單,但從數(shù)據(jù)角度來看,其仍是一個典型且完整的數(shù)據(jù)采集(監(jiān)控數(shù)據(jù)采集)、分析(報警)和可視化(趨勢圖、儀表盤)處理過程。
其次,監(jiān)控領(lǐng)域需要關(guān)心的數(shù)據(jù)不僅僅是服務(wù)器監(jiān)控數(shù)據(jù),還包含各種角度、各種來源的數(shù)據(jù),如日志數(shù)據(jù)、網(wǎng)絡(luò)通信數(shù)據(jù)等,數(shù)據(jù)呈現(xiàn)種類多、體量大和時效性要求高的特點,符合典型的大數(shù)據(jù)基本特征。
Gartner在2016年第一次提出AIOps概念時,AI代表了Algorithmic(算法),算法的基石正是海量的數(shù)據(jù),在2017年將AI含義改為Artificial Intelligence(人工智能)后,同樣需要海量的數(shù)據(jù)進行處理和學(xué)習。我們從下文的Gartner描繪的AIOps平臺架構(gòu)中同樣能看到數(shù)據(jù)對于AIOps、對于運維、對于監(jiān)控的重要性。
我們從數(shù)據(jù)來源的角度對監(jiān)控數(shù)據(jù)進行分類,比較常用的幾種數(shù)據(jù)來源如下:
-
機器數(shù)據(jù),常用指數(shù)★★★★★,獲取難度★☆☆☆☆
-
日志數(shù)據(jù),常用指數(shù)★★★★☆,獲取難度★★★☆☆
-
網(wǎng)絡(luò)通信數(shù)據(jù),常用指數(shù)★☆☆☆☆,獲取難度★★★★★
-
撥測數(shù)據(jù),常用指數(shù)★★★★☆,獲取難度★☆☆☆☆
-
Agent代理數(shù)據(jù),常用指數(shù)★★☆☆☆,獲取難度★★★★☆
-
用戶行為數(shù)據(jù),常用指數(shù)★★★☆☆,獲取難度★★☆☆☆
指數(shù)僅供參考
這么多種數(shù)據(jù)來源,各有什么特點和用途呢?接下來我們詳細聊一下:
機器數(shù)據(jù)
機器數(shù)據(jù)是指服務(wù)器、網(wǎng)絡(luò)設(shè)備等硬件或虛擬硬件運行過程中產(chǎn)生的狀態(tài)數(shù)據(jù),往往有對應(yīng)的協(xié)議或規(guī)范,例如SNMP、IPMI、WMI等。通過機器數(shù)據(jù)可以準確的掌握業(yè)務(wù)承載平臺的基本運行狀態(tài),例如CPU、內(nèi)存、磁盤等資源的使用情況和網(wǎng)絡(luò)流量情況,是運維監(jiān)控領(lǐng)域最常用的數(shù)據(jù)來源,各類開源或商業(yè)監(jiān)控產(chǎn)品對此類數(shù)據(jù)的處理也大同小異,例如Zabbix、Nagios等。
云計算時代,同樣離不開機器數(shù)據(jù),雖然用戶不用再關(guān)心底層物理設(shè)備的運行狀態(tài),但云廠商提供的各類云服務(wù)器、網(wǎng)關(guān)、負載均衡等虛擬設(shè)備同樣會產(chǎn)生大量機器數(shù)據(jù),需要用戶時刻關(guān)注,例如云服務(wù)器的資源使用情況、帶寬的使用情況、網(wǎng)關(guān)的負載情況等。
做好機器數(shù)據(jù)的監(jiān)控可以說是做好運維監(jiān)控的第一步,但僅僅有機器數(shù)據(jù)是不夠的,因為機器數(shù)據(jù)存在與業(yè)務(wù)運行狀態(tài)脫節(jié)的問題,機器運行平穩(wěn)、資源充足并不能夠代表業(yè)務(wù)運行正常,這就需要我們?nèi)ヘS富自己的監(jiān)控數(shù)據(jù)來源,各位看官請往下看。
日志數(shù)據(jù)
日志數(shù)據(jù)是指應(yīng)用程序、中間件和機器等在運行過程中由事件觸發(fā)而產(chǎn)生的文本類數(shù)據(jù),數(shù)據(jù)格式靈活多樣。
日志數(shù)據(jù)的應(yīng)用場景非常廣泛,上到業(yè)務(wù)指標分析,下到Bug追蹤定位,是監(jiān)控領(lǐng)域的全能選手。但由于日志數(shù)據(jù)的靈活性,要想利用好日志數(shù)據(jù),必須先想好監(jiān)控什么,再通過制定日志規(guī)范獲取到需要的數(shù)據(jù)。日志數(shù)據(jù)的采集和分析最常用的開源方案就是ELK Stack了,可以說已經(jīng)形成了一定的行業(yè)標準。
網(wǎng)絡(luò)通信數(shù)據(jù)
網(wǎng)絡(luò)通信數(shù)據(jù)是指通過抓包獲取到的設(shè)備間網(wǎng)絡(luò)通信數(shù)據(jù),例如兩臺服務(wù)器之間存在網(wǎng)絡(luò)通信,通過抓包分析可以詳細的了解兩臺服務(wù)器之間通信的端口、協(xié)議、數(shù)據(jù)量甚至內(nèi)容。常用的方式是通過硬件設(shè)備將網(wǎng)絡(luò)流量進行鏡像,對鏡像數(shù)據(jù)進行分析,以避免干擾業(yè)務(wù)數(shù)據(jù)的正常流轉(zhuǎn)。
網(wǎng)絡(luò)通信數(shù)據(jù)非常全面,只要有網(wǎng)絡(luò)通信理論上就能夠抓取到詳細的數(shù)據(jù),而不需要日志數(shù)據(jù)那樣提前制定好數(shù)據(jù)輸出規(guī)則。想象一下你在管理一個交易系統(tǒng),不需要吐任何日志就可以獲取到每一筆交易的詳細情況,而且這種數(shù)據(jù)獲取方式還不會影響到應(yīng)用的運行,是不是很爽。
但是網(wǎng)絡(luò)通信數(shù)據(jù)的利用是較少的,難度也較大,小編私以為主要是由于網(wǎng)絡(luò)相關(guān)的運維和業(yè)務(wù)相關(guān)的運維往往是不同的Team在負責,不同運維團隊的關(guān)注點和側(cè)重點不同造成的。網(wǎng)絡(luò)運維團隊更加關(guān)心網(wǎng)絡(luò)本身的穩(wěn)定性,對業(yè)務(wù)的理解不是非常深入,即使通過抓包拿到詳細數(shù)據(jù),也很難進行詳細的分析。而業(yè)務(wù)相關(guān)的運維和研發(fā)團隊對網(wǎng)絡(luò)又缺乏完全的掌控,對網(wǎng)絡(luò)的理解也不夠深刻。
此外,網(wǎng)絡(luò)通信數(shù)據(jù)也有其局限性,一些業(yè)務(wù)事件可能不會產(chǎn)生網(wǎng)路通信,也就沒有對應(yīng)的數(shù)據(jù),網(wǎng)絡(luò)通信的數(shù)據(jù)包解析需要非常清楚應(yīng)用層的規(guī)則,甚至很多數(shù)據(jù)被進行了加密,這都增大了網(wǎng)路通信數(shù)據(jù)的利用難度。
目前小編暫時沒有看到成熟的圍繞網(wǎng)絡(luò)通信數(shù)據(jù)采集和分析的開源解決方案,聊以慰藉的只有Wireshark這樣的工具型產(chǎn)品了。商業(yè)解決方案方面倒是有很多不錯的廠商,感興趣的同學(xué)可以百度一下Gartner NPMD了解,NPMD是指Network Performance Monitoring and Diagnostics。
撥測數(shù)據(jù)
撥測數(shù)據(jù)是指使用探測點,通過HTTP、Ping、TCP等多種協(xié)議對監(jiān)控目標進行探測產(chǎn)生的數(shù)據(jù),《站點監(jiān)控 | 網(wǎng)站健康檢查的外科醫(yī)生》一文中提到網(wǎng)站監(jiān)控數(shù)據(jù)就屬于撥測數(shù)據(jù)的一種。
撥測這個詞最早源于電話通信網(wǎng)絡(luò),通信人員在建設(shè)好電話網(wǎng)絡(luò)后需要撥一個電話來測試是否正常,這種主動式監(jiān)控方式就稱為撥測了。
對于IT業(yè)務(wù)系統(tǒng),撥測采用的探測點可以在公網(wǎng),也可以在業(yè)務(wù)系統(tǒng)內(nèi)網(wǎng),不同位置的探測點起到的作用是不同的。公網(wǎng)探測點主要關(guān)注業(yè)務(wù)系統(tǒng)的網(wǎng)絡(luò)出口質(zhì)量、運營商網(wǎng)絡(luò)質(zhì)量和CDN質(zhì)量,而內(nèi)網(wǎng)探測點主要關(guān)注的是業(yè)務(wù)或各個業(yè)務(wù)模塊的可用性及性能狀態(tài)。
內(nèi)網(wǎng)探測點的搭建非常簡單,幾行腳本加上一些開源組件很快就能獲取到撥測數(shù)據(jù)。但公網(wǎng)探測點需要在公網(wǎng)部署大量的服務(wù)器作為探測點,公網(wǎng)服務(wù)器部署會帶來大量的運維成本和商務(wù)成本,各位同學(xué)可以考慮使用商業(yè)解決方案,百度云監(jiān)控BCM(Baidu Cloud Monitor)的站點監(jiān)控功能就能很好的滿足公網(wǎng)環(huán)境下的撥測需求。
Agent代理數(shù)據(jù)
Agent代理數(shù)據(jù)是指通過字節(jié)碼增強等技術(shù)來獲取應(yīng)用運行過程中的各類數(shù)據(jù),與日志數(shù)據(jù)的最大區(qū)別在與其不需要在應(yīng)用程序的源代碼中添加數(shù)據(jù)的輸出邏輯,而是在應(yīng)用程序的編譯或運行環(huán)節(jié)去動態(tài)的指定數(shù)據(jù)輸出邏輯,其形式上也可以輸出為日志,但與一般的日志數(shù)據(jù)在原理和靈活度上有著本質(zhì)的區(qū)別。
Agent代理數(shù)據(jù)最常用的場景就是應(yīng)用性能管理APM(Application Performance Management)了,通過Agent代理數(shù)據(jù)可以獲取到應(yīng)用運行過程中的事務(wù)執(zhí)行過程,包括外部調(diào)用、數(shù)據(jù)庫調(diào)用、分布式調(diào)用追蹤、代碼執(zhí)行耗時等,而這一切都不需要你去修改原有的應(yīng)用程序。典型的開源方案是針對Java應(yīng)用程序監(jiān)控的Pinpoint。
用戶行為數(shù)據(jù)
用戶行為數(shù)據(jù)是指通過在用戶終端進行埋點獲取到的用戶行為數(shù)據(jù),例如在網(wǎng)頁中通過JS埋點獲取到的頁面訪問情況和在APP中通過SDK埋點獲取到的各交互頁面和控件的使用情況。
用戶行為數(shù)據(jù)除了幫助運營同學(xué)進行用戶分析,還可以幫助運維的同學(xué)更加準確的了解業(yè)務(wù)系統(tǒng)的最終實際表現(xiàn),例如哪里的用戶出現(xiàn)了訪問緩慢、哪些業(yè)務(wù)模塊用戶量出現(xiàn)了突降,這些數(shù)據(jù)能夠讓你站在結(jié)果的角度去分析業(yè)務(wù)系統(tǒng)還有哪里可以優(yōu)化,也能夠在問題僅僅影響一小部分用戶時就能夠及時發(fā)現(xiàn),第一時間干預(yù)。
總 結(jié)
說了這么多種來源的數(shù)據(jù),我們來簡要總結(jié)一下:
結(jié)合各種來源類型的數(shù)據(jù),我們可以根據(jù)業(yè)務(wù)監(jiān)控需求構(gòu)建出適合自己業(yè)務(wù)系統(tǒng)的監(jiān)控方案來,你有沒有發(fā)現(xiàn)以前沒有關(guān)注過的數(shù)據(jù)來源呢?趕快進一步深入了解一下,看看能不能解決你的痛點吧。