自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

構(gòu)建Web前端異常監(jiān)控系統(tǒng)–FdSafe

開發(fā) 前端
可以說,前端異常監(jiān)控系統(tǒng)主要是解決兩大異常情況:a. 頁面上有javascript異常 b. 各種因素造成的頁面的樣式丟失。我先分別介紹下兩種這兩種異常的解決思路:

前言:

如果你碰巧是一名前端開發(fā),而又碰巧在維護(hù)著一個對可用性有極高要求的站點,那么也許你我有過共同的苦惱:如何在第一時間發(fā)現(xiàn)線上出現(xiàn)的前端異常?畢竟前端不是每天都可以過網(wǎng)頁裸奔節(jié),線上的JavaScript錯誤也足以讓用戶抓狂地拿起他們的投訴電話。。。每天心驚膽戰(zhàn)發(fā)布的日子不好過吧?

是時候改變下了,讓心驚膽戰(zhàn)見鬼去吧!我的目標(biāo)很簡單:要在用戶和boss發(fā)現(xiàn)異常之前就徹底修復(fù)問題,其余的時間充分地享受高質(zhì)量生活:)

一:前端異常監(jiān)控系統(tǒng)的構(gòu)建目標(biāo)

在對被監(jiān)控頁面無侵入的前提下,提供7*24小時全天候的監(jiān)控任務(wù),第一時間發(fā)現(xiàn)“裸奔”、“半裸奔”頁面或是有JavaScript異常拋出的頁面,并給網(wǎng)站前端負(fù)責(zé)人提供短信、郵件等方式的報警服務(wù)。

可以說,前端異常監(jiān)控系統(tǒng)主要是解決兩大異常情況:a. 頁面上有javascript異常  b. 各種因素造成的頁面的樣式丟失。我先分別介紹下兩種這兩種異常的解決思路:

二:JavaScript的異常監(jiān)控

由于客戶端瀏覽器環(huán)境的不同,在開發(fā)環(huán)境中能夠工作的代碼,并非就能夠在用戶的電腦上正常運行,各種畸形瀏覽器造成的問題弄得我們很頭大,如果能像后端開發(fā)那樣可以隨時地查看服務(wù)器端錯誤日志就好了!可為什么不呢?

JavaScript語言自身就提供了try catch的異常處理語法,我們假以利用的話,就能夠在增強前端應(yīng)用魯棒性的同時,又可以把捕獲到的異常拋送給前端異常監(jiān)控系統(tǒng),以錯誤日志的形式記錄到數(shù)據(jù)庫中。

給應(yīng)用添加異常處理功能,我們是可以充分發(fā)揮javascript語言是動態(tài)語言這一優(yōu)勢的。我可不想為了添加異常處理而在代碼中寫N多的try-catch語句。 我的思路是:通過JavaScript類模塊在應(yīng)用中注冊的時候,遍歷類模塊中的每個函數(shù),然后統(tǒng)一的加上try-catch處理,這樣前端里面的所有函數(shù)就都在異常處理的范圍之內(nèi)了。怎么樣,是不是要比Java等靜態(tài)語言cool很多? 代碼示例如下:

構(gòu)建web前端異常監(jiān)控系統(tǒng)–FdSafe

有了以上的全局異常處理函數(shù)之后,解決線上的JavaScript異常就是小菜一碟,只需要定義好錯誤message的格式,并在catch語句中向異常監(jiān)控系統(tǒng)的固定接口發(fā)送請求即可。我們可以在錯誤消息中發(fā)送關(guān)于錯誤的瀏覽器信息,JS模塊信息,函數(shù)信息,或具體的錯誤消息等,要傳送哪些信息全看你自己的需要。在FdSafe異常監(jiān)控系統(tǒng)中,我們傳輸了如下錯誤信息:

構(gòu)建web前端異常監(jiān)控系統(tǒng)–FdSafe

三:樣式丟失的異常監(jiān)控

如果你的頁面在不該裸奔的時候突然裸奔了,那就是嚴(yán)重的可用性問題,需要前端同學(xué)在第一時間定位問題并迅速修復(fù)。引發(fā)“裸奔”的可能性很多,也許是CSS文件404了,也許是CSS文件@import url的問題,但是最終的表象只有一個,那就是頁面樣式突然發(fā)生極大改變。

在fdsafe系統(tǒng)中,我們使用了圖片對比的方法來探測線上頁面發(fā)生“裸奔”的現(xiàn)象,原理上很簡單:對于被監(jiān)控頁面的URL,我們讓監(jiān)控系統(tǒng)保留其前一天頁面被瀏覽器渲染后的截圖,然后讓監(jiān)控系統(tǒng)周期性的定時抓取線上頁面的截圖,兩張圖片做相似度對比,如果相似度差值超過一定的閾值,則會觸發(fā)報警條件。

頁面的截圖我們是使用QT的webkit內(nèi)核渲染并截取的,當(dāng)然也推薦使用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ā)生,且超出設(shè)定的允許閾值,則觸發(fā)報警條件,給負(fù)責(zé)人發(fā)送報警短信,系統(tǒng)原理圖如下:

構(gòu)建web前端異常監(jiān)控系統(tǒng)–FdSafe

六:總結(jié)

隨著Web應(yīng)用朝著富客戶端方向的發(fā)展,前端應(yīng)用的可用性重要性越來越高,搭建前端異常監(jiān)控系統(tǒng)的必要性也是越來也高,希望本文能夠給大家提供一些思路上的啟發(fā)。

原文鏈接

責(zé)任編輯:張偉 來源: Alibaba UED
相關(guān)推薦

2023-03-01 09:07:44

前端監(jiān)控異常

2024-07-26 10:28:51

2018-09-14 16:20:37

2015-08-20 10:23:23

前端代碼日志收集

2023-11-22 09:42:02

系統(tǒng)檢測

2022-11-28 07:35:52

前端錯誤

2020-09-04 13:50:35

前端異常監(jiān)控代碼

2022-06-10 14:09:18

前端監(jiān)控異常數(shù)據(jù)

2017-05-04 21:30:32

前端異常監(jiān)控捕獲方案

2022-05-22 21:23:10

前端監(jiān)控系統(tǒng)

2020-08-25 18:56:19

前端開發(fā)技術(shù)

2015-03-12 09:42:56

2025-03-11 00:25:00

Springmetrics數(shù)據(jù)

2012-10-09 11:02:11

IBMdw

2023-11-17 09:50:38

云原生監(jiān)控

2020-11-24 09:36:19

分布式監(jiān)控系統(tǒng)

2021-01-26 10:33:45

前端開發(fā)技術(shù)

2020-03-20 19:37:03

JavascriptWeb前端

2013-09-04 14:49:10

移動Web前端開發(fā)設(shè)計理念

2024-06-21 14:55:22

LinuxShell腳本
點贊
收藏

51CTO技術(shù)棧公眾號