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