国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

2022年再不知道前端監控就OUT了

開發 前端
前端監控的第一個步驟就是數據采集,采集的信息包含環境信息、性能信息、異常信息、業務信息。

前端監控現狀

近年來,前端監控是越來越火,目前已經有很多成熟的產品供我們選擇使用,如下圖所示

有這么多監控平臺,那為什么還要學習自研前端監控?

  • 一方面人家是要錢的。
  • 另一方面自己的項目需要定制化的功能。

前端監控的目的

  1. 提升用戶體驗。
  2. 更快的發現發現異常、定位異常、解決異常。
  3. 了解業務數據,指導產品升級——數據驅動的思想。

前端監控的流程

采集

前端監控的第一個步驟就是數據采集,采集的信息包含環境信息、性能信息、異常信息、業務信息。

環境信息

環境信息是每個監控系統必備的內容,畢竟排查問題的時候需要知道來自哪個頁面、瀏覽器是誰、操作用戶是誰……,這樣才能快速定位問題,解決問題。一般這些常見的環境信息主要包含:

  • url:正在監控的頁面,該頁面可能會出現性能、異常問題。獲取方式為:
  • window.location.href.
  • ua:訪問該頁面時該用戶的userAgent信息,包含操作系統和瀏覽器的類型、版本等。獲取方式為:
  • window.navigator.userAgent
  • token:記錄當前用戶是誰。通過記錄該用戶是誰。
  • 一方面方便將該用戶的所有監控信息建立聯系,方便數據分析;
  • 另一方面通過該標識可以查看該用戶的所有操作,方便復現問題。

性能信息

頁面的性能直接影響了用戶留存率,,Google DoubleClick 研究表明:如果一個移動端頁面加載時長超過 3 秒,用戶就會放棄而離開。BBC 發現網頁加載時長每增加 1 秒,用戶就會流失 10%。,Google DoubleClick 研究表明:如果一個移動端頁面加載時長超過 3 秒,用戶就會放棄而離開。BBC 發現網頁加載時長每增加 1 秒,用戶就會流失 10%。所以我們的追求就是提高頁面的性能,為了提高性能需要監控哪些指標呢?

指標分類

指標有很多,我總結為以下兩個方面:網絡層面和頁面展示層面。

網絡層面

從網絡層面來看涉及的指標有:重定向耗時、DNS解析耗時、TCP連接耗時、SSL耗時、TTFB網絡請求耗時、數據傳輸耗時、資源加載耗時……,各個指標的解釋如下表所示:

頁面展示層面

頁面展示層面的指標是針對用戶體驗提出的幾個指標,包含FP、FCP、LCP、FMP、DCL、L等,這幾個指標其實就是chrome瀏覽器中performance模塊的指標(如圖所示)。

各個指標的解釋如下表所示。

指標求解

上述這么多指標該怎么獲取呢?瀏覽器給我們留了相應的接口——神奇的window.performance,通過該接口可以獲取一些列與性能相關的參數,下面以https://baidu.com 為例來看一下與這些指標相關的參數:

window.performance中的timing屬性中的內容不就是為了求解上述指標所需要的值嗎?看著上面的屬性值再對應下面的performance訪問流程圖,整個過程是不是一目了然。

有了上面的值我們就一起求解上述的指標:

網絡層面

頁面展示層面

Google工程師一直在推動以用戶為中心的性能指標,所以頁面展示層面的變化較大,求解方式稍有不同:

FP和FCP

通過window.performance.getEntriesByType(‘paint’)的方式獲取。

const paint = window.performance.getEntriesByType('paint');
const FP = paint[0].startTime,
const FCP = paint[1].startTime,

LCP

function getLCP() {
// 增加一個性能條目的觀察者
new PerformanceObserver((entryList, observer) => {
let entries = entryList.getEntries();
const lastEntry = entries[entries.length - 1];
observer.disconnect();
console.log('LCP', lastEntry.renderTime || lastEntry.loadTime);
}).observe({entryTypes: ['largest-contentful-paint']});
}

FMP

function getFMP() {
let FMP;
new PerformanceObserver((entryList, observer) => {
let entries = entryList.getEntries();
observer.disconnect();
console.log('FMP', entries);
}).observe({entryTypes: ['element']});
}

DCL

domContentLoadEventEndfetchStart

L

loadEventStartfetchStart

TTI

domInteractivefetchStart

FID

function getFID() {
new PerformanceObserver((entryList, observer) => {
let firstInput = entryList.getEntries()[0];
if (firstInput) {
const FID = firstInput.processingStart - firstInput.startTime;
console.log('FID', FID);
}
observer.disconnect();
}).observe({type: 'first-input', buffered: true});
}

異常信息

對于網站來說,異常信息是最致命、最影響用戶體驗的問題,需要重點監控。對于異常信息可以分為兩類:運行時錯誤、接口錯誤。下面就分別來嘮一嘮這兩類錯誤。

運行時錯誤

當JavaScript運行時有可能會發生錯誤,可歸類為七種:語法錯誤、類型錯誤、范圍錯誤、引用錯誤、eval錯誤、URL錯誤、資源加載錯誤。為了捕獲代碼錯誤,需要考慮兩類場景:非Promise場景和Promise場景,因為兩種場景捕獲錯誤的策略不同。

非Promise場景

非Promise場景可通過監聽error事件來捕獲錯誤。對于error事件捕獲的錯誤分為兩類:資源錯誤和代碼錯誤。資源錯誤指的就是js、css、img等未加載,該錯誤只能在捕獲階段獲取到,且為資源錯誤時event.target.localName存在值(用此區分資源錯誤與代碼錯誤);代碼錯誤指的就是語法錯誤、類型錯誤等這一類錯誤,可以獲取代碼錯誤的信息、堆棧等,用于排查錯誤。

export function listenerError() {
window.addEventListener('error', (event) => {
if (event.target.localName) {
console.log('這是資源錯誤', event);
}
else {
console.log('這是代碼錯誤', event);
}
}, true)
}

Promise場景

Promise場景的處理方式有所不同,當Promise被reject且沒有reject處理器的時候,會觸發unhandlerejection事件,所以通過監聽unhandlerejection的事件來捕獲錯誤。

export function listenerPromiseError() {
window.addEventListener('unhandledrejection', (event) => {
console.log('這是Promise場景中錯誤', event);
})
}

接口錯誤

對于瀏覽器來說,所有的接口均是基于XHR和Fetch實現的,為了捕獲接口中的錯誤,可以通過重寫該方法,然后通過接口返回的信息來判斷當前接口的狀況,下面以XHR為例來展示封裝過程。

function newXHR() {
const XMLHttpRequest = window.XMLHttpRequest;
const oldXHROpen = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = (method, url, async) => {
// 做一些自己的數據上報操作
return oldXHROpen.apply(this, arguments);
}
const oldXHRSend = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = (body) => {
// 做一些自己的數據上報操作
return oldXHRSend.apply(this, arguments);
}
}

業務信息

每個產品都會有自己的業務信息,例如用戶在線時長、pv、uv、用戶分布等,通過獲取這些業務信息才能更加清楚的了解目前產品的狀況,以便產品經理更好的去規劃產品的未來方向。由于每個產品業務信息多種多樣,小伙伴本可以按照自己的需求進行撰寫代碼,此處我就不再贅述。

上報

對于上報的方式無外乎兩種:一種是Ajax的方式上報;另一種是通過Image的形式進行上報。目前很多大廠采用的上報方式均是通過一個1*1像素的的gif圖片進行上報,既然人家都采用該種策略,那我們就來嘮一嘮下面兩個問題。

為什么采用Image的方式上報?

  1. 沒有跨域問題。因為數據服務器和后端服務器大概率是不同的域名,若采用Ajax的方式進行處理還要處理跨域問題,否則數據會被瀏覽器攔截。
  2. 不會阻塞頁面加載,只需new Image對象即可。

圖片類型很多,為什么采用gif這種格式進行上報?

其實歸結為一個字——小。對于1*1px的圖片,BMP結構的文件需要74字節,PNG結構的文件需要67字節,GIF結構的文件只需要43字節。同樣的響應,GIF可以比BMP節約41%的流量,比PNG節約35%的流量,所以選擇gif進行上報。

分析

日志上報之后需要進行清洗,獲取自己所需要內容,并將分析內容進行存儲。根據數據量的大小可分為兩種方式:單機和集群。

單機

訪問量小、日志少的網站可以采用單機的方式對數據進行分析,例如用node讀取日志文件,然后通過日志文件中獲取所需要的信息,最終將處理的信息存儲到數據庫中。

集群

很多產品的訪問量很大,日志很多,此時就需要利用Hadoop進行分布式處理,獲取最終處理結果,其處理流程圖如下所示:

根據自己的日志量級決定自己的分析方式,合適的就是最好的,不用一味追求最優的、最先進的處理方式。

報警

當異常類型超多一定閾值之后需要進行報警通知,讓對應的工作人員去處理問題,及時止損。根據報警的級別不同,可以選擇不同的報警方式。

  1. 郵件——普通報警。
  2. 短信——嚴重報警,已影響部分業務。
  3. 電話——特別嚴重,例如系統已宕機。
責任編輯:姜華 來源: 前端點線面
相關推薦

2017-12-19 23:12:53

2019-12-24 09:49:02

微軟英語瀏覽器

2017-01-19 09:41:29

2020-03-05 08:00:05

分布式事務數據庫

2017-12-14 14:38:56

物聯網網絡技術機器學習

2018-01-15 10:51:42

2017-02-23 15:13:29

網絡安全技術周刊

2021-07-26 05:17:39

Linux PosixLinux 系統

2021-10-08 06:10:43

前端技術Vue

2019-04-11 09:37:50

2018-07-25 17:05:25

Windows電腦數碼

2023-01-02 10:08:42

StampedLocAQS框架

2021-12-02 22:45:44

計算

2018-12-06 09:12:58

2015-12-08 11:08:00

戴爾云計算

2022-10-12 08:22:44

Guava工具Collection

2019-10-28 08:44:29

Code Review代碼團隊

2020-07-28 08:26:34

WebSocket瀏覽器

2020-06-12 09:20:33

前端Blob字符串

2020-07-03 14:30:34

Node內存前端
點贊
收藏

51CTO技術棧公眾號

超碰成人免费| 国产探花一区在线观看| 国产欧美精品一区二区三区四区| 亚洲精品国产精品国自产观看| 136导航精品福利| 中文字幕九色91在线| 在线āv视频| 欧美日韩国产大片| 麻豆导航在线观看| 亚洲综合在线观看视频| 国产又大又黄又粗又爽| 成人美女视频在线观看18| 亚洲伊人婷婷| 久久99久国产精品黄毛片色诱| 国产精品一区二区三区精品| 1024精品久久久久久久久| 国产精品444| 国产成人手机高清在线观看网站| 久久久精品在线观看| 亚洲黄色免费av| 亚洲精品国产精品久久清纯直播| 手机在线免费观看av| 精品1区2区在线观看| aa国产成人| 伊人亚洲福利一区二区三区| 日韩网站中文字幕| 日韩中文在线视频| 欧美电影院免费观看| 欧美高清一级大片| 免费成人结看片| 91欧美日韩一区| 在线日本成人| 日韩国产欧美一区| 国产精品夜夜爽| 欧美日韩在线不卡视频| 国产精品免费看片| 在线视频se| 欧美精品免费视频| 午夜影院在线播放| 欧美成人一区在线| 国产探花一区在线观看| 91九色偷拍| 美女视频黄久久| 少妇性饥渴无码a区免费| 国产精品丝袜一区| 毛片免费在线播放| 日韩精品视频免费在线观看| 国产高清日韩| 国产精品白嫩初高中害羞小美女| 久久大综合网| 日韩精品一区二区三区四区五区| 成人免费黄色大片| 伊人发布在线| 精品少妇一区二区三区日产乱码 | 精品国内自产拍在线观看| 深夜福利一区| 91九色偷拍| 久久99久国产精品黄毛片色诱| 成人午夜视频免费在线观看| 午夜精品福利在线| 91www在线| 日本成人黄色片| 日韩一区精品视频| 在线观看成人网| 日韩欧美二区三区| 美女主播精品视频一二三四| 春色成人在线视频| 久久众筹精品私拍模特| 国产日本在线| 久久精品免费电影| 影音先锋中文字幕一区| 免费日韩视频在线观看| 欧美日韩精品三区| 大型av综合网站| 成人国产精品一区二区免费麻豆| 男人天堂资源在线| 亚洲成年人在线| 欧美一区二区三区久久| 日本三级中国三级99人妇网站| 国产亚洲一区二区三区在线观看| 人成免费电影一二三区在线观看| 亚洲女人天堂色在线7777| 久久综合五月婷婷| 日韩高清av电影| 亚洲午夜精品在线| 我爱我色成人网| 国产精品欧美日韩久久| 国产乱人伦偷精品视频不卡| a4yy在线播放免费观看视频| 中文字幕av一区中文字幕天堂 | 国产视频精品在线| 98精品视频| 各处沟厕大尺度偷拍女厕嘘嘘 | 免费毛片在线| 欧美成人免费观看| 日本成人中文字幕| 日韩美女一级视频| 久久69精品久久久久久久电影好 | 蜜桃一区二区三区四区| 爱爱免费视频网站| 欧美一区二区视频97| 日本三级久久| 欧美高清中文字幕| 制服丝袜在线91| 日韩久久精品| 肥女人的一级毛片| 曰本色欧美视频在线| 欧美亚洲一区| 猫咪在线永久网站| 国产精品视频免费在线观看| 国产亚洲美州欧州综合国| sese综合| 国产精品亚洲天堂| 欧美一级片免费看| 国产精品第十页| 中文字字幕在线中文乱码电影| 欧美激情影音先锋| av影院午夜一区| 在线中文字幕播放| 人禽交欧美网站免费| 色999日韩国产欧美一区二区| 亚洲日产av中文字幕| 999精品视频在线| 久久精品久久久久久| 国产精品资源在线| 爱情岛亚洲播放路线| 欧美一区三区二区在线观看| 欧美在线视频不卡| 樱桃成人精品视频在线播放| 色视频在线看| 亚洲综合在线中文字幕| 亚洲国产精品一区二区久久恐怖片 | 亚洲成人天堂| 国产精品一区二区三区久久久 | 日本韩国欧美在线观看| 亚洲第一福利视频| 热久久一区二区| 国产直播在线| 亚洲小说欧美另类激情| 亚洲精品福利在线观看| 国产乱国产乱300精品| 123成人网| 欧美视频在线播放一区| 欧美成人午夜激情视频| 国产精品污www在线观看| 美女视频免费精品| 黄页网站在线观看| 亚洲一区亚洲二区| 欧美一区二区成人6969| 久久福利视频一区二区| 日韩一级二级 | 欧美亚洲第一区| 亚洲v中文字幕| 欧美视频久久| 成全电影大全在线观看| www.在线观看av| 高清亚洲成在人网站天堂| 亚洲精品国产视频| 国产精品va| hd国产人妖ts另类视频| 日本手机在线视频| 777国产偷窥盗摄精品视频| 欧美午夜精品久久久久久久| 亚洲人成免费| 日韩美女在线看免费观看| 爱情岛论坛成人| 亚洲一区二区三区在线视频| 精品国产成人系列| 久久亚洲综合色一区二区三区| 国产一区日韩| av大大超碰在线| 欧美黑人又粗又大又爽免费| 国产欧美精品日韩精品| 日韩欧美一区在线| 91视频在线观看免费| 97精品国产福利一区二区三区| 日本不卡不卡| 免费一级特黄特色毛片久久看| 午夜精品www| 欧美日韩国产中文| 91免费视频网| 欧美日韩精品| 久久久加勒比| 韩国免费在线视频| 俄罗斯av网站| 国产精品免费在线播放| 中文字幕欧美日韩va免费视频| 亚洲一区二区欧美日韩| 免费在线观看成人| 群体交乱之放荡娇妻一区二区| 麻豆传媒在线免费看| 冲田杏梨av在线| 国产一区二区不卡视频| 久久成人在线视频| 欧美一三区三区四区免费在线看 | 色欧美片视频在线观看 | 日韩免费电影一区二区| 性色av一区二区咪爱| 日韩片之四级片| 亚洲美女免费在线|