【用户行为采集】(三)埋点管理系统

收集用户行为数据──埋点,是用户行为分析中非常重要的环节,直接决定数据广度、深度、质量,影响后续所有的环节。就埋点本身来说,技术实现的难度并不高,但是整个埋点的过程可以说十分的复杂繁琐,有非常多细节和流程需要考虑,不同类型客户端如何采集,数据如何统一,哪些信息需要在客户端采集,哪些信息需要在后端采集,如何减少数据上报的延时和漏报,如何对成千上万个埋点进行统一的管理?这一系列文章基于用户行为分析数据平台一年的工作经验,会对埋点的全过程进行思考和讨论,涉及对埋点基础知识的介绍,讨论如何从 0 到 1 开始收集用户行为数据工作,分享负责项目的埋点方案,介绍埋点管理系统,梳理整个埋点协作流程等方面。上篇文章讨论了为何、以及如何建立收集用户行为数据规范,点击查看。本文是系列文章的第三篇,介绍如何将采集规范线上化──埋点管理系统。

就埋点本身而言,没有技术挑战,但涉及的环节特别多,包括埋点需求提交、埋点设计(定义收集字段、格式、收集时间、报告策略)、埋点开发在线、无用埋点离线等,这些环节需要一个有效的过程系列,在最后一篇文章中建立了收集规范,有这样的过程。但这还不够,因为整个过程需要多个团队合作,如业务团队、数据团队、埋点研发团队(包括后端埋点、不同端的前端埋点,如 iOS 端、Android 端、Web 端、微信小程序端等。),每个团队按照规范履行自己的职责,相互配合。如果这些都取决于每个人「自觉」合作需要巨大的沟通成本。在实际工作中,人「自觉」几乎不可能,因为每个角色都处于不同的环节,只会寻找「局部最优」。因此,我们希望让步「系统」协调工作,通过在线流程到系统,每个团队到系统处理自己的责任,使每个环节的输入输出更加标准化和自动化,减少不必要的沟通,提高效率。这就是为什么要做一个埋点管理系统。

完善的埋点管理应涵盖埋点的整个生命周期,包括埋点需求阶段、埋点实施阶段、埋点使用阶段(数据分析)、埋点离线回收。使用埋点管理系统在线埋点应经历以下过程:

埋点管理系统参与了埋点的所有环节,各团队/角色通过埋点管理系统完成以下工作:

通过梳理上述埋点管理流程,以及各种角色的需求和职责,梳理出埋点管理系统应覆盖的功能,即:埋点管理、埋点属性管理、埋点数据监控报告。

埋点列表注册后,将进入埋点列表,提供相对完善的埋点信息,也是编辑埋点、查看埋点数据报告统计的入口。

注册/编辑埋点信息

埋点需求确认后,将新的埋点输入埋点管理模块,包括:

检查需求计划中的埋点和属性是否已触发(报告数据)。

埋点回收的完整生命周期应包括离线无用埋点,埋点回收功能将不再使用的埋点转移到回收站。埋点回收后,仍可查询历史数据,但未来不会收到埋点的报告数据。用户可以通过移出回收站来恢复报告数据。

需要注意的是,这种设计是出于业务特点。在用户行为分析系统的早期阶段,我们定义了埋点的规范,但整个规范过程没有在线,只是简单「埋点启用/禁用」功能,控制埋点是否可以查询。随着业务的发展,埋点数量在短时间内激增到数万个,其中许多埋点在报告后从未被查询过。有些埋点已经被禁用很长时间了,但它们一直在报告数据。后来,经过盘点,实际上只有 15% 的埋点有查询记录,这些无用的埋点占用了大量的计算资源,也增加了埋点数据查询的难度(毕竟,从成千上万的埋点中找出关注的埋点并不容易)。基于此背景,我们增加了僵尸埋点过滤功能,过滤掉了第一次报告后 3个月未启用和禁用的埋点,即这些数据不会进入用户行为分析平台的计算引擎。功能启动后,进行简单统计,可节省 30% 的计算资源。

后来,我们实现了埋点管理功能,并将整个标准化流程在线化。僵尸埋点的过滤策略仍保留在埋点管理中,并进一步优化。例如,当用户注册埋点时,他们可以选择埋点的在线周期是长期在线还是在某一天自动离线回收。此外,我们应该将埋点可查询与埋点可接收分开:通过操作埋点和属性的可见性,控制数据是否可查询;通过将埋点移入/移出回收站,控制是否接收数据报告。

在埋点元数据中维护产品/业务层面的一般属性,由数据团队统一维护。在注册/编辑埋点添加属性时,可以搜索所有可见属性。与一般属性相比,自定义属性是某一事件下的独特属性,由业务方根据埋点方案进行维护。

在埋点管理中,我们可以看到具体埋点的数据报告,监控异常。

扫码免费用

源码支持二开

在线咨询