如何利用大數(shù)據(jù)思維實(shí)現(xiàn)無死角運(yùn)維監(jiān)控?
來源:湖北國(guó)菱計(jì)算機(jī)科技有限公司-荊州網(wǎng)站建設(shè)-荊州軟件開發(fā)-政府網(wǎng)站建設(shè)公司
時(shí)間:2018-01-17
主要有工程數(shù)據(jù),業(yè)務(wù)數(shù)據(jù)。所有的數(shù)據(jù)源都有一個(gè)共性,就是日志。無論文本的也好,二進(jìn)制的也好。所以日志是整個(gè)信息的源頭。日志包含的信息足以讓我們追查到下面幾件事情:
系統(tǒng)健康狀況監(jiān)控
查找故障根源
系統(tǒng)瓶頸診斷和調(diào)優(yōu)
追蹤安全相關(guān)問題
指標(biāo)可以再進(jìn)行分類:
業(yè)務(wù)層面:如團(tuán)購業(yè)務(wù)每秒訪問數(shù),團(tuán)購券每秒驗(yàn)券數(shù),每分鐘支付、創(chuàng)建訂單等;
應(yīng)用層面:每個(gè)應(yīng)用的錯(cuò)誤數(shù),調(diào)用過程,訪問的平均耗時(shí),最大耗時(shí),95線等;
系統(tǒng)資源層面:如cpu、內(nèi)存、swap、磁盤、load、主進(jìn)程存活等;
網(wǎng)絡(luò)層面: 如丟包、ping存活、流量、tcp連接數(shù)等。
Storm(或第一幅圖的SparkStreaming)做兩件事情:
將日志過濾,格式化,或存儲(chǔ)起來;
進(jìn)行實(shí)時(shí)計(jì)算,將指標(biāo)數(shù)據(jù)存儲(chǔ)到HBase里去。
需要開發(fā)的地方只有兩個(gè)點(diǎn),有一個(gè)是一次性的,有一個(gè)則是長(zhǎng)期。
先說說一次性的,其實(shí)就是大盤展示系統(tǒng)。這個(gè)就是從HBase里取出數(shù)據(jù)做展示。這個(gè)貌似也有開源的一套,ELK。不過底層不是用的HBase存儲(chǔ),而是ES。
長(zhǎng)期的則是SparkStreaming(淘寶是使用Storm,我建議用SparkStreaming,因?yàn)镾parkStreaming可以按時(shí)間窗口,也可以按量統(tǒng)一做計(jì)算),這里你需要定義日志的處理邏輯,生成上面提到的各項(xiàng)指標(biāo)。
這里有一個(gè)什么好處呢,就是平臺(tái)化了,對(duì)新的監(jiān)控需求響應(yīng)更快了,開發(fā)到上線可能只要幾個(gè)小時(shí)的功夫。如果某個(gè)系統(tǒng)某天需要一個(gè)新的監(jiān)控指標(biāo),我們只要開發(fā)個(gè)SparkStreaming程序,丟到平臺(tái)里去,這事就算完了。
現(xiàn)在,如果你想要監(jiān)控一個(gè)系統(tǒng)是不是存活,你不在需要去寫腳本找他的pid看進(jìn)程是不是存在,系統(tǒng)發(fā)現(xiàn)在一定的周期內(nèi)沒有日志,就可以認(rèn)為它死了。而系統(tǒng)如果有異常,比如有大量的慢查詢,大盤一定能展示出來。
對(duì)于運(yùn)維的監(jiān)控,利用大數(shù)據(jù)思維,需要分三步走:
找到數(shù)據(jù);
分析定義從數(shù)據(jù)里中我能得到什么;
從大數(shù)據(jù)平臺(tái)中挑選你要的組件完成搭積木式開發(fā)。
所有系統(tǒng)最可靠的就是日志輸出,系統(tǒng)是不是正常,發(fā)生了什么情況,我們以前是出了問題去查日志,或者自己寫個(gè)腳本定時(shí)去分析?,F(xiàn)在這些事情都可以整合到一個(gè)已有的平臺(tái)上,我們唯一要做的就是定義處理日志的的邏輯。