


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
構(gòu)建Web前端異常監(jiān)控系統(tǒng)-FdSafe前言:如果你碰巧是一名前端開發(fā),而又碰巧在維護著一個對可用性有極高要求的站點,那么也許你我有過共同的苦惱:如何在第一時間發(fā)現(xiàn)線上出現(xiàn)的前端異常?畢竟前端不是每天都可以過網(wǎng)頁裸奔節(jié),線上的JavaScript錯誤也足以讓用戶抓狂地拿起他們的投訴電話。。。每天心驚膽戰(zhàn)發(fā)布的日子不好過吧?是時候改變下了,讓心驚膽戰(zhàn)見鬼去吧!我的目標很簡單:要在用戶和boss發(fā)現(xiàn)異常之前就徹底修復問題,其余的時間充分地享受高質(zhì)量生活:)一:前端異常監(jiān)控系統(tǒng)的構(gòu)建目標在對被監(jiān)控頁面無侵入的前提下,提供7*24小時全天候的監(jiān)控任務,第一時間發(fā)現(xiàn)“裸奔”、“半裸奔”頁面或是有JavaScript異常拋出的頁面,并給網(wǎng)站前端負責人提供短信、郵件等方式的報警服務??梢哉f,前端異常監(jiān)控系統(tǒng)主要是解決兩大異常情況:a.頁面上有javascript異常b.各種因素造成的頁面的樣式丟失。我先分別介紹下兩種這兩種異常的解決思路:二:JavaScript的異常監(jiān)控由于客戶端瀏覽器環(huán)境的不同,在開發(fā)環(huán)境中能夠工作的代碼,并非就能夠在用戶的電腦上正常運行,各種畸形瀏覽器造成的問題弄得我們很頭大,如果能像后端開發(fā)那樣可以隨時地查看服務器端錯誤日志就好了!可為什么不呢?JavaScript語言自身就提供了trycatch的異常處理語法,我們假以利用的話,就能夠在增強前端應用魯棒性的同時,又可以把捕獲到的異常拋送給前端異常監(jiān)控系統(tǒng),以錯誤日志的形式記錄到數(shù)據(jù)庫中。給應用添加異常處理功能,我們是可以充分發(fā)揮javascript語言是動態(tài)語言這一優(yōu)勢的。我可不想為了添加異常處理而在代碼中寫N多的try-catch語句。我的思路是:通過JavaScript類模塊在應用中注冊的時候,遍歷類模塊中的每個函數(shù),然后統(tǒng)一的加上try-catch處理,這樣前端里面的所有函數(shù)就都在異常處理的范圍之內(nèi)了。怎么樣,是不是要比Java等靜態(tài)語言cool很多?代碼示例如下:>5io曲曜模式下trywKth不起作用.?空皤!攬器自或t駕昔誤〃/Zonli征棋式下可以拙苜誤信息記錄在日>5io曲曜模式下trywKth不起作用.?空皤!攬器自或t駕昔誤〃/Zonli征棋式下可以拙苜誤信息記錄在日志眼務郢上占If(1DEBUG_PjCO){ for(nameinQnstanE3-{iieth&d-instafite[fljm^];1+(typeofffiethod--'i-Functi....i,■"){instance[n*tie]?-Functioni(nafffi,rfiethod){returnfunction()(try(returrnethod.apply(thispdrguaerits);catch(ex)(S.lcfiger.error{tiQdulerdt"zhrDn-eir-Dr:H+name+■()>"譽ex.jtiessag16};Jfflatie:,method);有了以上的全局異常處理函數(shù)之后,解決線上的JavaScript異常就是小菜一碟,只需要定義好錯誤message的格式,并在catch語句中向異常監(jiān)控系統(tǒng)的固定接口發(fā)送請求即可。我們可以在錯誤消息中發(fā)送關(guān)于錯誤的瀏覽器信息,JS模塊信息,函數(shù)信息,或具體的錯誤消息等,要傳送哪些信息全看你自己的需要。在FdSafe異常監(jiān)控系統(tǒng)中,我們傳輸了如下錯誤信息:hi■咧 EgerTOR_rendei3errorh5^_modjlt£r_3re3EJiro^verror;inOfcerjreaD-jr 3errorb5w_nwd_l:ltar_dre3throwenor:nrt_ri:er_areB|)-> 3&rnor|PCTs-_nwd_ftt?r^ar5athrowerror:nrt_ri:6r_ane3()-h> 3nriDi|Pffw_rr?d_prnvKwCampny[rrfothrownrrar:_randnr 2erior|P5^_rHod_prevfiiMCampan^[riro由nowerrarijendei 售enoib&vi_nx?d_previeftCornpanv[riftithrowerran_rsndei 3errorLEw.rrcid.ivhrtEgiHdmtError:JSOfLpar&e:untemnr 33012-Lfl-2721:50!L92012-10-3721:49;^2012-10-2721:43:132012-LD-272K47:232012-10-2731^^432012-Lfl-272]:46Ha2012-10-3721:46H62012-LD-2721:46:42htcpYj駐中由廿irQ.mBs出m.mnv站l&rr既他jsearrms吏httg*如rch_d】in3,ml5abM3nV站站作什躋臼點面寸msie9』http:/j=^ariJi.dirajfcE&a8coiTk,HlolTEnioffer_5e-Brcres直J.D憂8山安齊出6戲§1^3況?00叫強10儉時-。。匚2眸£日neeB:.Uhbtp://E4ari±ijd-ir^.afc^3a.CDrrbl?loFQn>DrfQr_Bflia'icl-ncu&.0htqai/jifiarchjdire.aljabazDrri'fieltirreri'D^e^fieaftT6.0http:打決由ch-china閂BsjbmDffV&BkifWr*取*5,寸ntis&.Dht^::'jMdriJi.dir3aafcabaxoin,HlolTEri!crfer_5e'2rcrmozia13.0arnor|iarnor|i.Ew_nxid_fieacb5ckhtErrorjSQttparse;untBrnnB0nQilrE¥r?rrEid_dothe5FtErrorJSOH.wrre;untenrn?tE2012-10-2721:4&;41hfn;/俄mrchjdirsstKmmrr^lomEo^jKEtmozia18J0三:樣式丟失的異常監(jiān)控如果你的頁面在不該裸奔的時候突然裸奔了,那就是嚴重的可用性問題,需要前端同學在第一時間定位問題并迅速修復。引發(fā)“裸奔”的可能性很多,也許是CSS文件404了,也許是CSS文件@importurl的問題,但是最終的表象只有一個,那就是頁面樣式突然發(fā)生極大改變。在fdsafe系統(tǒng)中,我們使用了圖片對比的方法來探測線上頁面發(fā)生“裸奔”的現(xiàn)象,原理上很簡單:對于被監(jiān)控頁面的URL,我們讓監(jiān)控系統(tǒng)保留其前一天頁面被瀏覽器渲染后的截圖,然后讓監(jiān)控系統(tǒng)周期性的定時抓取線上頁面的截圖,兩張圖片做相似度對比,如果相似度差值超過一定的閾值,則會觸發(fā)報警條件。頁面的截圖我們是使用QT的webkit內(nèi)核渲染并截取的,當然也推薦使用selenium的瀏覽器截圖功能。而圖片相似度的算法很多,我們最終采用的是OpenCV中的cvCompareHist算法。四:其它的異常監(jiān)控
除了樣式丟失及javascript異常之外,前端還是有很多其它異??梢酝ㄟ^系統(tǒng)來監(jiān)控的,比如說JS、CSS文件的404錯誤,HTML源碼的閉合異常,或JS、CSS文件的壓縮異常等。fdSafe系統(tǒng)能夠通過添加插件的方式來提供對不同異常的監(jiān)控,然后統(tǒng)一匯總到異常日志中。五:系統(tǒng)總體框架圖搭建前端的異常監(jiān)控系統(tǒng),自然也要體現(xiàn)我們前端的特色,后臺的系統(tǒng)我們是基于NodeJS來實現(xiàn)的,它主要完成兩個功能:1) 定時抓取被監(jiān)控頁面的HTML源碼,并分析是否存在頁面樣式丟失異?;蚴瞧渌惓?。2) 接受來自用戶瀏覽器發(fā)送的JavaScript異常。一旦異常發(fā)生,且超出設定的允許閾值,則觸發(fā)報警條件,給負責人發(fā)送報警短信,系統(tǒng)原理圖如下:后臺傍理模埃取常志升常展示模塊NodeJSServer司ll|Df0序gnAPI后臺傍理模埃取常志升常展示模塊NodeJSServer司ll|Df0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 混凝土道路維修施工方案
- 湖北水幕噴泉施工方案
- 《 龍川別志(節(jié)選) 》
- 重慶公園綠化工程施工方案
- 屋面門窗修理施工方案
- 實驗室通風櫥裝修施工方案
- 2025年紙品用膠合作協(xié)議書
- 玻璃幕墻更換施工方案
- 2025年手持云臺項目建議書
- 醫(yī)療機構(gòu)水污染物排放的公眾參與與社會監(jiān)督
- DB50T 441-2012 渝菜 毛血旺烹飪技術(shù)規(guī)范
- 2024年05月富德生命人壽保險股份有限公司招考筆試歷年參考題庫附帶答案詳解
- 醫(yī)防融合培訓
- 高速鐵路設計規(guī)范
- 《電機能能效等級》課件
- 幼兒園課件之大班科學《四季的變化》
- 電商客服外包服務合同
- 影視拍攝現(xiàn)場突發(fā)安全事件應急預案
- DB37T 5096-2017 建設工程項目管理咨詢規(guī)范
- 雙方同意小孩改姓名協(xié)議書(2篇)
- 2023年私募股權(quán)投資基金基礎(chǔ)知識真題模擬匯編(共824題)
評論
0/150
提交評論