今天一大早就看到了一篇文章,叫【大數(shù)據(jù)對(duì)于運(yùn)維的意義】,。該文章基本上是從三個(gè)層面闡述的:
當(dāng)然,,這篇文章談的是運(yùn)維都有哪些數(shù)據(jù),哪些指標(biāo),,以及數(shù)據(jù)呈現(xiàn),。并沒有談及如何和大數(shù)據(jù)相關(guān)的架構(gòu)做整合,從而能讓這些數(shù)據(jù)真的變得活起來,。 比較湊巧的是,,原先百度的桑文峰的分享也講到日志的多維度分析,吃完飯的時(shí)候,,一位優(yōu)酷的朋友也和我探討了關(guān)于業(yè)務(wù)監(jiān)控的的問題,。而我之前發(fā)表在肉餅鋪?zhàn)永锏囊黄恼隆敬髷?shù)據(jù)給公司帶來了什么】 也特地提到了大數(shù)據(jù)對(duì)于整個(gè)運(yùn)維的幫助,當(dāng)時(shí)因?yàn)檫@篇內(nèi)容的主旨是羅列大數(shù)據(jù)的用處,,自然沒法細(xì)講運(yùn)維和大數(shù)據(jù)的整合這一塊,。 上面的文字算引子,在步入正式的探討前,,有一點(diǎn)我覺得值得強(qiáng)調(diào): 雖然這里講的是如何將大數(shù)據(jù)思維/架構(gòu)應(yīng)用于運(yùn)維,,平臺(tái)化運(yùn)維工作,但是和大數(shù)據(jù)本質(zhì)上沒有關(guān)系,,我們只是將大數(shù)據(jù)處理的方式和思想應(yīng)用在運(yùn)維工作上,。所以,即使你現(xiàn)在所在的公司沒有數(shù)據(jù)團(tuán)隊(duì)支撐,,也是完全可以通過現(xiàn)有團(tuán)隊(duì)完成這件事情的,。 運(yùn)維監(jiān)控現(xiàn)狀很多公司的運(yùn)維的監(jiān)控具有如下特質(zhì):
當(dāng)然也有抽象的很好的,比如點(diǎn)評(píng)網(wǎng)的運(yùn)維監(jiān)控?fù)?jù)說就做的相當(dāng)好,,運(yùn)維很閑,,天天沒事就根據(jù)自己的監(jiān)控找開發(fā)的搽,讓開發(fā)持續(xù)改進(jìn),。不過他們的指導(dǎo)思想主要有兩個(gè):
有點(diǎn)扯遠(yuǎn),,我們還是focus在監(jiān)控上。 如果以大數(shù)據(jù)的思維去思考,,我們應(yīng)該如何做好監(jiān)控這件事情,? 羅列出你的數(shù)據(jù)源【大數(shù)據(jù)對(duì)于運(yùn)維的意義】 這篇文章也講了,主要有工程數(shù)據(jù),,業(yè)務(wù)數(shù)據(jù),。所有的數(shù)據(jù)源都有一個(gè)共性,就是日志,。無論文本的也好,,二進(jìn)制的也好。也就是我們的數(shù)據(jù)源就是日志:所有業(yè)務(wù)的,,所有服務(wù)器自身的系統(tǒng)日志,。直觀的感受是,一旦出了問題,,你的第一反應(yīng)是查日志,。所以日志是整個(gè)信息的源頭,。 從日志我們可以挖掘出什么?我覺得抽象起來就一個(gè): 指標(biāo),。
每個(gè)分類里的每個(gè)小點(diǎn)其實(shí)都是一個(gè)指標(biāo),。 如何統(tǒng)一實(shí)現(xiàn)千萬不要針對(duì)具體問題進(jìn)行解決,大數(shù)據(jù)架構(gòu)上的一個(gè)思維就是:我能夠提供一個(gè)平臺(tái)讓大家方便解決這些問題么,? 而不是,,這個(gè)問題我能解決么? 先來看看架構(gòu)圖: 因?yàn)槟壳拔邑?fù)責(zé)應(yīng)用層的研發(fā),,業(yè)務(wù)還比較少,,主要就需要監(jiān)控三個(gè)系統(tǒng):
所以監(jiān)控的架構(gòu)設(shè)計(jì)略簡單些。如果你希望進(jìn)行日志存儲(chǔ)以及事后批量分析,,則可以采用淘寶的這套架構(gòu)方式: 稍微說明下,,日志收集Agent可以使用Flume,鷹眼Storm集群,其實(shí)就是Storm集群,,當(dāng)然有可能是淘寶內(nèi)部Java版的,,Storm(或第一幅圖的SparkStreaming)做兩件事情
到目前為止,,我們沒有做任何的開發(fā),,全部使用大數(shù)據(jù)里通用的一些組件,。至于這些組件需要多少服務(wù)器,就看對(duì)應(yīng)的日志量規(guī)模了,,三五臺(tái)到幾百臺(tái)都是可以的,。 需要開發(fā)的地方只有兩個(gè)點(diǎn),有一個(gè)是一次性的,,有一個(gè)則是長期,。 先說說一次性的,其實(shí)就是大盤展示系統(tǒng),。這個(gè)就是從HBase里取出數(shù)據(jù)做展示,。這個(gè)貌似也有開源的一套,ELK,。不過底層不是用的HBase存儲(chǔ),,而是ES。這里就不詳細(xì)討論,。 長期的則是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)里去,,這事就算完了,。 第一幅圖的平臺(tái)我是已經(jīng)實(shí)現(xiàn)了的。我目前在SparkStreaming上只做了三個(gè)方面比較基礎(chǔ)的監(jiān)控,,不過應(yīng)該夠用了,。
現(xiàn)在,,如果你想要監(jiān)控一個(gè)系統(tǒng)是不是存活,你不在需要取寫腳本去找他的pid看進(jìn)程是不是存在,,系統(tǒng)發(fā)現(xiàn)在一定的周期內(nèi)沒有日志,,就可以認(rèn)為它死了。而系統(tǒng)如果有異常,,比如有大量的慢查詢,,大盤一定能展示出來。 描述到這,,我們可以看到,,這套架構(gòu)的優(yōu)勢在哪:
大數(shù)據(jù)思維對(duì)于運(yùn)維的監(jiān)控,,利用大數(shù)據(jù)思維,需要分三步走:
所有系統(tǒng)最可靠的就是日志輸出,系統(tǒng)是不是正常,,發(fā)生了什么情況,,我們以前是出了問題去查日志,或者自己寫個(gè)腳本定時(shí)去分析?,F(xiàn)在這些事情都可以整合到一個(gè)已有的平臺(tái)上,我們唯一要做的就是定義處理日志的的邏輯,。 這里有幾點(diǎn)注意的:
后話我做上面第一幅圖架構(gòu)實(shí)現(xiàn)時(shí),,從搭建到完成SparkStreaming程序開發(fā),,到數(shù)據(jù)最后進(jìn)入HBase存儲(chǔ),大概只花了一天多的時(shí)間,。當(dāng)然為了完成那個(gè)Trace的指標(biāo)分析,,我修改ServiceFramework框架大約改了兩三天。因?yàn)門race分析確實(shí)比較復(fù)雜,。當(dāng)然還有一個(gè)比較消耗工作量的,,是頁面可視化,我這塊自己還沒有能力做,等招個(gè)Web開發(fā)工程師再說了,。 來源:祝威廉 |
|