终于有人将埋点讲明白了

开发 前端
随着互联网技术的发展,从单纯的展示型到运营型,再到现在的数字化运营阶段,数据变得越来越重要,不仅可以进行辅助策略,还可以实现自动化的个性化运营。

[[420737]]

随着互联网技术的发展,从单纯的展示型到运营型,再到现在的数字化运营阶段,数据变得越来越重要,不仅可以进行辅助策略,还可以实现自动化的个性化运营。而数据价值的起点就是埋点,只有合理地埋点,规范地上报,数据才会产生价值。本文我们就来了解埋点体系。

数据埋点概述

一般我们把数据分为生产端数据和消费端数据。生产端数据很容易获得,一般都是通过系统的数据库,比如在电商的商品后台中添加商品的操作就是生产端数据。生产端数据基本上都是监控类的。而产生更多的业绩价值的数据往往都是消费端数据,比如用户在电商App上进行点赞、评论、收藏、下单和支付等行为的数据就是消费端数据。消费端数据需要采集,埋点技术就是一种常见的采集这些数据的技术。

01什么是埋点

通常我们说的埋点,实际上是埋点技术。埋点技术是一种数据采集技术,特指针对用户行为或时间进行捕获、处理和上报的相关技术及其实施过程。

互联网发展到今天,埋点技术已经越来越成熟,有非常多的第三方SDK可以方便公司快速建立埋点体系,挖掘数据价值。然而第三方埋点技术经常会遇到数据泄露的问题,而且可能由于一些限制导致业务诉求不能完全满足,因此大型企业大概率会选择自建埋点系统。

02埋点的意义

我们经常会说数据价值,会思考如何让业务数据产生价值。数据产生价值的前提是数据源可信任,而埋点的意义就是解决数据源可靠性的问题。

如果说数据仓库是兵工厂,各种数据产品是枪炮,那么埋点就是钢和铁;如果说数据仓库是地基,各种数据产品是高楼大厦,那么埋点就是砖和石。如果埋点做不好,一切上层依赖都将会事倍功半。

03埋点的类型

埋点类型有三种:Web埋点、App埋点和接口埋点。本文主要介绍产品思维层面出发需要了解的大致原理。

1、Web埋点

Web埋点主要是通过先在页面中注入一段JavaScript代码,然后对收集的数据进行上报的技术。

互联网的发展从Web 1.0到Web 2.0,再到今天的移动互联网,埋点技术也从无到有,从简单到复杂,服务厂商也从群雄争霸到“剩”者为王。Web埋点技术也经历了网页信息、增加Cookie、增加事件三个阶段,使得Web埋点越来越成熟。这里我们主要从产品角度理解Web埋点。

在大数据运营之前,Web埋点主要关注的是各种指标和漏斗分析法。重要的指标有页面访问次数、页面用户数、页面停留时长和跳出率。漏斗分析法主要是指有递进关系的页面之间用户的流失率。Web埋点的意义更多的是优化页面,提高用户留存。在大数据运营之后,Web埋点更多地开始关注事件,同时上报用户信息,这样就可以对用户的兴趣点进行挖掘。

2、APP埋点

App埋点技术是通过在代码中加入特殊的代码或者引入一个SDK,对App中的信息进行收集的一种技术。

App代表了移动互联网时代的到来,从这一天开始,埋点技术就进入了大数据时代,并不是App带动了大数据时代,而是App的兴起正好和大数据技术的普及相伴随。

伴随着大数据的到来,App埋点已经不仅仅关注页面优化带来的用户留存提升,而更加关注数据的全面性。在这个时代,数据就是价值,数据的全面性带来的是用户价值的深度挖掘。同时Web时代的版本更新优化已经被更成熟的A/B测试系统取代。我们再也不用更新一个版本之后再获取数据,而是可以在一定范围内灰度上线,测试效果之后再上线。

所以App埋点是埋点价值的升华,也是大数据时代挖掘数据价值的起点。

3、接口埋点

我们常说的埋点主要是指Web埋点和App埋点,但实际上还有一种埋点——接口埋点。这种埋点不同于其他埋点的地方在于,它不是通过数据库系统直接存储,而是通过日志系统存储,然后通过ETL保存到数据仓库。

接口埋点的意义主要是用于实时接口监控,可以让我们快速发现接口的异常情况。运维的报警系统很多都是通过接口埋点实现的。

如何做好埋点

接下来我们介绍如何做好埋点。

1、目标搜集

埋点是数据价值的起点,而目标收集又是埋点的起点。目标收集的关键要义在于必要的全面,也就是说,需要的数据都要进行埋点,但并不是埋点越全越好。

目标收集主要从两个角度思考,一个是用户信息(包含浏览器信息),一个是目标及事件。

用户信息主要是指用户的身份与硬件环境信息。身份信息包括未登录的唯一码、登录后的唯一码、联合登录信息等,硬件环境信息包括操作系统、硬件设备码和经纬度等。在没有用户信息的时代,大家只能进行全站的调整和信息呈现,而用户信息的收集让智慧营销、千人千面成为可能。

目标及事件主要是指页面中的元素及元素触发的事件。元素要进行分级收集,主要遵从三个级别:页面、模块和元素。模块是有可能分级的,但是在埋点系统里一般我们不做分级上报,只对最子级的模块进行上报,在服务器端存储模块层级关系。比如微信一级模块是“微信”“通讯录”“发现”和“我”。在“微信”里面还有“加号”“搜索”“消息列表”和“小程序”这些二级模块。然而当我们点击了“搜索”时,对于模块上报来讲,不需要记录“微信”这个一级模块,只需要上报“搜索”这个二级模块就可以了。

其实目标收集有一个很好的简单要义:谁对什么做了什么。这里的“谁”就是用户,“对什么”中的“什么”就是目标,“做什么”就是事件。在做埋点的时候,一定要记住这个要义。

接下来,介绍埋点所谓的必要和全面。全面就是埋点要尽可能全面,因为只有这样,当我们想到用某些数据进行机器学习的时候,才可以不用再去埋点,也不会损失历史数据的价值。全面有两个概念,一是埋的点位要全,二是一个点位的上传信息要全面。

关于埋的点位要全,这就需要依赖交互设计图了。在交互设计图中,任何有交互的元素都是需要考虑是否要进行埋的点。决定是否埋的依据是这个元素的交互是否有业务意义,如果有就需要进行埋点。此外,在用户行为产生结果的逻辑代码中也需要进行埋点。这样就可以保证埋点的全面性。

埋点上报的信息如何做到全面呢?以事件驱动。用事件作为埋点的点,需要上传的信息包括事件本身和触发事件的用户信息,以及触发元素本身所在实体(对于客观世界物体的抽象)的信息。比如我们在使用电商的时候,会收藏一个商品,那么点击收藏按钮的这个点击事件就是我们要埋的点。收藏是我们的动作,所以我们的唯一识别码、操作系统、经纬度坐标等信息就需要上报,同时点击的是商品的收藏按钮,所以商品的唯一标识码也需要上报。

接下来我们讨论一下必要。是不是所有的事件及其相关信息都需要上报呢?答案是否定的,特别是在用户量级很大的应用中,每多上报一种信息,就代表多很多的流量费用和存储费用。所以只有能够产生业务意义的事件及相关信息才需要上报。比如,App中经常出现的自动切换的控件,这种切换事件一般不上报,因为并没有什么业务价值。

以UI设计为底、以业务价值为依据、以事件为起点、以“要义”为目标进行埋点,就可以保证目标收集的必要和全面。

2、字典管理

做了埋点,只是保证了有信息,距离产生价值还有一个很重要的步骤,那就是字典管理。

字典管理的第一个要点是埋有所编。一个埋点对应一个标识信息,这样每一个埋点就相当于有了一个身份。这个标识信息既可以在后续的数据分析中发挥重要价值,也方便在埋点管理平台中进行管理。

字典管理的第二个要点是便于检索。在给模块起名的时候要遵从全路径原则,也就是页面→模块→最子级模块→元素→事件。例如,对淘宝首页男装分类下的更多热卖的每一个商品的点击进行埋点,那么这个埋点的合理名称是“首页_男装分类_更多热卖_商品_点击”。当然每个人因为习惯不同,会有一个符合自己系统的编码名称。

这里介绍一下编码的职责原则。首先埋点编码是由技术部门完成的,而不是业务部门。埋点的技术部门需要建立一套完整的、适用于全公司的埋点规范。如果业务侧的产品经理想申请埋点,只需要将埋点的点位和逻辑需求写清楚,然后到埋点的技术管理部门申请。埋点的技术管理部门依据制定好的规则,对新增的页面、模块、元素及事件进行编码,然后更新埋点文档。测试人员根据埋点文档对业务侧的产品经理提出的需求进行确认。测试通过的埋点在埋点管理系统中状态变更为验证通过,待版本发布后,埋点状态变更为有效。业务侧产品经理也可以通过埋点信息上报后的数据逻辑对埋点进行业务验证。

3、埋点管理平台

埋点管理平台,顾名思义,就是对于埋点的管理系统。实际上字典管理就是埋点管理平台的一部分,除了字典管理之外,埋点管理平台还包括埋点可视化管理、埋点状态监控及埋点测试几个模块。接下来我们会对剩下的模块进行说明。

01 埋点可视化管理模块

埋点可视化管理模块主要负责对埋点进行可视化管理。可以看到在下图中,左侧是一个App的展示,而在右侧有一系列埋点信息,并用线和目标元素进行连接。

可视化埋点示例图

这样产品在对埋点进行设计的时候,就可以所见即所得地设计,从而极大减少设计上的遗漏。同时,可视化管理模块也是埋点测试的基础。

02 埋点状态监控模块

埋点状态监控模块主要负责对埋点的存活状态、未知埋点发现及数据异常进行提醒。埋点的存活主要是针对已经确定的埋点进行监控,而是否存活主要是通过测试人员进行回归测试来判断。未知埋点发现主要是通过上报数据进行分析,如果出现了未知的埋点标识数据,则进行提醒,方便反向跟踪问题。数据异常提醒模块主要从数据本身的阈值异常以及上下游埋点比例的阈值进行监控。随着机器学习的引入,数据异常的判断进入智能化阶段,错报的概率大大降低,同时监控的时效性大大提升。

03 埋点测试模块

这个模块很少有企业真的做到,但是却是埋点管理平台能够得到升华的点。埋点测试模块主要提供给测试人员使用,因为它与可视化管理模块的联动可以让产品经理也很容易上手,进行埋点测试。也就是这个模块支持在测试的时候,可视化模块可以同步显示应用显示的页面。在应用上触发埋点的时候,可视化模块在接收到数据时可以高亮显示对应的埋点标签。所以埋点测试模块就是埋点测试人员和产品经理最想要的模块。下图是埋点管理系统主要模块的结构图。

埋点管理系统主要模块的结构图

如果你们企业做出了上面的埋点管理平台,那么要恭喜你了,你们已经走到埋点的专业级别了,你们的数据价值之路已经有了最好的砖和石。

埋点技术

下面来讲一下主流的埋点技术,这里仅从产品经理需要了解的原理角度进行讲解。

01JavaScript埋点

JavaScript埋点是主要应用于Web应用的埋点,通过在页面的底部加入一段JavaScript代码来完成埋点。一般在页面上显示为一个GIF小图标,图标的来源是一个JavaScript文件地址。

JavaScript埋点一般支持自定义事件的收集,这样就可以充分地对用户的行为进行收集。

JavaScript埋点也会应用Cookie技术,对用户身份进行标识,但是如果用户清除了Cookie,会导致用户身份丢失。

02APP埋点

App埋点算是站在了一个很高起点的埋点技术。因为有了JavaScript埋点的技术和运营沉淀,App埋点在很短的时间内就发展到了很成熟的阶段。App埋点主要分成两种方式,有埋点技术和无埋点技术。

1 )有埋点技术

在App刚火热的时候,还没有无埋点技术,都是以有埋点技术来实现的。

有埋点技术就是在逻辑代码中插入一条自己需要的埋点代码进行数据上报。这样的埋点技术可以根据业务需求精准埋点,但是也带来了一个问题:埋点管理问题。公司越大,部门划分越细,同时伴随人员的流动,一旦规则或者埋点人员的认知不同,就会导致埋点丢失或者改变。而我们之前说过,埋点是数据价值的起点,这样会给后续的所有分析及模型带来影响。

所以有埋点技术成为了一种大家质疑的技术,无埋点技术也在大家对有埋点技术的痛苦挣扎中应运而生。但是无埋点技术就真的是天堂吗?实际上,这样的问题并不是技术问题,而是管理问题。埋点技术暴露出来的问题也是因为管理体系的缺失导致的。

2) 无埋点技术

无埋点技术可以说是踏着七色云彩来到这个世上的,也是各大埋点平台鼓吹的埋点技术。

无埋点技术的好处是,通过引入SDK,接下来就会自动完成埋点,这样就可以规避很多人工错误。这样看来,是不是大家都应该使用无埋点技术呢?是不是无埋点技术就没有缺点了呢?

实际上在对业务数据要求高的场景下,无埋点技术还是有一些缺点的:

  • 采集的标准化使非标准化采集成为不可能;
  • 只能监控部分事件,并不能上报所有事件信息;
  • 由于目前App开发的复杂性上升,无埋点技术并不能兼容所有的场景;
  • 标准化上报导致很多业务无效的信息也进行了上报,大量的无效信息上报在流量大的场景下会带来巨大的流量及处理资源的浪费;
  • 无法获取业务逻辑内的信息跟踪。

埋点技术的选择

我们已经知道了有埋点技术和无埋点技术的优缺点,那么如何选择埋点技术呢?接下来针对不同的场景,进行埋点技术的推荐。

  • 公司刚启动,技术人员少,人员流动大,公司初步扩张中,尚未进入精细化运营阶段。只要符合其中一点,就可以选择无埋点技术。
  • 项目在天使阶段之后的融资阶段,业务复杂度高,App应用的技术多样。符合这些点中的一点,就不要用无埋点技术了。当然,在融资阶段,使用私有化部署的无埋点技术也还是可以的。
  • 公司流量巨大,业务复杂度高。当公司进入这个阶段的时候,就需要有埋点和无埋点技术联合使用。对无埋点技术也要进行一定的修改,上报阶段要通过后台配置项进行配置上报。这个阶段就需要按照4.2.3节提到的,建设自己的埋点管理平台了。

有埋点和无埋点技术都是为了数据采集而存在的,而且各有优劣,企业在不同阶段,产品在复杂度不同的情况下,根据自身的需要进行选择。效用最大化是组织的目的,所以不要在某一点上进行过度开发,避免产生不必要的浪费。

关于作者:李凯东,某视频媒体的大数据负责人,前京东数据中台应用数据平台部负责人、京东商城算法专家委员会核心委员,阿里天池数据科学家。

 

本书摘编自《数据产品经理:实战进阶》,经出版方授权发布。

 

责任编辑:武晓燕 来源: 数仓宝贝库
相关推荐

2022-11-01 18:21:14

数据埋点SDK

2021-09-03 18:38:13

数据湖数据仓库

2021-09-26 15:58:05

MySQL SQL 语句数据库

2021-06-13 12:03:46

SaaS软件即服务

2021-10-09 00:02:04

DevOps敏捷开发

2022-03-27 20:32:28

Knative容器事件模型

2021-09-14 18:27:08

Spark

2021-08-04 20:35:03

可视化SeabornMatplotlib

2021-06-29 11:21:41

数据安全网络安全黑客

2021-02-14 00:21:37

区块链数字货币金融

2020-11-30 08:34:44

大数据数据分析技术

2022-01-05 18:27:44

数据挖掘工具

2021-03-03 21:31:24

量化投资利润

2022-04-12 18:29:41

元数据系统架构

2022-04-22 11:26:55

数据管理架构

2022-07-31 20:29:28

日志系统

2021-03-25 11:24:25

爬虫技术开发

2020-11-03 07:04:39

云计算公有云私有云

2021-10-17 20:38:30

微服务内存组件

2022-04-27 18:25:02

数据采集维度
点赞
收藏

51CTO技术栈公众号