網(wǎng)絡(luò)監(jiān)控必不可少
- 編輯:admin -如果你的工作已經(jīng)是不止一天圍繞著技術(shù)平臺(tái)、技術(shù)系統(tǒng)、后臺(tái)辦公I(xiàn)T系統(tǒng)或者產(chǎn)品平臺(tái)了,那么在最近發(fā)生的事故、故障或危機(jī)中,你很可能已經(jīng)聽(tīng)到過(guò)這樣的問(wèn)題,“為什么我們沒(méi)能及早發(fā)現(xiàn)它”。如果你和我們年紀(jì)相仿,或者比我們年紀(jì)還大,那么你可能早就記不清楚自己聽(tīng)到過(guò)多少次這種問(wèn)題了。答案通常相當(dāng)簡(jiǎn)單,這往往是因?yàn)橐粋€(gè)服務(wù)、組件、應(yīng)用或系統(tǒng)沒(méi)有被監(jiān)控或者監(jiān)控不當(dāng)而導(dǎo)致的。而這個(gè)答案的結(jié)尾常常還會(huì)加上一句,“這個(gè)問(wèn)題再也不會(huì)發(fā)生了”。
如果你的工作已經(jīng)是不止一天圍繞著技術(shù)平臺(tái)、技術(shù)系統(tǒng)、后臺(tái)辦公I(xiàn)T系統(tǒng)或者產(chǎn)品平臺(tái)了,那么在最近發(fā)生的事故、故障或危機(jī)中,你很可能已經(jīng)聽(tīng)到過(guò)這樣的問(wèn)題,“為什么我們沒(méi)能及早發(fā)現(xiàn)它”。如果你和我們年紀(jì)相仿,或者比我們年紀(jì)還大,那么你可能早就記不清楚自己聽(tīng)到過(guò)多少次這種問(wèn)題了。答案通常相當(dāng)簡(jiǎn)單,這往往是因?yàn)橐粋€(gè)服務(wù)、組件、應(yīng)用或系統(tǒng)沒(méi)有被監(jiān)控或者監(jiān)控不當(dāng)而導(dǎo)致的。而這個(gè)答案的結(jié)尾常常還會(huì)加上一句,“這個(gè)問(wèn)題再也不會(huì)發(fā)生了”。
即使這個(gè)問(wèn)題再也不會(huì)發(fā)生了,雖然根據(jù)我們的經(jīng)驗(yàn),這個(gè)問(wèn)題經(jīng)常還是會(huì)再發(fā)生,但很可能還會(huì)出現(xiàn)相似的問(wèn)題。于是同樣的問(wèn)題會(huì)被再次提出,可能還會(huì)執(zhí)行事后分析流程,然后采取一一些行動(dòng)“再次”來(lái)正確地監(jiān)控這個(gè)服務(wù)。
雖然“為什么我們沒(méi)能及早發(fā)現(xiàn)它”這個(gè)問(wèn)題有一定的用途,但它不像些更好的問(wèn)題那么有價(jià)值,例如“我們的流程中有哪些問(wèn)題,造成了我們沒(méi)有合適的監(jiān)控方法來(lái)發(fā)現(xiàn)這些問(wèn)題就啟動(dòng)了服務(wù)”。你也許認(rèn)為這兩個(gè)問(wèn)題是相似的,但事實(shí)并非如此。第一個(gè)問(wèn)題 “為什么我們沒(méi)能及早發(fā)現(xiàn)它”指的是此時(shí)此刻的這個(gè)問(wèn)題,它不無(wú)幫助,至少能驅(qū)動(dòng)正確的行動(dòng),來(lái)解決我們剛遇到的這個(gè)故障。但另方面,第二個(gè)問(wèn)題解決的是人員和流程的問(wèn)題,正是它們才使得你在沒(méi)有合適監(jiān)控的情況下,經(jīng)歷了剛才發(fā)生的事件,或者其他類似的事件。如果你愿意,可以回想一下我們?cè)诘?章中討論過(guò)的故障與問(wèn)題的關(guān)系。一個(gè)問(wèn)題會(huì)引發(fā)一個(gè)故障, 可能還與多個(gè)故障有關(guān)。我們提出的第-個(gè)問(wèn)題解決是的故障,而不是問(wèn)題。而我們提出的第一個(gè)問(wèn)題,解決的就是問(wèn)題。兩個(gè)問(wèn)題都應(yīng)該被提出,但如果你只能提個(gè)問(wèn)題,并且只能得到一個(gè)問(wèn)題的答案, 那么我們認(rèn)為,你應(yīng)該修復(fù)的是問(wèn)題,而不是故障。
我們認(rèn)為,通過(guò)監(jiān)控沒(méi)有發(fā)現(xiàn)問(wèn)題最常見(jiàn)的原因是,大多數(shù)系統(tǒng)都沒(méi)有被設(shè)計(jì)為能夠監(jiān)控的。事實(shí)上,大多數(shù)系統(tǒng)都是先被設(shè)計(jì)實(shí)現(xiàn)了,然后才考慮監(jiān)控的。通常,負(fù)責(zé)判斷系統(tǒng)或應(yīng)用是否工作正常的團(tuán)隊(duì)都不是定義系統(tǒng)行為或者設(shè)計(jì)它的團(tuán)隊(duì)。最常見(jiàn)的結(jié)果就是,對(duì)應(yīng)用執(zhí)行的監(jiān)控手段是由不能判斷應(yīng)用是否執(zhí)行正確的團(tuán)隊(duì)開(kāi)發(fā)的。這樣就會(huì)造成監(jiān)控系統(tǒng)不能抓住關(guān)鍵的成功或失敗指標(biāo),相對(duì)于公司內(nèi)部對(duì)于監(jiān)控系統(tǒng)能夠在影響客戶的關(guān)鍵問(wèn)題出現(xiàn)之前就識(shí)別出它們的期望;這樣的監(jiān)控系統(tǒng)無(wú)疑注定會(huì)失敗。
要注意,設(shè)計(jì)為能夠監(jiān)控的并不只意味著要理解如何正確地監(jiān)控一個(gè)系統(tǒng)的成敗與否。設(shè)計(jì)為能夠監(jiān)控的是要把監(jiān)控功能構(gòu)建在應(yīng)用或系統(tǒng)內(nèi)部的,而不是構(gòu)建在它們周圍。它不僅僅是要記錄發(fā)生的故障,進(jìn)一步識(shí)別故障的主題,甚至還可能從應(yīng)用的角度自主提出潛在的問(wèn)題或擔(dān)心。所謂被設(shè)計(jì)為能夠監(jiān)控的系統(tǒng),要能夠評(píng)估所有服務(wù)的響應(yīng)時(shí)間,當(dāng)響應(yīng)時(shí)間超出正常水平時(shí),就要與某些人進(jìn)行交互或者警示他們。這個(gè)系統(tǒng)可能還會(huì)評(píng)估一段時(shí)間內(nèi)記錄的錯(cuò)誤的頻率,如果這個(gè)頻率發(fā)生了很大的變化,或者其中出現(xiàn)的錯(cuò)誤改變了,它也會(huì)警示合適的人。采用一個(gè)統(tǒng)計(jì)過(guò)程控制圖,從過(guò)去30個(gè)相似日期的相同時(shí)間段的數(shù)據(jù)中可以得到一個(gè)平均值,如果錯(cuò)誤率或響應(yīng)時(shí)間落在了這個(gè)平均值的標(biāo)準(zhǔn)差之外,就報(bào)警,這樣就可以實(shí)現(xiàn)上述兩種方式。這里,“相似”的日期可以是周一對(duì)周一,周六對(duì)周六。
當(dāng)公司成功實(shí)現(xiàn)了設(shè)計(jì)為能夠監(jiān)控的這個(gè)架構(gòu)設(shè)計(jì)原則后,他們就會(huì)開(kāi)始問(wèn)第三個(gè)問(wèn)題。這個(gè)問(wèn)題最好在實(shí)現(xiàn)系統(tǒng)之前就問(wèn),通常是在架構(gòu)評(píng)審委員會(huì)( ARB)或聯(lián)合應(yīng)用設(shè)計(jì)(JAD)會(huì)議上提出。這個(gè)問(wèn)題通常是“我們?nèi)绾沃肋@個(gè)系統(tǒng)運(yùn)行正常,又如何知道何時(shí)它表現(xiàn)糟糕呢”。對(duì)于第三個(gè)問(wèn)題,正確的答案需要包括前面我們提到的統(tǒng)計(jì)過(guò)程控制方案中的元素。任何一個(gè)正確的答案,告訴我們的都不能只是應(yīng)用日志中有錯(cuò)誤出現(xiàn)了。記住,我們希望系統(tǒng)告訴我們的不只是系統(tǒng)行為與預(yù)期不符了,還要告訴我們系統(tǒng)行為何時(shí)出現(xiàn)異常。這是兩件完全不同的事情。
要注意到,讓運(yùn)營(yíng)團(tuán)隊(duì)開(kāi)發(fā)套應(yīng)用監(jiān)控指標(biāo),只是查找SNMP告警,或者遍歷日志以查找軟件開(kāi)發(fā)人員說(shuō)明的重要字符串,這些雖然也是監(jiān)控方法,但與我們上述的監(jiān)控有很大的不同。我們所說(shuō)的監(jiān)控也不只是查看CPU使用情況、負(fù)載、內(nèi)存使用情況等。當(dāng)然,這并不是說(shuō)這些指標(biāo)不重要,但只是監(jiān)控它們還不足以保證你的應(yīng)用是健康的。
我們通過(guò)網(wǎng)站建設(shè)監(jiān)控沒(méi)有發(fā)現(xiàn)問(wèn)題的次常見(jiàn)原因是,我們開(kāi)發(fā)監(jiān)控系統(tǒng)的方法與我們開(kāi)發(fā)其他系統(tǒng)的方法不同。通常我們并不會(huì)設(shè)計(jì)我們的監(jiān)控系統(tǒng),也不會(huì)以一一種系統(tǒng)的發(fā)展方式來(lái)開(kāi)發(fā)它。大多數(shù)情況下,我們都是依靠生產(chǎn)環(huán)境的故障和危機(jī)來(lái)使我們的監(jiān)控系統(tǒng)變得成熟,而這種方法通常會(huì)無(wú)緣無(wú)故地給監(jiān)控系統(tǒng)打個(gè)補(bǔ)丁。當(dāng)被問(wèn)到在監(jiān)控什么時(shí),我們很可能會(huì)給出所有典型的答案,從應(yīng)用日志到系統(tǒng)資源的使用情況,甚至還會(huì)信誓旦旦地說(shuō),我們還監(jiān)控了過(guò)去發(fā)生過(guò)的重大故障的各種跡象。我們幾乎不會(huì)回答說(shuō),我們是按照設(shè)計(jì)和實(shí)現(xiàn)我們的平臺(tái)或服務(wù)的那一套標(biāo)準(zhǔn)來(lái)開(kāi)發(fā)我們的監(jiān)控系統(tǒng)的。接下來(lái)我們將給出了一個(gè)框架,用于解決這個(gè)次常見(jiàn)的問(wèn)題。
