前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >浅谈前端埋点&监控

浅谈前端埋点&监控

作者头像
政采云前端团队
发布于 2022-12-01 03:10:52
发布于 2022-12-01 03:10:52
2.5K00
代码可运行
举报
文章被收录于专栏:采云轩采云轩
运行总次数:0
代码可运行

浅谈前端埋点&监控 https://www.zoo.team/article/monitor

一、为什么需要埋点&监控

在开始正文之前,我们先想想为什么需要埋点&监控?

当我们在分析复盘一个产品是否成功的时候,不同的角色考虑的方向是不同的。

站在产品的视角,经常会问如下几个问题:

1. 产品有没有用户使用

2. 用户用得怎么样

3. 系统会不会经常出现异常

4. 如何更好地满足用户需求服务用户

当站在技术视角时,经常会问如下几个问题:

1. 系统出现异常的频率如何

2. 异常出现后如何快速进行定位追踪

3. 如何分析解决问题

而当站在老板的视角时,问题可能又会变为:

1. 我的存量用户多少,未来还有多少潜力

2. 多少用户在系统内进行了消费

当在回答了上述问题之后,埋点&监控便跃然纸上。因为要回答以上问题,只有通过对系统进行数据分析的方式才能弄清楚。

其实无论是埋点亦或是监控,二者并不是独立存在,而是相互依存的关系。

二、埋点&监控能做什么

从单个页面的常规数据角度出发我们可以通过埋点获取:访问次数(UV/PV)、地域数据(IP)、在线时长、区域点击次数等数据。

当我们将这些单点数据按照特定的纬度进行数据聚合,就可以获得全流程视角下的数据如:用户留存率/流转率、用户转化率、用户访问深度等数据。

而在埋点数据进行上报的同时,我们也可以同步收集页面基础数据/接口相关数据如:页面加载/渲染时长、页面异常、请求接口等数据。

同时对于前端监控来说,大致可以分成三个方向:数据监控性能监控、异常监控。

数据监控

数据监控即通过数据分析用户行为,常见的监控数据包括:PV/UV、页面停留时长、通过什么入口进入、在页面触发了什么行为等。统计这些数据就是为了清楚用户来源,拓宽产品的推广渠道;了解用户在页面停留的时间情况,针对停留较短的页面进行分析改进。也就是我们常说的:who(uuid)、when(time)、from where(referrer)、where(x,y)、what (自定义拓展数据)串成的用户行为路径。

性能监控

性能监控主要是针对前端进行监控,比如不同用户在不同地区使用不同机型下的首屏加载时间、页面的白屏时间、静态资源下载时间等数据。通过针对这些性能数据进行监控,可以大概反映前端性能的好坏,根据性能监测的结果可以进一步的去优化前端性能。

异常监控

前端代码在执行过程中也可能会发生异常,因此需要引入异常监控例如 sentry 等工具及时的上报异常情况,可以避免线上故障的发上。常见的异常包括:Javascript 的异常监控、css 的异常监控等。

三、目前埋点方案&后续演进方向

现有方案

目前公司已经存在一套埋点 SDK 在运行,使用的是代码埋点方案,其埋点上报数据可大致分为三类:页面进入、事件触发、页面离开。

(1) 页面进入 (pageIn)

进入页面时,同步推送页面基础信息如:当前页面的来源页面、操作系统、浏览器、页面 url,发生时间等

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{ 
   title: '政采云', // document title 
   pre: '', // referrer 
   utm-url: 'a.b.c.d.e', // url 中获取的 utm 
   utm-cnt: 'a.b.0.0.e', // 这个页面的 utm a b 值 
   scr: '1400x900', // 分辨率 
   os: 'mac', // 操作系统 
   k: 'webkit', // 浏览器内核 
   b: 'chrome/70', // 浏览器及版本 
   lver: '1.0.0', // js 版本 
   createTime: '', // 当前时间的时间戳(用户本地时间)
   logType: 1 // 页面进入发送数据 
}

(2) 事件触发 (Event)

触发事件时,同步推送事件类型 (click、hover 等)、鼠标位置、附加业务参数等

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{ 
  evt: 'click', // 事件类型 
  utm-cnt: 'a.b.c.d.e', // utm 值 
  bdata: '{"test": "12345" }', // 业务数据 
  mx: xx, // 鼠标点击位置 x 
  my: xx, // 鼠标点击位置 y 
  lver: '1.0.0', // js 版本 
  logType: 2 // 数据类型 
}

(3) 页面离开 (pageOut)

离开页面时,同步推送发生时间、页面 url 等

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{ 
 title: '政采云', // document title 
 pre: '', // referrer 
 utm-url: 'a.b.c.d.e', // url 中获取的 utm 
 utm-cnt: 'a.b.0.0.e', // 这个页面的 utm a b 值 
 lver: '1.0.0', // js 版本 
  createTime: '', // 当前时间的时间戳(用户本地时间)
 logType: 3 // 页面离开发送数据 
}

其埋点大致逻辑如下图,通过生成独有的四段值 +pvid 即可定位某个项目的某个页面在某个区块点击了某个按钮,同时生成唯一的 pvid 记录页面的 pv 数据。具体说明可翻阅往期关于政采云埋点分析系统的文章:前端工程实践之数据埋点分析系统(一)。前端搞监控|如何实现用户行为的动态采集与分析 (https://juejin.cn/post/6844904161566261256)

后续演进

在现有 SDK 的基础上我们可以发现,目前的埋点 SDK 只上报了一些用户的基础信息数据,在性能数据和异常数据的上报上还存在可拓展的空间。

(1) 性能数据上报

在获取用户基础数据的同时,后续可以通过 window.performanceAPI 获取前端性能数据,在第一次进入页面时随 pageIn 一起将页面初始性能数据进行上报。

可进行上报的字段包含如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const getPerformanceData = () => {
  let performance = {};
  try {
    performance = window.performance.getEntries()[0];
  } catch (e) {}
  const {
    domainLookupEnd = 0,
    domainLookupStart = 0,
    connectStart = 0,
    connectEnd = 0,
    requestStart = 0,
    responseStart = 0,
    // etc...
  } = performance;
  const dns = ~~(domainLookupEnd - domainLookupStart);
  const tcp = ~~(connectEnd - connectStart);
  const ttfb = ~~(responseStart - requestStart);
  // etc...
  return {
    // TODO...
  };
};

(2) 接口数据上报

除了上报性能数据外,我们也可将页面内所发的所有请求通过重写 XMLHttpRequest 进行劫持打标上报,即在当前页面下的所有请求 header 上默认加上当前页面 ID,将各个请求与当前页面的 pageId 进行绑定。

通过该类数据可以进行统计分析出某一页面的请求量、请求异常等情况判断出页面级别的请求健康度;后期甚至可与 Yapi 接口系统打通,若出现异常情况可直接将实际请求参数与文档上的请求参数进行对比,排除异常是由于请求参数错误造成的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let req = XMLHttpRequest;
(function(open, send) {
  // TODO...
  XMLHttpRequest.prototype.open = function() {
    open.apply(this, arguments); 
  }
  // TODO...
  XMLHttpRequest.prototype.send = function () {
    this.setRequestHeader('XXXXX', 'XXX')
    send.apply(this, arguments); 
  }
})(req.prototype.open, XMLHttpRequest.prototype.send)

四、前端数据可视化

对于已经采集上来的数据经由数仓清洗之后的可视化玩法就千变万化了。可以针对不同元数据按不同指标纬度聚合,产生不同的数据分析侧重点。再通过各类可视化工具进行展示,例如:浑仪系统、小采BI等。

浑仪系统

浑仪系统(内部系统)主要针对埋点进行元数据后台管理,推进埋点平台的规范化建设。同时在此基础上,优化数据分析功能,为公司内部用户提供埋点数据自助分析平台,提升数据利用率和日常工作效率。

小采 BI

小采 BI 是可视化团队内部搭建系统,分为报表搭建、大屏搭建和看板搭建等模块。通过内部这些搭建工具直接对元数据进行展示,组合成面向不同受众、不同角色的自定义数据报表或监控大屏等。

五、结语

本文只是针对埋点系统和监控系统的融合的一点简单的介绍与探索,实际操作落地上肯定会有各种问题。比如多端情况下的数据埋点&上报,比如手动埋点增加了工作量破坏了原有代码的可读性等一系列实操上的问题,这些都需要逐步完善优化,同时我们也希望各位读者提出自己意见和建议,一起完善埋点&监控的大生态。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 政采云技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
腾讯前端团队是如何做web性能监控的?
也许你有听过一个问题,你这款 web 应用性能怎么样呀?你会回答什么呢?是否会优于海量 web 应用市场呢?本文就来整理下如何进行 web 性能监控?包括我们需要监控的指标、监控的分类、performance 分析以及如何监控。
zz_jesse
2020/06/24
7.8K0
腾讯前端团队是如何做web性能监控的?
超全对照!前端监控的性能指标与数据采集
导语 | 前端监控可以让你更了解自己的网站,更早地发现和解决存在的问题,再通过优化来提升网站的性能和体验。那么,如何衡量一个网站的好坏?有什么指标?性能数据如何采集?本文围绕这些问题和你一起探讨。 一、为什么要做前端性能监控 可能你也有过这样的经历: 有用户反馈你的网站很慢,然后你立马紧张地在浏览器上打开用户反馈的网站。经过检查,可能你的网站一切正常,也可能你的网站真的很慢,甚至打不开了。 有一天老板问你:“咱们的网站性能体验怎么样?”你该如何回答?“挺好的,很快,这个月没有发生过故障....”老板再
腾讯云开发者
2021/06/02
4.3K0
目前为止整理最全的前端监控体系搭建篇(长文预警)
PV(page view) 是页面浏览量,UV(Unique visitor)用户访问量。PV 只要访问一次页面就算一次,UV 同一天内多次访问只算一次。
前端达人
2022/04/18
12.9K1
目前为止整理最全的前端监控体系搭建篇(长文预警)
去大厂,你就应该了解前端监控和埋点!
踏足行业几年了,始终游离于中小型项目,由于项目用户较少,所以前端监控方面非常生疏,最近开始接收大流量项目,却对埋点,监控一无所知,深感惭愧,于是苦学几日,心得如下:
用户7413032
2020/06/11
3.9K0
去大厂,你就应该了解前端监控和埋点!
深入分析window.performance以及上报收集到数据(前端性能监控)
Web Performance提供了可以通过的函数(performance 属性提供)测试当前网页或者 web应用的性能,获取更为精确的原始数据,以毫秒为单位。一般放在window.onload事件中读取各种数据,有些值必须在页面完全加载之后才能得出。
can4hou6joeng4
2023/11/29
6050
从零开始搭建前端数据监控系统(二)-前端性能监控方案调研
1. 业界案例 目前前端性能监控系统大致为分两类:以GA为代表的代码监控和以webpagetest为代表的工具监控。 代码监控依托于js代码并部署到需监控的页面,手动计算时间差或者使用浏览器的的API进行数据统计。 影响代码监控数据的因素有以下几种: 浏览器渲染机制; 浏览器对API的实现程度,比如performance API; 工具监控不用将统计代码部署到页面中,一般依托于虚拟机。以webpageTest为例,输入需统计的url并且选择运行次url的浏览器版本,webpageTest后台虚拟机对url进
寒月十八
2018/01/30
2.6K0
从零开始搭建前端数据监控系统(二)-前端性能监控方案调研
一文搞懂得物前端监控
得物的服务端监控是比较全面和有效的,除了上报原始日志数据,还通过数据分析制定线上告警机制,调用链路分析,而针对前端项目这一块,还是不够全面的。对前端线上问题感应不及时,靠人肉发现,没有告警机制等问题,所以就有个前端监控这个项目。前端监控也确实很有必要,我们需要对线上的页面有个全面的把控,而至于怎么做监控,做数据上报,以及数据分析,如何针对监控数据分析出有用的核心链路的告警等也能有个全面的认识。本文主要是介绍得物针对监控做了哪些事情以及对前端底层监控手段做个总结。
得物技术
2023/12/13
8060
一文搞懂得物前端监控
从0到1搭建前端监控平台,面试必备的亮点项目
常常会苦恼,平常做的项目很普通,没啥亮点;面试中也经常会被问到:做过哪些亮点项目吗?
前端老道
2023/02/27
3.7K0
从0到1搭建前端监控平台,面试必备的亮点项目
前端埋点数据收集及上报方案
埋点,它的学名是事件追踪(Event Tracking),主要是针对特定用户行为或业务过程进行捕获、处理和发送的相关技术及实施过程。埋点是数据领域的一个专业术语,也是互联网领域的一个俗称。
落落落洛克
2021/10/12
7.1K0
如何收集常见的前端性能信息
总体来说,需要知道浏览器(新的)给我们提供了 Performance API,使用这个属性,我们可以得到一系列跟性能相关的数据
书童小二
2018/12/26
8020
通过自定义 Vue 指令实现前端曝光埋点
? 这是第 94 篇不掺水的原创,想要了解更多,请戳上方蓝色字体:政采云前端团队 关注我们吧~ 本文首发于政采云前端团队博客:通过自定义 Vue 指令实现前端曝光埋点 https://www.zoo
用户3806669
2021/07/06
1.7K0
通过自定义 Vue 指令实现前端曝光埋点
通过自定义 Vue 指令实现前端曝光埋点
互联网发展至今,数据的重要性已经不言而喻,尤其是在电商公司,数据的统计分析尤为重要,通过数据分析可以提升用户的购买体验,方便运营和产品调整销售策略等等。埋点就是网站分析的一种常用的数据采集方法。
政采云前端团队
2021/04/08
1.7K0
干货:如何十分钟实现一个简单的前端性能、fetch请求实时监控?
如何实时监控fetch请求,因为他想写一个谷歌浏览器的插件,实时监控原生fetch请求,众所周知,fetch源码是将原生ajax封装在内的,网上有一种办法是重写fetch,然后达到效果
Peter谭金杰
2020/05/09
1.4K0
干货:如何十分钟实现一个简单的前端性能、fetch请求实时监控?
埋点数据可视化的探索与实践
埋点是数据采集的专用术语,在数据驱动型业务中,如营销策略、产品迭代、业务分析、用户画像等,都依赖于数据提供决策支持,希望通过数据来捕捉特定的用户行为,如页面访问、按钮点击量、阅读时长等统计信息。因此,数据埋点可以简单理解为针对特定业务场景进行数据采集和上报的技术方案,在政采云,前端团队已经有自研 SDK 来解决这个问题。在数据埋点于政采云的落地实践过程中,我们发现另一个可供探讨的方向,即获取到数据后,我们要如何进行埋点数据的分析? 以下我们展开聊一聊埋点数据分析的用户诉求、团队的探索实践和存在的痛点。
政采云前端团队
2023/11/30
5070
埋点数据可视化的探索与实践
项目实战-埋点系统初探
最近杂七杂八的事情比较多,难得抽出时间来弥补一下之前的系列,欠大家的埋点系列现在开始走起来
Cookieboty
2020/10/23
2.3K0
项目实战-埋点系统初探
【性能】198-腾讯新闻前端团队:深入理解前端性能监控
https://segmentfault.com/a/1190000018785911
pingan8787
2019/07/23
1.7K0
【性能】198-腾讯新闻前端团队:深入理解前端性能监控
前端性能优化 —— 前端性能分析
作者:ouven https://my.oschina.net/zhangstephen/blog/1601380 前端性能优化是一个很宽泛的概念,本书前面的部分也多多少少提到一些前端优化方法,这也是我们一直在关注的一件重要事情。配合各种方式、手段、辅助系统,前端优化的最终目的都是提升用户体验,改善页面性能,我们常常竭尽全力进行前端页面优化,但却忽略了这样做的效果和意义。先不急于探究前端优化具体可以怎样去做,先看看什么是前端性能,应该怎样去了解和评价前端页面的性能。 通常前端性能可以认为是用户获取所需要页面
前端教程
2018/03/05
2.5K0
前端性能优化 —— 前端性能分析
Web 性能优化-首屏和白屏时间
白屏时间是指浏览器从响应用户输入网址地址,到浏览器开始显示内容的时间。 首屏时间是指浏览器从响应用户输入网络地址,到首屏内容渲染完成的时间。
李振
2021/11/26
3K0
Web 性能优化-首屏和白屏时间
基于 RUM 的前端优化理论与实践 - 性能篇(一)
作者:李振,腾讯云前端性能监控负责人 前言 对于前端来说,最重要的是体验,而在前端体验中,最为核心的就是性能。 相信大多数用户接入前端性能监控(RUM)都是为了通过 RUM 质量评价体系来验证前端性能和质量如何,而直接影响性能和质量的则是一系列的指标,因此了解页面性能指标显得格外重要! 前端性能监控 RUM 是腾讯云的大前端领域页面质量和性能监控平台,聚焦提升用户体验。了解详情 通俗点说,某用户想了解页面访问速度快,是否快,究竟有多快?怎么衡量?需要一个中立的裁判来裁决,而 RUM 的角色正是这个裁
腾讯云可观测平台
2021/09/10
9530
前端性能优化之自定义性能指标及上报方法详解
性能优化是所有前端人的追求,在这条路上,方法多种多样。这篇文章,说一下利用浏览器的一些API,可以怎样进行自定义性能指标及上报。
winty
2020/02/13
1.4K0
前端性能优化之自定义性能指标及上报方法详解
推荐阅读
相关推荐
腾讯前端团队是如何做web性能监控的?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验