what?(前端監控是什么)
對線上代碼的異常排查,一般分為下面三個點:
- js的異常采集的方式
- js異常的上報方式
- 統計異常監控上報的常見問題
why?(為什么要有前端異常監控)
- 隨着移動互聯網的快速發展,互聯網獲取流量的渠道越來越多樣化。前端的應用場景不在局限於網頁,通常是網頁、公眾號、安卓端、ios都有涉及。這樣的話很多邊界問題完全依賴於后端的監控和測試階段的測試是完全不夠的。
- 用系統化的報錯采集替代人工上報。以便於獲得更快速的異常收集。
How?(怎么做)
js的異常處理方式
// try-catch 異常處理
// try-catch 在我們的代碼中經常見到,通過給代碼塊進行 try-catch 進行包裝后,當代碼塊發生出錯時 catch 將能捕捉到錯誤的信息,頁面也將可以繼續執行。
// 但是 try-catch 處理異常的能力有限,只能捕獲捉到運行時非異步錯誤,對於語法錯誤和異步錯誤就顯得無能為力,捕捉不到。
try
{
error
// 未定義變量
}
catch
(e) {
console.log(
'我知道錯誤了'
);
console.log(e);
}
----------------------------------------------------------------------------------------------------------------------------
// window.onerror 異常處理
// 無論是異步還是非異步錯誤,onerror 都能捕獲到運行時錯誤。
// 另外 onerror 是無法捕獲到網絡異常的錯誤
window.onerror =
function
(msg, url, row, col, error) {
console.log(
'我知道錯誤了'
);
console.log({
msg, url, row, col, error
})
return
true
;
};
new
Error(
'111'
)
- js異常的上報方式
- 根據定義好的數據格式,利用ajax發送數據
根據定義好的數據格式,利用img標簽發送數據
- 統計異常監控上報的常見問題
上報后的數據后台對對應的數據進行存儲分類,根據不同項目不同種類的錯誤進行統計。 超過一定數量可以設置報警等級制。
現有的前端異常處理的服務商
搭建sentry服務
entry有兩種安裝方式,一種是利用docker安裝,另外一種是配置pathon環境。官網推薦用docker,下面主要介紹docker渠道的安裝。
依賴環境
構建容器
- 克隆倉庫 getsentry/onpremise.
創建對應目錄
獲取項目的Key, 拷貝最后一行的key
打開docker-compose.yml, 將key考到 SENTRY_SECRET_KEY 后面
創建項目的superuser,根據提示一次填寫
開啟 sentry 服務,就可以進入自己的sentry啦, http:://ip:9000 即可進入你的 sentry
nginx配置
利用sentry來改善你的工作流程
創建新的項目:
選擇對應的框架:
記住項目對應的dsn點擊確定
將dns中的域名替換成我們jiazheng.daojia.com
sourcemap上傳:
homer API
error
info