前言
在软件使用过程中,会产生了大量的用户数据和行为数据,而这些数据记录了用户的行为和习惯等信息,为了给用户提供更好的体验,会对这些用户数据进行分析和利用,用来提升用户的体验,而数据采集作是整个链路上重要的一环,起到了很大作用,而埋点作为数据采集的手段,同样发挥着重要作用。
一、埋点需求分析
1.埋点需求背景分析
首先我们要清楚埋点需求是什么,埋点主要是进行一些数据收集的行为,通过收集这些数据,数据使用者通过对数据进行分析,来实现各自的需求。产品可以用来分析用户使用习惯,验证产品方案效果,研发可以通过埋点监控应用质量,提升应用品质,AI工程师可以通过数据训练算法,实现搜索推荐等功能。为了达到各方的述求,对埋点数据会有着不同的要求。
2.埋点痛点分析
- 1)业务方痛点:
- 开发工期紧张,不能支持埋点添加和修改。
- 埋点必须跟版本走,不能立即生效。
- 2)开发痛点:
- 开发埋点工作量大,会占用业务开发时间。
- 修改业务代码,可能会影响埋点功能,不能及时发现。
3.埋点数据分析
1)数据时效性:
对于不同的使用方,对数据的时效性要求也不同,对于监控和一些在线系统,往往需要实时数据,而对于一些产品分析,失效要求会降低,比如T+1天就可以满足需求,所以埋点系统需要针对不同的使用方,设计不同的数据采集时效。2)数据准确性:
数据准确性主要体现为数据采集准确性,特别是对于一些特定流程的数据采集,针对不同需求,进行不同方式的采集,比如页面曝光,页面浏览量,如何做到数据精准,满足产品和研发以及项目管理方的述求。3)数据多元性:
数据多元性是指从多个维度进行数据采集,不同维度的数据可以展示不同的信息,同时不同维度的信息又有相互关联性,可以多方位了解信息和看待问题。
二、埋点事件
1.1事件定义
为了对用户行为进行统计和分析,我们使用一类被称为 "事件" 的消息来记录用户行为。
1.2事件组成
- 1.who:用户信息,身高、体重、性别、职业等等
- 2.when:时间信息,时间发生时间
- 3.where:环境信息 设备环境、网络环境、业务环境
- 4.what:事件信息 事件标识、事件参数,比如点击了哪个按钮,按钮标题。
1.3事件维度
- 1.访问级维度,浏览器访问还是移动设备访问。
- 2.页面级维度,访问的哪一个页面,首页还是个人信息页。
- 3.动作级维度, 点击、曝光还是滑动触发。
1.4事件类型
- 1.无埋点事件,指不需要额外开发,通过监听、通知进行的埋点。
- 2.埋点事件,指开发阶段,手动进行的埋点。
三、埋点采集方式
1.代码埋点
代码埋点,即在需要埋点的节点调用接口直接上传埋点数据,友盟、百度统计等第三方数据统计服务商大都采用这种方案,主要通过命令式代码调用,如下面这种方式:
[XMData eventId:@"123" param:@{@"pagename":@"首页"}];
-
优点:
- 准确性高,针对性强,可以进行特定场景埋点。
- 可以灵活获取业务数据参数。
-
缺点:
- 开发工作量大,每个埋点都需要开发实现。
- 代码入侵性大,和业务代码混杂在一起,容易出错。
- 后续维护比较麻烦,每次改动,都要以来开发修改。
- 修改不够灵活,需要依赖发版。
2.可视化埋点
可视化埋点,即通过可视化工具配置采集节点,在后台配置埋点数据,在客户端自动解析配置并上报埋点数据,从而实现所谓的“无痕埋点”, 代表方案是已经开源的Mixpanel;
-
优点:
- 埋点比较简单,不依赖开发。
- 灵活性大大提高,可以通过后台配置,添加删除埋点。
-
缺点:
- 前期开发成本大,SDK和后台开发成本都增加。
- 只能针对一些简单业务场景,不能获取复杂业务参数。
3.无埋点
无埋点,它并不是真正的不需要埋点,而是客户端利用hook拦截系统的响应事件,自动采集全部事件并上报埋点数据,在后端数据计算时过滤出有用数据,代表方案是国内的GrowingIO。
-
优点:
- 数据可回溯性,如果想看某个埋点,可以直接去后台参考,不需要依赖发版。
- 埋点覆盖面更全面,进行全面行为数据记录。
-
缺点:
- 数据量大,数据传输和数据存储要求高。
- 无用数据较多,浪费资源。
- 只能记录简单场景埋点。
四、埋点管理
1.埋点项目流程
- 1)业务产品提出埋点需求
- 包括业务数据、用户行为等数据
- 2)数据产品制定埋点方案
- 根据业务产品需求,制定合理的埋点方案
- 3)埋点方案评审
- 包括业务产品、数据产品、开发、测试,一起沟通埋点方案合理性。
- 4)开发埋点
- 开发根据业务埋点进行买点开发和自测。
- 5)测试埋点
- 测试根据业务埋点方案,进行测试验证。
- 6)埋点上线
- 埋点测试合格后,跟随业务一起上线。
- 7)埋点数据统计和可视化
- 对产生的业务埋点进行数据分析,后台可视化展示,供相关需求方使用。
2.埋点开发和测试
2.1埋点开发
- 1.代码开发
- 主要涉及代码埋点,必须要研发手工埋点。
- 2.后台配置
- 可以针对所有埋点,不只是可视化埋点,设置配置项,比如上报网络,上报时效,每日流量熔断等等。
2.2埋点测试
- 1.日志log查看
- 测试埋点的时候,由于某些埋点要延时上报,不能实时查看,可以通过埋点log实时查看,还有是否触发。
- 2.后台数据查看
- 通过后台数据,可以查看埋点真实上报情况,确认埋点正确性。
3.埋点质量监控
有时因为开发同学错误修改一段代码,没考虑到会影响埋点,导致线上埋点事件丢失,很长时间没有发现,后来被产品发现,但是修复之前的埋点数据就没有,这种情况在实际开发过程中常常发生,如何避免这种事情发生呢?可以通过埋点质量监控来实现。可以检测必传参数是否确实,是否在合理范围等,在后台配置异常情况阈值,如果超出正常范围,发出报警提示,可以及早发现问题。
4.埋点数据分析和可视化
4.1数据分析
根据埋点数据,分析用户行为,比如分析某个业务的转换率,分析页面用户喜欢点击的位置,广告点击率等数据,用于后续业务改进。
4.2数据可视化
以电商数据为例,通过埋点记录的页面PV,UV等数据都可以,可视化的方式展示在页面上,如下图所示。
参考资料:
Mixpanel Help Center
应用埋点方案
有赞埋点实践
GrowingIO平台
数据采集与埋点
美团点评前端无痕埋点实践
知乎客户端埋点流程、模型和平台技术