js前端埋點(diǎn)監(jiān)控解析
一、為什么需要埋點(diǎn)&監(jiān)控
在開(kāi)始正文之前,我們先想想為什么需要埋點(diǎn)&監(jiān)控?
當(dāng)我們?cè)诜治鰪?fù)盤一個(gè)產(chǎn)品是否成功的時(shí)候,不同的角色考慮的方向是不同的。
站在產(chǎn)品的視角,經(jīng)常會(huì)問(wèn)如下幾個(gè)問(wèn)題:
- 1.產(chǎn)品有沒(méi)有用戶使用
- 2.用戶用得怎么樣
- 3.系統(tǒng)會(huì)不會(huì)經(jīng)常出現(xiàn)異常
- 4.如何更好地滿足用戶需求服務(wù)用戶
當(dāng)站在技術(shù)視角時(shí),經(jīng)常會(huì)問(wèn)如下幾個(gè)問(wèn)題:
- 1.系統(tǒng)出現(xiàn)異常的頻率如何
- 2.異常出現(xiàn)后如何快速進(jìn)行定位追蹤
- 3.如何分析解決問(wèn)題
而當(dāng)站在老板的視角時(shí),問(wèn)題可能又會(huì)變?yōu)椋?/p>
- 1.我的存量用戶多少,未來(lái)還有多少潛力
- 2.多少用戶在系統(tǒng)內(nèi)進(jìn)行了消費(fèi)
當(dāng)在回答了上述問(wèn)題之后,埋點(diǎn)&監(jiān)控便躍然紙上。因?yàn)橐卮鹨陨蠁?wèn)題,只有通過(guò)對(duì)系統(tǒng)進(jìn)行數(shù)據(jù)分析的方式才能弄清楚。
其實(shí)無(wú)論是埋點(diǎn)亦或是監(jiān)控,二者并不是獨(dú)立存在,而是相互依存的關(guān)系。

二、埋點(diǎn)&監(jiān)控能做什么
從單個(gè)頁(yè)面的常規(guī)數(shù)據(jù)角度出發(fā)我們可以通過(guò)埋點(diǎn)獲取:訪問(wèn)次數(shù)(UV/PV)、地域數(shù)據(jù)(IP)、在線時(shí)長(zhǎng)、區(qū)域點(diǎn)擊次數(shù)等數(shù)據(jù)。
當(dāng)我們將這些單點(diǎn)數(shù)據(jù)按照特定的緯度進(jìn)行數(shù)據(jù)聚合,就可以獲得全流程視角下的數(shù)據(jù)如:用戶留存率/流轉(zhuǎn)率、用戶轉(zhuǎn)化率、用戶訪問(wèn)深度等數(shù)據(jù)。
而在埋點(diǎn)數(shù)據(jù)進(jìn)行上報(bào)的同時(shí),我們也可以同步收集頁(yè)面基礎(chǔ)數(shù)據(jù)/接口相關(guān)數(shù)據(jù)如:頁(yè)面加載/渲染時(shí)長(zhǎng)、頁(yè)面異常、請(qǐng)求接口等數(shù)據(jù)。
同時(shí)對(duì)于前端監(jiān)控來(lái)說(shuō),大致可以分成三個(gè)方向:數(shù)據(jù)監(jiān)控、性能監(jiān)控、異常監(jiān)控。
數(shù)據(jù)監(jiān)控
數(shù)據(jù)監(jiān)控即通過(guò)數(shù)據(jù)分析用戶行為,常見(jiàn)的監(jiān)控?cái)?shù)據(jù)包括:PV/UV、頁(yè)面停留時(shí)長(zhǎng)、通過(guò)什么入口進(jìn)入、在頁(yè)面觸發(fā)了什么行為等。統(tǒng)計(jì)這些數(shù)據(jù)就是為了清楚用戶來(lái)源,拓寬產(chǎn)品的推廣渠道;了解用戶在頁(yè)面停留的時(shí)間情況,針對(duì)停留較短的頁(yè)面進(jìn)行分析改進(jìn)。也就是我們常說(shuō)的:who(uuid)、when(time)、from where(referrer)、where(x,y)、what(自定義拓展數(shù)據(jù))串成的用戶行為路徑。
性能監(jiān)控
性能監(jiān)控主要是針對(duì)前端進(jìn)行監(jiān)控,比如不同用戶在不同地區(qū)使用不同機(jī)型下的首屏加載時(shí)間、頁(yè)面的白屏?xí)r間、靜態(tài)資源下載時(shí)間等數(shù)據(jù)。通過(guò)針對(duì)這些性能數(shù)據(jù)進(jìn)行監(jiān)控,可以大概反映前端性能的好壞,根據(jù)性能監(jiān)測(cè)的結(jié)果可以進(jìn)一步的去優(yōu)化前端性能。
異常監(jiān)控
前端代碼在執(zhí)行過(guò)程中也可能會(huì)發(fā)生異常,因此需要引入異常監(jiān)控例如 sentry 等工具及時(shí)的上報(bào)異常情況,可以避免線上故障的發(fā)上。常見(jiàn)的異常包括:Javascript 的異常監(jiān)控、css 的異常監(jiān)控等。
三、目前埋點(diǎn)方案&后續(xù)演進(jìn)方向
現(xiàn)有方案
目前公司已經(jīng)存在一套埋點(diǎn) SDK 在運(yùn)行,使用的是代碼埋點(diǎn)方案,其埋點(diǎn)上報(bào)數(shù)據(jù)可大致分為三類:頁(yè)面進(jìn)入、事件觸發(fā)、頁(yè)面離開(kāi)。
(1) 頁(yè)面進(jìn)入(pageIn)
進(jìn)入頁(yè)面時(shí),同步推送頁(yè)面基礎(chǔ)信息如:當(dāng)前頁(yè)面的來(lái)源頁(yè)面、操作系統(tǒng)、瀏覽器、頁(yè)面 url,發(fā)生時(shí)間等

(2) 事件觸發(fā)(Event)
觸發(fā)事件時(shí),同步推送事件類型(click、hover等)、鼠標(biāo)位置、附加業(yè)務(wù)參數(shù)等

(3) 頁(yè)面離開(kāi)(pageOut)
離開(kāi)頁(yè)面時(shí),同步推送發(fā)生時(shí)間、頁(yè)面 url 等

其埋點(diǎn)大致邏輯如下圖,通過(guò)生成獨(dú)有的四段值+pvid即可定位某個(gè)項(xiàng)目的某個(gè)頁(yè)面在某個(gè)區(qū)塊點(diǎn)擊了某個(gè)按鈕,同時(shí)生成唯一的 pvid 記錄頁(yè)面的 pv 數(shù)據(jù)。具體說(shuō)明可翻閱往期關(guān)于政采云埋點(diǎn)分析系統(tǒng)的文章。

后續(xù)演進(jìn)
在現(xiàn)有 SDK 的基礎(chǔ)上我們可以發(fā)現(xiàn),目前的埋點(diǎn) SDK 只上報(bào)了一些用戶的基礎(chǔ)信息數(shù)據(jù),在性能數(shù)據(jù)和異常數(shù)據(jù)的上報(bào)上還存在可拓展的空間。
(1) 性能數(shù)據(jù)上報(bào)
在獲取用戶基礎(chǔ)數(shù)據(jù)的同時(shí),后續(xù)可以通過(guò)window.performanceAPI獲取前端性能數(shù)據(jù),在第一次進(jìn)入頁(yè)面時(shí)隨 pageIn 一起將頁(yè)面初始性能數(shù)據(jù)進(jìn)行上報(bào)。

可進(jìn)行上報(bào)的字段包含如下:

(2) 接口數(shù)據(jù)上報(bào)
除了上報(bào)性能數(shù)據(jù)外,我們也可將頁(yè)面內(nèi)所發(fā)的所有請(qǐng)求通過(guò)重寫XMLHttpRequest進(jìn)行劫持打標(biāo)上報(bào),即在當(dāng)前頁(yè)面下的所有請(qǐng)求 header 上默認(rèn)加上當(dāng)前頁(yè)面 ID,將各個(gè)請(qǐng)求與當(dāng)前頁(yè)面的 pageId 進(jìn)行綁定。
通過(guò)該類數(shù)據(jù)可以進(jìn)行統(tǒng)計(jì)分析出某一頁(yè)面的請(qǐng)求量、請(qǐng)求異常等情況判斷出頁(yè)面級(jí)別的請(qǐng)求健康度;后期甚至可與 Yapi 接口系統(tǒng)打通,若出現(xiàn)異常情況可直接將實(shí)際請(qǐng)求參數(shù)與文檔上的請(qǐng)求參數(shù)進(jìn)行對(duì)比,排除異常是由于請(qǐng)求參數(shù)錯(cuò)誤造成的。

四、前端數(shù)據(jù)可視化
對(duì)于已經(jīng)采集上來(lái)的數(shù)據(jù)經(jīng)由數(shù)倉(cāng)清洗之后的可視化玩法就千變?nèi)f化了??梢葬槍?duì)不同元數(shù)據(jù)按不同指標(biāo)緯度聚合,產(chǎn)生不同的數(shù)據(jù)分析側(cè)重點(diǎn)。再通過(guò)各類可視化工具進(jìn)行展示,例如:混儀系統(tǒng)、小采BI等。
混儀系統(tǒng)
混儀系統(tǒng)(內(nèi)部系統(tǒng))主要針對(duì)埋點(diǎn)進(jìn)行元數(shù)據(jù)后臺(tái)管理,推進(jìn)埋點(diǎn)平臺(tái)的規(guī)范化建設(shè)。同時(shí)在此基礎(chǔ)上,優(yōu)化數(shù)據(jù)分析功能,為公司內(nèi)部用戶提供埋點(diǎn)數(shù)據(jù)自助分析平臺(tái),提升數(shù)據(jù)利用率和日常工作效率。
小采BI
小采BI是可視化團(tuán)隊(duì)內(nèi)部搭建系統(tǒng),分為報(bào)表搭建、大屏搭建和看板搭建等模塊。通過(guò)內(nèi)部這些搭建工具直接對(duì)元數(shù)據(jù)進(jìn)行展示,組合成面向不同受眾、不同角色的自定義數(shù)據(jù)報(bào)表或監(jiān)控大屏等。
結(jié)語(yǔ)
本文只是針對(duì)埋點(diǎn)系統(tǒng)和監(jiān)控系統(tǒng)的融合的一點(diǎn)簡(jiǎn)單的介紹與探索,實(shí)際操作落地上肯定會(huì)有各種問(wèn)題。比如多端情況下的數(shù)據(jù)埋點(diǎn)&上報(bào),比如手動(dòng)埋點(diǎn)增加了工作量破壞了原有代碼的可讀性等一系列實(shí)操上的問(wèn)題,這些都需要逐步完善優(yōu)化,同時(shí)我們也希望各位讀者提出自己意見(jiàn)和建議,一起完善埋點(diǎn)&監(jiān)控的大生態(tài)。
以上就是js前端埋點(diǎn)監(jiān)控解析的詳細(xì)內(nèi)容,更多關(guān)于js前端埋點(diǎn)監(jiān)控的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Openlayer?add?mark及添加hover效果實(shí)例詳解
這篇文章主要為大家介紹了Openlayer?add?mark及添加hover效果實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
前端JavaScript算法找出只出現(xiàn)一次的數(shù)字
這篇文章主要為大家介紹了前端JavaScript算法找出只出現(xiàn)一次的數(shù)字的算法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
TypeScript?學(xué)習(xí)筆記之?typeScript類定義,類的繼承,類成員修飾符
這篇文章主要介紹了TypeScript?學(xué)習(xí)筆記之?typeScript類定義,類的繼承,類成員修飾符,typeScript?支持面向?qū)ο蟮乃刑匦?,比如類、接口?下文詳細(xì)內(nèi)容,需要的小伙伴可以參考一下2022-02-02
JavaScript實(shí)現(xiàn)余額數(shù)字滾動(dòng)效果
這篇文章主要介紹了JavaScript實(shí)現(xiàn)余額數(shù)字滾動(dòng)效果,將傳入的帶滾動(dòng)的n位數(shù)字拆分成每一個(gè)要滾動(dòng)的數(shù),然后動(dòng)態(tài)的創(chuàng)建裝著滾動(dòng)到每一位相應(yīng)數(shù)字的容器,然后放入傳入的目標(biāo)容器中,更多詳細(xì)內(nèi)容,一起進(jìn)入下面文章學(xué)習(xí)吧2021-12-12

