谈谈埋点和监控

2,246 阅读4分钟

初衷

最近发现,大多数前端,对于埋点和监控,处于一个比较初级的状态,而且相关的文章,也比较少。

最近在社区,发现了一些关于埋点的文章,但是总感觉把大家带偏了的感觉。

1、什么是一个埋点系统

埋点系统 = 埋点SDK + 埋点可视化平台 + 埋点接入方式

埋点SDK,解决的问题,就是埋点的一些通用的功能的实现,比如统计用户的UV、PV等等。它在内部主要通过向埋点服务后台发送相关的数据。它对外暴露一套统一个api,方便我们接入。

埋点可视化平台,解决的问题,就是当我这些埋点数据被上报之后,我能看到相关的数据。比如今天的UV、PV是多少,相比昨天的环比增长是多少等等。

埋点接入方式,这是埋点系统对外开放的能力,一般会需要申请一个appid,这个appid是唯一的,然后每次上报埋点的时候,就知道是哪个项目的数据了。

更详细一点的:

上面的说法比较笼统,比如埋点SDK,定义的更详细一点,本质上它就是一个js文件,这个js文件是由开发商提供的,当然我们也可以做自己的埋点SDK。

之所以称之为SDK,还有一层原因,就是SDK基本上是不变的,就和我们开发Vue项目一样,我们需要引入vue.js文件。我们不需要知道vue.js文件怎么实现的,我们只需要知道它提供的api是什么就行。

SDK内部所做的事情,就是上报数据,所谓的上报数据,无非就是发送一个http请求接口,发送到后台服务器。然后存入数据库中。

埋点可视化平台,就是从数据库中,把这些数据读取出来,展示出来而已。更深层次的,无非就是做数据分析,转化率分析之类。

2、埋点和监控是两回事

好多同学把埋点和监控混为一谈,其实在大厂内部,他们完全是不一样的。

从功能上说,监控主要是进行JS错误监控、接口异常监控、页面性能监控、资源加载异常、以及一些自定义的异常。

而埋点主要做的事情是数据上报,数据统计,数据分析。

从使用的角度来说,监控能准确的定位到错误,不需要我们在代码中添加额外的东西,只需要引入监控的SDK,就能实现错误的监控。

而埋点更多的是业务行为,我们在业务层面,得自己决定,自己想知道什么数据,想要怎么埋点,然后再做什么样的分析,所以我们接入埋点SDK之后,还需要调用埋点的api进行数据上报。

所以一定要明确,埋点和监控是两回事。

3、埋点和监控的实现是有差异的

这里所说的实现,是指这个相关的SDK的实现原理。

埋点的实现原理是什么?

埋点的本质是数据上报,那一定离不开这么一些纬度的数据:地理位置、页面路径、浏览器信息、userId、时间戳等等。类似这样的信息,在用户上报的时候,应该都是自动携带的。

一些上报的数据,可能会和业务相关,提供的埋点api中,加一条类似业务标识的ID,让相关数据关联起来。

监控的实现原理是什么?

其实无非在SDK内部,实现几种异常监控。

JS错误,可以使用window.onerror的方式监控。

接口异常,现在的请求一般是fetch或者是ajax请求,我们只需要把他们包装一层,在相应的响应事件中,获取我们的信息,如果返回的不是200的请求,直接上报错误。

页面性能,主要通过浏览器提供的一个对象来实现,Performance相关的api,它记录了浏览器加载、解析资源的时间占用情况。

资源加载错误,最简单的方式,可以通过onerror事件来实现。script可以用,img标签都可以用。

这些表述,比较笼统,比如js错误里面,关于promise、关于vue的错误,在错误捕获上都需要做补充。

4、解决方案——阿里岳鹰

当然最实在的东西,就是让大家尝试一下监控和埋点,推荐大家使用阿里开源产品——岳鹰

使用起来超级简单。

地址:yueying-docs.effirst.com/yueying-int…