如何寫一個(gè)前端監(jiān)控和頁面性能監(jiān)控

來源: 發(fā)布時(shí)間:2023-09-06

搭建前端監(jiān)控系統(tǒng)(七)之用戶細(xì)查篇前端程序員都知道搭建監(jiān)控系統(tǒng),主要涉及幾大指標(biāo),流量數(shù)據(jù)、錯(cuò)誤數(shù)據(jù)、接口數(shù)據(jù)、性能數(shù)據(jù)等;這些數(shù)據(jù)統(tǒng)計(jì)出來以后,除了他們本身的作用外,怎么利用這幾大類型數(shù)據(jù)來幫我們排查問題呢,那就涉及到「用戶細(xì)查」的部分了?!赣脩艏?xì)查」顧名思義就是把用戶所有的行為記錄統(tǒng)計(jì)出來,幫助前端開發(fā)者來定位,或者復(fù)現(xiàn)用戶所產(chǎn)生的問題。如果一套前端監(jiān)控系統(tǒng)沒有用戶細(xì)查的能力,光能看問題,卻不能解決問題,那也就是失去了監(jiān)控系統(tǒng)的靈魂了。而作為監(jiān)控系統(tǒng)之一的webfunny前端監(jiān)控,因?yàn)殚_發(fā)者也就是我本人就是從事前端多年,深深知道監(jiān)控的痛點(diǎn),所以在設(shè)計(jì)「用戶細(xì)查」的時(shí)候做了很多維度的細(xì)分功能。webfunny支持私有化部署,容器化部署,可支持千萬級(jí)PV的日活量!如何寫一個(gè)前端監(jiān)控和頁面性能監(jiān)控

webfunny前端監(jiān)控項(xiàng)目可實(shí)現(xiàn):七、分析用戶的場(chǎng)外信息當(dāng)用戶所有的行為都被前端開發(fā)者掌握之后,前端能夠復(fù)現(xiàn)出用戶的行為,甚至能夠復(fù)現(xiàn)出用戶的問題,也許還需要一些場(chǎng)外信息才能準(zhǔn)確定位問題,比如,用戶的機(jī)型,地理位置,系統(tǒng)版本,當(dāng)時(shí)的網(wǎng)絡(luò)環(huán)境(這個(gè)不準(zhǔn)確,我做webfunny前端項(xiàng)目場(chǎng)景測(cè)試時(shí),是依據(jù)用戶當(dāng)時(shí)初次加載頁面的時(shí)間來判斷,只能作為參考依據(jù))前端線上問題產(chǎn)生的原因五花八門,只有把日志做全了,才能夠準(zhǔn)確的定位和解決前端問題、作好前端項(xiàng)目的監(jiān)控。這是webfunny前端監(jiān)控項(xiàng)目開發(fā)者排查線上問題的經(jīng)驗(yàn)和實(shí)戰(zhàn),分享給所有的前端工程師們參考,當(dāng)然理論有了,作為前端開發(fā)技術(shù)同學(xué)還是實(shí)操效果更好,感興趣的前端工程師們可以直接到webfunny前端監(jiān)控平臺(tái)來體驗(yàn)demo更加直觀。國(guó)內(nèi)好用的前端監(jiān)控和前端錯(cuò)誤監(jiān)控產(chǎn)品webfunny埋點(diǎn)系統(tǒng)可快速全鏈路數(shù)據(jù)接入,打破數(shù)據(jù)孤島,多角度洞察業(yè)務(wù),實(shí)現(xiàn)數(shù)據(jù)智能決策。

這是搭建前端監(jiān)控系統(tǒng)的第二章,主要是介紹如何統(tǒng)計(jì)js報(bào)錯(cuò),跟著webfunny前端監(jiān)控項(xiàng)目的開發(fā)者一步步操作,你也能搭建出一個(gè)屬于自己的前端監(jiān)控系統(tǒng)。前端程序員可以移步線上:webfunny前端監(jiān)控系統(tǒng),對(duì)于前端應(yīng)用來說,Js錯(cuò)誤的發(fā)生直接影響前端應(yīng)用的質(zhì)量。對(duì)前端異常的監(jiān)控是整個(gè)前端監(jiān)控系統(tǒng)中的一個(gè)重要環(huán)節(jié)。前端異常包含很多種情況:編譯時(shí)異常(開發(fā)階段就能排除)運(yùn)行時(shí)異常;3.加載靜態(tài)資源異常(路徑寫錯(cuò)、資源服務(wù)器異常、CDN異常、跨域)4.接口請(qǐng)求異常等。這一篇我們只介紹Js運(yùn)行時(shí)異常。

搭建前端監(jiān)控系統(tǒng)(七)之用戶細(xì)查篇:用戶細(xì)查具體要分析哪些數(shù)據(jù),更容易幫助我們定位前端問題呢說完用戶基本信息和頁面平均加載時(shí)間,下面就要來說接口耗時(shí)正態(tài)分布。接口耗時(shí)同樣能夠反饋出用戶當(dāng)時(shí)的網(wǎng)絡(luò)狀態(tài),同時(shí)他也能反饋出服務(wù)端接口的狀態(tài)。比如,頁面平均耗時(shí)表現(xiàn)良好,接口耗時(shí)表現(xiàn)差,則能反映出,當(dāng)時(shí)的后端服務(wù)狀態(tài)不是很好。還有完整的用戶行為記錄,以上是用戶行為中的基本信息,接下來要說的是用戶的完整行為鏈路,通過將頁面訪問、接口請(qǐng)求、代碼報(bào)錯(cuò)、自定義行為等,按照時(shí)間先后順序串聯(lián)起來,可以達(dá)到復(fù)現(xiàn)用戶錯(cuò)誤的目的。其中,接口請(qǐng)求記錄,除了會(huì)記錄接口耗時(shí),還需要記錄接口的返回值,這樣能夠更加明確的定位數(shù)據(jù)問題。以上說到的關(guān)于「用戶細(xì)查」的詳細(xì)功能和信息展示,前端程序員可以可以通過webfunny前端監(jiān)控系統(tǒng)進(jìn)行demo實(shí)操查看。在搭建前端系統(tǒng)利用各種手段來豐富「用戶細(xì)查」,將用戶的行為記錄下來,復(fù)現(xiàn)用戶當(dāng)時(shí)的問題便不再是那么困難的事情。這對(duì)開發(fā)者來說,無疑是提高了解決問題的效率。webfunny前端監(jiān)控致力于解決前端監(jiān)控的問題,提高前端的性能。前端線上的用戶操作行為十分復(fù)雜,部分問題可能隱藏在用戶多次操作之后。

三、性能指標(biāo)FP(FirstPaint):繪制時(shí)間,包括了任何用戶自定義的背景繪制,它是首先將像素繪制到屏幕的時(shí)刻。FCP(FirstContentPaint):內(nèi)容繪制。瀏覽器將個(gè)DOM渲染到屏幕的時(shí)間,可能是文本、圖像、SVG等。這其實(shí)就是白屏?xí)r間FMP(FirstMeaningfulPaint):有意義繪制。頁面有意義的內(nèi)容渲染的時(shí)間LCP(LargestContentfulPaint)。比較大內(nèi)容渲染。在viewport中比較大的頁面元素加載的時(shí)間。DCL(DomContentLoaded):DOM加載完成。當(dāng)HTML文檔被完全加載和解析完成之后,DOMContentLoaded事件被觸發(fā)。無需等待樣式表,圖像和子框架的完成加載。L(onload):當(dāng)依賴的資源全部加載完畢之后才會(huì)觸發(fā)。TTI(TimetoInteractive):可交互時(shí)間。用于標(biāo)記應(yīng)用已進(jìn)行視覺渲染并能可靠響應(yīng)用戶輸入的時(shí)間點(diǎn)。FID(FirstInputDelay):輸入延遲。用戶和頁面交互(單擊鏈接、點(diǎn)擊按鈕等)到頁面響應(yīng)交互的時(shí)間。webfunny前端監(jiān)控系統(tǒng)是純私有化部署。如何寫一個(gè)前端監(jiān)控和頁面性能監(jiān)控

webfunny前端一體化埋點(diǎn)系統(tǒng),可按項(xiàng)目設(shè)定不同的模型看板,設(shè)定人員權(quán)限,滿足多種數(shù)據(jù)分析需求。如何寫一個(gè)前端監(jiān)控和頁面性能監(jiān)控

搭建前端監(jiān)控系統(tǒng)(三)靜態(tài)資源加載監(jiān)控篇前端監(jiān)控除了如何做JS錯(cuò)誤監(jiān)控,還有一種錯(cuò)誤是靜態(tài)資源加載報(bào)錯(cuò),很多時(shí)候資源加載報(bào)錯(cuò)對(duì)前端項(xiàng)目來說是致命的,因?yàn)殪o態(tài)資源加載出錯(cuò)了,有可能就會(huì)導(dǎo)致前端頁面無法渲染,用戶就只能對(duì)著一個(gè)空白屏幕發(fā)呆,不知所措。因?yàn)橥蝗挥刑?,我們的前端線上環(huán)境爆出了大量的白屏錯(cuò)誤,經(jīng)過很長(zhǎng)時(shí)間的排查,終于定位到問題原因:我們使用的CDN路徑不知道怎么的,把我們的https協(xié)議全部指向了http協(xié)議,在安全協(xié)議下無法訪問非安全協(xié)議的資源,導(dǎo)致了大量的白屏。所以我決定增加靜態(tài)資源監(jiān)控功能,以應(yīng)對(duì)未來的未知情況。如何寫一個(gè)前端監(jiān)控和頁面性能監(jiān)控