阿里巴巴的日志采集分为两大体系:Aplus.JS采集web端,UserTrack采集APP端。
3.1 浏览器页面日志采集
- 用户浏览器向URL地质发出HTTP请求(直接输入、点击连接)
- 服务器接收请求并解析请求
- 服务器返回HTTP响应(通常是对应页面的HTML文件)
- 浏览器接收响应内容,并展现给用户
采集日志的动作在第四步发生,由一小段嵌入HTML文件的JavaScript脚本执行。浏览器解析到脚本后执行,采集当前页面参数、浏览行为的上下文信息,以及一些运行环境信息。
- 浏览器执行日志采集代码,向日志服务器发送日志请求
- 日志服务器接收日志请求,返回请求成功的响应
-
3.1.2 交互日志采集
阿里巴巴使用黄金令箭采集。
业务方在“黄金令箭”的元数据管理界面注册所需要的信息,黄金令箭生成日志交互采集代码模版
- 业务方将交互日志采集代码植入目标页面,并将采集代码与需要监控的交互行为进行绑定
- 用户浏览页面时交互行为触发采集代码,发送日志请求
-
3.1.3 服务器端清洗和预处理
识别流量攻击、网络爬虫和流量作弊(虚假流量)
- 数据缺项补正(对日志中一些公用且重要的数据项做取值归一、标准化处理或反向补正)
- 剔除无效数据
- 日志隔离分发(基于数据安全或者业务特性的考虑)
3.2 无线客户端的日志采集
3.2.1 页面事件
- 记录三类信息:
- 设备及用户的基本信息
- 被访问页面的信息(业务参数)
- 访问基本路径
- 无痕埋点
- 手动埋点
- 页面展现时的接口
- 页面退出时的接口
- 添加页面扩展信息的接口
透传参数(采集更多信息以减少计算及分析的成本)
控件点击事件
- 记录了基本的设备信息、用户信息
- 记录了控件所在页面名称、控件名称、控件的业务参数等
- 把相关基础信息告诉采集SDK即可
其他事件
利用页面的生命周期来实现适当的聚合及确定发送时机
利用页面的生命周期来识别复用,配合栈的深度识别是否存在回退行为
3.2.4 H5&Native日志统一
Native和H5互跳无法还原用户路径,数据丢失严重
多方案
- 多算法
- 多端数据隔离
- 多样数据口径
阿里集团使用Native部署采集SDK,流程:
- H5部署采集JavaScript(与浏览器日志采集没有太大差异)
- JavaScript脚本中实现将所采集的数据打包到一个对象中,然后调用WebView框架的JSBridge调用移动客户端对应的接口方法,将埋点数据对象传给移动客户端
- 移动客户端日志采集SDK接收埋点数据对象,解析并转换为移动客户端日志格式
3.2.5 日志传输
- 伺机上传给日志服务器
- Adash根据应用及事件类型进行分流
- 日志服务器使用TimeTunel传输给MaxCompute