专栏首页程序猿杂货铺日志埋点系统的架构与实现

日志埋点系统的架构与实现

来源:https://dwz.cn/Ie8JOcdO

阅读文本大概需要 5 分钟。

什么是埋点?

所谓“埋点”,是数据采集领域(尤其是用户行为数据采集领域)的术语。指的是针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。 埋点的技术实质,是先监听软件应用运行过程中的事件,当需要关注的事件发生时进行判断和捕获。

意义何在?

  • 流量监测(在线情况分析、按时段分析、按来源分析);
  • 构建行为路径, 通过对处理后的信息进行关联,获取用户的整条行为链路;
  • 通过对埋点数据的处理、分析、建模,可以挖掘用户的喜好、需求,判断产品的效果和未来走向;
  • 监控应用运行状态,提供问题跟踪定位的数据支持;
  • 为营销策略提供数据支持;
  • 实施 AB Testing;
  • 作为数据平台中,数据采集的一个不可缺少的环节;

埋点的技术难点

现在的业务技术架构都不仅仅是单独的一种技术方案能解决的。现在只要是做互联网的公司,其业务系统都会包含如下系统模块:

  • 大前端。这里包含 WEB、HTML5, App(IOS、Android、Hybrid形式)
  • 后端应用系统
  • 服务器系统

关于Hybrid 类型埋点

客户端内的 H5 生成埋点使用的是 JavaScript SDK,如果直接发送到日志收集服务,会丢失客户端的一些重要属性(用户设备信息、当前网络状态、所在地区等)。一般的处理方式为H5的日志通过 JSBridge调用Native,由Native统一向后端发送日志信息。

埋点的方式

埋点方式多种多样,按照埋点位置不同,可以分为前端(客户端)埋点与后端(服务器端)埋点,其中前端埋点包括:代码埋点、全埋点、可视化埋点。 这些埋点方式的比较如下:

埋点准确性顺序

代码埋点 > 可视化埋点 > 全埋点

最理想的埋点方式?

任何单一的埋点方式都存在优点与缺点,希望通过简单粗暴的几行代码、一次部署、甚至牺牲用户体验的埋点方式,都不是我们所期望的。

要满足精细化、精准化的数据分析需求,可根据实际需要的分析场景,选择一种或多种组合的采集方式,毕竟采集全量数据不是目的,实现有效的数据分析,从数据中找到关键决策信息实现增长才是重中之重。

因此,数据采集只是数据分析的第一步,数据分析的目的是洞察用户行为,挖掘用户价值,进而促进业务增长,故最理想的埋点方案是根据根据不同的业务和场景以及行业特性和自身实际需求,将埋点通过优劣互补方式进行组合,比如:

  • 代码埋点+全埋点:在需要对落地页进行整体点击分析时,细节位置逐一埋点的工作量相对较大,且在频繁优化调整落地页时,更新埋点的工作量更加不容小觑,但复杂的页面存在着全埋点不能采集的死角,因此,可将代码埋点作为辅助,将用户核心行为进行采集,从而实现精准的可交叉的用户行为分析;
  • 代码埋点+服务端埋点:以电商平台为例, 用户在支付环节,由于中途会跳转到第三方支付平台,是否支付成功需要通过服务器中的交易数据来验证,此时可通过代码埋点和服务端埋点相结合的方式,提升数据的准确性;
  • 代码埋点+可视化埋点:因代码埋点的工作量大,可通过核心事件代码埋点,可视化埋点用于追加和补充的方式采集数据。

日志采集规范

日志采集的规范越早统一,对于数据分析、利用越有帮助,这里借用大厂阿里的规范说一下。

SPM(Super Position Model)全称超级位置模型

SPM是Web端Aplus日志体系和APP端UserTrack日志体系下,共同使用的的重要规范。

阿里的SPM位置编码由A.B.C.D四段构成, 各分段分别代表 A:站点/业务, B:页面, C:页面区块, D:区块内点位。

SCM(Super Content Model)全称超级内容模型

与业务内容一起下发的埋点数据,用来唯一标识一块内容。 客户端打点时,将 SCM 编码作为埋点的参数上传给 UT 服务器。

SCM编码也采用a.b.c.d的格式,其中,一般来说:

  • a标识投放系统ID,用来标识不同的内容投放方,比如商城的阿拉丁系统,对应的投放系统ID为1003。
  • b标识投放算法ID,用来标识投放系统产生不同内容的投放算法。
  • c标识投放算法版本ID,用来标识投放算法的不同版本。
  • d标识投放人群ID,用来标识不同的投放人群,或者对接profile。

黄金令箭

用户在页面上某个行为触发一个异步请求,按照约定的格式向日志服务器发送请求,展现、点击、等待、报错等等都可以作为交互行为。

系统架构设计

具体日志发送流程如下图:

系统能力

  1. 系统能力支持动态横向扩容;
  2. 日志可以设置优先级、分业务处理(通过设置不同的topic);
  3. 为数据分析、挖掘提供可用性数据支持;

指标收集概括


本文分享自微信公众号 - 程序猿杂货铺(zhoudl_l),作者:oneape15

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • java8新特性(一):Lambda表达式

    Lambda 是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。作为一种更紧凑的...

    周三不加班
  • JVM 基本介绍

    Java 的设计理念是 WORA(Write Once Run Anywhere,一次编写到处运行)。编译器将 Java 文件编译为 Java .class 文...

    周三不加班
  • JVM性能调优实践(二)——G1 垃圾收集器分析、调优篇

    关于G1 GC以及其他垃圾收集器的介绍可以参考前一篇JVM性能调优实践——G1 垃圾收集器介绍篇。了解了G1垃圾收集器的运行机制之后,就可以针对一些GC相关参数...

    周三不加班
  • 《七天数据埋点之旅》指引篇

    数据埋点是一份上手容易精通难的典型例子,可以说人人都可以埋点,但是埋点质量差异巨大,而这份差异随着时间推移会加速放大。

    木东居士
  • 关于程序埋点的思考

    对于本次修改的数据统计分析程序的埋点,只是为了统计数据中出现的一些不易发现的错误,全部让程序主动跑出来。但是只要是主动抛出统计数据,都属于埋点。

    职场亮哥
  • 知乎数据埋点方案

    从业务过程中采集埋点,是数据驱动型公司的必要条件。知乎的产品功能评审环节,不仅有 PRD (Product requirement document),还加入了...

    Spark学习技巧
  • 《七天数据埋点之旅》第二天:埋点之前

    关于作者:我是水大人,资深潜水员,一个基于开发、面向分析、走向全栈的饱经摧残的数据新手,爱折腾不爱玩,爱总结爱思考的老兵,错了改改了又错的惯犯。

    木东居士
  • 《七天数据埋点之旅》第六天 埋点管理和验收

    埋点管理是埋点设计的组织方式,可以细分为面向开发者的管理、面向监控者的管理和面向使用者的管理。本节节介绍面向使用者的管理。通过本节的学习,你将获得以下方面的认知...

    木东居士
  • 埋点系统杂谈

    做埋点系统的初衷很简单,就是想更加详细了解用户是如何使用我们的产品,并串联起已有的线下数据,从而更好为用户提供服务。

    哒呵呵
  • 美团点评前端无痕埋点实践

    构建一个数据平台,大体上包括数据采集、数据上报、数据存储、数据计算以及数据可视化展示等几个重要的环节。其中,数据采集与上报是整个流程中重要的一环,只有确保前端数...

    美团技术团队

扫码关注云+社区

领取腾讯云代金券