前言
说起数据埋点,我们首先得了解一下什么是服务监控。服务监控主要是监控谁,以及监控什么。这是两个重要的问题。
**那么监控谁?**通常是监控用户。不是为了窥探用户隐私,而是为了了解我们的网页、App、或者小程序在用户端的表现。我们需要知道用户的操作是否遇到问题,页面是否报错,用户的体验如何等。如果没有监控手段,我们只能在用户流失后猜测原因,却没有实际的数据作为依据。
服务监控
错误监控
在本地开发和测试时,代码运行一切正常,但到了客户端,问题可能就出来了。用户不会主动告诉我们哪里出了问题,而是直接离开。所以我们需要实时捕获客户端的错误信息。具体来说,就是记录用户的操作步骤、发生的错误、错误出现的页面、涉及的组件,甚至是代码的哪一行报了错。
性能监控
监控用户端的一些关键性能指标,比如首屏加载时间(FP)、首次内容绘制时间(FCP)、累积布局偏移(CLS)等。此外,还要观察是否有白屏现象或页面卡顿。这些信息对提升用户体验非常重要。
行为监控
这一部分更贴近业务需求。举个例子,在一个电商平台,有用户浏览了商品但没有下单,或者下单后又取消了。这时候我们需要分析用户的行为,找出问题所在。行为监控就是记录用户在页面上的一系列操作,如鼠标移动轨迹、滚动条位置、点击了哪些按钮、有没有加入购物车等。这些行为数据是后续分析用户行为和优化体验的基础。
通过服务监控,我们可以在技术层面上实现以下几个目标:
- 客户端信息收集:无论是网页、App还是小程序,通过运行一段代码来收集信息。
- 信息上传到监控中心:将收集到的信息上报到服务器端的监控中心。
- 监控中心分析和报警:监控中心汇总数据,如果发现大量错误,可以触发报警(如短信、电话、邮件),通知相关人员及时处理。
很多中小微企业没有足够的资源自行搭建完整的监控系统,所以会选择市面上的成熟产品和服务,比如阿里云的ARMS、神策、Sentry等。
数据埋点
有了监控系统,接下来就是数据埋点。数据埋点是实现信息收集和上传的技术环节。可以简单理解为监控系统中负责采集信息的部分。主要有两种实现方式:非侵入式埋点和侵入式埋点。
非侵入式埋点
这种方式对现有的业务代码几乎没有影响。我们只需在项目的入口文件中引入一段代码或 SDK,就能自动收集所需信息。比如市场上的监控服务会提供相应的 SDK,通过在入口处简单配置和调用,就可以开始自动采集数据。
适用范围:非侵入式埋点一般用来收集与业务无关的信息,例如错误监控和性能监控。这些信息对所有项目都是通用的,不会因为具体业务的不同而有所变化。
侵入式埋点
这种方式通常用于业务相关的行为监控。例如,监控用户在页面停留的时间、鼠标移动的轨迹、点击了哪些按钮等。这些信息与业务逻辑强相关,因此埋点的代码需要写入具体的业务组件或事件中。
适用范围:侵入式埋点主要用于收集用户行为数据。虽然这会对业务代码有一定的侵入性,但对于理解用户行为、改进产品设计是必要的。即使使用市场上的监控服务,它们也会提供相应的 API 或函数,我们只需调用这些函数即可完成埋点任务,简化了我们的埋点逻辑。