网舟科技|埋点进阶(一):埋点还是埋雷?埋点治理工作浅谈
先举一个实际的例子,比如用户在某一时刻点击了某个APP里面某个页面上的推荐按钮,这一信息将被记录下来,会以一条日志的方式去做上报,存储到服务器当中,这样的日志信息可以定义为一个埋点。
埋点数据上能影响业务运营数据分析、智能推荐、AB 实验的准确性,下能影响数据仓库结构设计和数据采集团队的维护成本。
从技术层面上,埋点分为代码埋点、可视化埋点、无埋点 / 全埋点。目前国内主要的第三方数据分析服务商和大型公司内部普遍支持。代码埋点又衍生出了声明式埋点、无痕埋点、服务端埋点等丰富的埋点方式。
通过多种埋点方式组合,可以在不同场景业务中灵活使用。比如在页面中元素或页面事件使用前端代码埋点;在 Debug 链路长的搜推代码中使用服务端埋点;产品运营等非研发使用可视化埋点。
用一句话描述,是因为当时公司内部缺少埋点全生命周期的管理流程,导致埋点新增、埋点变更、埋点使用(解析和计算)方面存在各种问题。
· 埋点溯源难:线下创建埋点,随着时间推移-人员变动-工作交接,难以溯源
· 埋点查询难:若想了解某个埋点的具体含义,需要逐级问好多人,都不一定能得到答案
· 埋点事件不可读:埋点事件上线后,由于缺少规范约束,不知道事件中关键词的具体含义
· 沟通成本高:若需要通过埋点加工数据指标,由于数据结构和字段含义不可见,需要反复与业务侧多次沟通埋点数据结构
· 感知变更难:只能通过数据指标的大幅度变化感知埋点变更,滞后且不可靠
· 数据不可靠:埋点不经过测试就上线,上线后发现埋点漏埋、错埋、多埋、漏发、错发、多发,导致数据指标不可靠,更新又要等一个版本
· 计算压力大:通过埋点算指标的场景,基本使用正则表达式,带了计算复杂度的提升
· 存储压力大:无下线机制,不用的埋点不下线,每天都消耗计算资源
· 流程未闭环:平台只支持埋点录入、事件分析,缺少校验、规范环节
带着上述问题,我们对业界的埋点方案进行了调研总结。主要分为两部分:埋点日志字段规范和埋点需求流程。
1. 致性:所有事件字段的命名要统一,便于后续分析和比较。使用相同的命名格式(如驼峰命名法、下划线命名法等)。
2. 详细性:字段设计要尽可能详细,确保能够捕捉到用户行为的所有关键细节。避免过于简单或模糊的字段,例如“操作”应该具体到“点击按钮”而不是“行为”。
3. 简洁性:保持字段名称简短且具有描述性,避免过长的命名。确保字段信息易于理解,不会让分析者感到困惑。
4. 灵活性:设计应能适应未来的业务变化,方便后期添加新字段。考虑到不同的业务场景,字段设计应具有扩展性。
5. 不重复:避免设计冗余字段,确保每个字段都有独特的目的,数据不会重复。
6. 完整性:确保每个关键的用户行为和系统事件都有对应的埋点。不遗漏任何重要的业务逻辑或用户交互。
7. 可追溯性:每个埋点应该能够追溯到特定的业务需求或用户需求,确保数据能够反映实际场景。
8. 用户隐私:遵循相关法律法规,避免收集敏感信息,做好用户隐私保护。
9. 性能考虑:注意埋点对系统性能的影响,合理设置埋点的触发频率,避免过度埋点带来的负担。
遵循这些原则可以帮助团队创建一个高效、可维护并且易于分析的埋点系统
在埋点标准化设计中的三个重要部分:埋点命名规范、埋点属性管理和流程规范。
对于使用者来说,拿到这个track_sign以后能快速地定位到这个埋点所处的页面模块、位置模块,以及在哪一个页面minePage,所属的业务线是哪一条,能够精确地定位它所处的业务线对应的信息。
这个业务埋点ID,对于做一个定位或者类型的划分,能够做到业务的可读性非常高,分摊业务埋点的成本,并且复用性非常高。点击的埋点命名为click,那同样一个模块,曝光的埋点,命名为show就可以了。
在埋点上报的时候,有一个很重要的部分是记录埋点的属性参数。埋点属性在业务含义当中是对用户有一些定制采集的信息。
会做三个层级的划分:首先是全局公共字段,包括埋点事件ID、APP信息、触发的时间戳、触发时间的网络、运营商、操作系统的版本等等。
第二个是针对不同的埋点类型,包括页面浏览PV、播放,或者业务特色的业务内容埋点,抽象出这个类型通用字段去做一个具体的预填充。
第三个部分就是业务定制化的私有参数,比如做海报轮播的时候,需要这个海报轮播的bannerID,或者这个海报对应跳转up主的mid等参数,就是业务它自定义去使用的参数信息。
关于埋点属性规范,在数仓中,比如一张Hive表,会有表字段级别的数据标准。在埋点数据当中,把埋点抽象为业务表,埋点的属性实际上映射为表当中的字段,所以引申出来,它也有属性标准。
一个管理的规范会划分为三大类,一类是基础的描述信息,第二类是属性的质量,第三类辅助去做属性管理所使用的信息。
第一类基础属性,常见的有命名规范是否符合下划线连接、点号连接,中划线连接。数据的类型,到底是字符串还是数值,还是枚举类型。
第二个部分是它的数据质量,包括埋点是否为空值、枚举值,默认值应该填充为Null,还是一个中划线,这些是后面做埋点测试的时候使用,测试规则都是基于这部分埋点的属性标准。
第三类是元数据集管理,包括埋点的版本,属性的优先级、安全等级等等。
作者团队把整个埋点流程及规范,划分为了五个环节以及四个重要的参与方
- 2024-09-05
- 2024-09-02
- 2024-07-15
- 2024-02-02
- 2023-04-28
- 2023-03-02
- 2023-02-10