这是我参与「第四届青训营 」笔记创作活动的的第1天,今天和队友一起预研了监控系统的背景,主要学习了两点内容
- 为什么需要前端监控
- 常用的前端埋点方案
一.为什么需要前端监控
客户端常常会遇到如下一些问题:
- 白屏
- 无响应
- 卡顿
- 服务异常
- bug无法复现
- 等等
面对这些运行在用户端的问题,前端常常表示很无奈,解决这些问题之前,我们需要先知道客户端发生了什么,于是我们可以想到:
- 收集错误,解决报错、兼容性等问题
- 收集性能,解决慢查询、慢加载等问题
- 收集接口,发现接口错误、打通服务端监控
- 收集多方面辅助信息,综合多方面分析
为了实现收集功能,我们需要提供一个前端监控平台,它能够收集数据、处理数据、存储数据、查询数据。
而收集数据之后,我们可以从中提取用户行为以及跟踪产品在用户端的使用情况,并以监控数据为基础,指明产品优化的方向。
二.埋点是什么,常用的埋点方案
埋点,它的学名是事件追踪(Event Tracking),主要是针对特定用户行为或业务过程进行捕获、处理和发送的相关技术及实施过程。埋点是数据领域的一个专业术语,也是互联网领域的一个俗称。
埋点是产品数据分析的基础,一般用于推荐系统的反馈、用户行为的监控和分析、新功能或者运营活动效果的统计分析等。
埋点包含两个重要概念:事件(event),属性(param)
- 事件(event):应用中发生了什么,例如用户操作、系统事件或系统错误。比如:enter_page(进入页面)、leave_page(离开页面)。
- 属性(param):为了描述用户群细分而定义的属性,例如语言偏好或地理位置。比如:enter_from(从哪个页面来),class_id(课程id)等。
- 属性值(value):属性的维度,即行为触发时的具体维度。例如:enter_from:home(主页)、system(系统)等。
常用的埋点方案
-
代码埋点,以嵌入代码的形式进行埋点比如需要监控用户的点击事件,会选择在用户点击时,插入一段代码,保存这个监听行为或者直接将监听行为以某一种数据格式直接传递给服务端
- 优点:可以在任意时刻、精确地发送或者保存所需要的数据信息。
- 缺点:工作量较大,需要研发团队全程参与。
-
可视化埋点,通过可视化交互的手段。代替代码埋点
- 将业务代码和埋点代码分离,提供一个可视化交互的页面,输入为业务代码,通过这个可视化系统,可以在业务代码中自定义的增加埋点事件等等,最后输出的代码耦合了业务代码和埋点代码
- 其实就是用系统代替了手工埋点
- 优点:不需要研发团队全程参与全部维护
- 缺点:比较僵硬,只能在固定的地方埋点
-
无痕埋点,前端的任意一个事件都被绑定一个标识,所有的事件都别记录下来, 通过定期上传记录文件,配合文件解析.解析出来我们想要的数据,并生成可视化报告供专业人员分析
- 优点:采集全量数据.不会出现漏埋和误埋等现象
- 缺点:给数据传输和服务器增加压力,也无法灵活定制数据结构