阿里巴巴的日志采集分为两大体系:Aplus.JS采集web端,UserTrack采集APP端。


3.1 浏览器页面日志采集

  • 浏览日志采集:PV、UV等
  • 交互日志采集:点击、曝光等

    3.1.1 浏览器浏览日志采集流程

    HTTP请求-响应过程:
  1. 用户浏览器向URL地质发出HTTP请求(直接输入、点击连接)
  2. 服务器接收请求并解析请求
  3. 服务器返回HTTP响应(通常是对应页面的HTML文件)
  4. 浏览器接收响应内容,并展现给用户

采集日志的动作在第四步发生,由一小段嵌入HTML文件的JavaScript脚本执行。浏览器解析到脚本后执行,采集当前页面参数、浏览行为的上下文信息,以及一些运行环境信息。

  1. 浏览器执行日志采集代码,向日志服务器发送日志请求
  2. 日志服务器接收日志请求,返回请求成功的响应
  3. 日志服务器解析、预处理、存储日志

    3.1.2 交互日志采集

    阿里巴巴使用黄金令箭采集。

  4. 业务方在“黄金令箭”的元数据管理界面注册所需要的信息,黄金令箭生成日志交互采集代码模版

  5. 业务方将交互日志采集代码植入目标页面,并将采集代码与需要监控的交互行为进行绑定
  6. 用户浏览页面时交互行为触发采集代码,发送日志请求
  7. 日志服务器接收日志请求,返回日志响应,并解析、存储日志

    3.1.3 服务器端清洗和预处理

  8. 识别流量攻击、网络爬虫和流量作弊(虚假流量)

  9. 数据缺项补正(对日志中一些公用且重要的数据项做取值归一、标准化处理或反向补正)
  10. 剔除无效数据
  11. 日志隔离分发(基于数据安全或者业务特性的考虑)

3.2 无线客户端的日志采集

最小单位:事件,页面事件、控件点击事件等

3.2.1 页面事件

  • 记录三类信息:
    1. 设备及用户的基本信息
    2. 被访问页面的信息(业务参数)
    3. 访问基本路径
  • 无痕埋点
  • 手动埋点
    1. 页面展现时的接口
    2. 页面退出时的接口
    3. 添加页面扩展信息的接口
  • 透传参数(采集更多信息以减少计算及分析的成本)

    • 把当前页面的某些信息传递到下一个页面甚至下下个页面的日志中
    • 透传SPM可还原用户行为路径

      3.2.2 控件点击及其他事件

  • 控件点击事件

    • 记录了基本的设备信息、用户信息
    • 记录了控件所在页面名称、控件名称、控件的业务参数等
    • 把相关基础信息告诉采集SDK即可
  • 其他事件

    • 自定义埋点类,包括事件名称、事件时长、事件所携带的属性、事件对应的页面
    • 自动捕获应用崩溃
    • 应用退出
    • 前后台切换

      3.2.3 特殊场景

  • 利用页面的生命周期来实现适当的聚合及确定发送时机

  • 利用页面的生命周期来识别复用,配合栈的深度识别是否存在回退行为

    3.2.4 H5&Native日志统一

    Native和H5互跳无法还原用户路径,数据丢失严重

  • 多方案

  • 多算法
  • 多端数据隔离
  • 多样数据口径

阿里集团使用Native部署采集SDK,流程:

  1. H5部署采集JavaScript(与浏览器日志采集没有太大差异)
  2. JavaScript脚本中实现将所采集的数据打包到一个对象中,然后调用WebView框架的JSBridge调用移动客户端对应的接口方法,将埋点数据对象传给移动客户端
  3. 移动客户端日志采集SDK接收埋点数据对象,解析并转换为移动客户端日志格式

    3.2.5 日志传输

  • 伺机上传给日志服务器
  • Adash根据应用及事件类型进行分流
  • 日志服务器使用TimeTunel传输给MaxCompute