第2章 日志采集
1.日志采集有哪些
页面浏览日志页面浏览日志是指当一个页面被浏览器加载呈现时采集的日志。此类日志 也是最基础的互联网日志,也是目前所有互联网产品的两大基本指标:页面浏览量(Page View,PV)和访客数(Unique Visitors,UV)的统计基础 页面交互日志
页面交互日志是指用户在访问某个页面时具体的互动行为和特征。
移动端的采集根据不同的用户行为分成不同的事件。
页面事件
页面事件是指用户的浏览行为。每条页面事件日志记录三类信息:
(1) 设备及用户的基本信息
(2)被访问页面信息(这里主要是一些业务参数,比如商品详情页的商品ID,所属店铺等)
(3) 访问的基本路径(如页面的来源、来源的来源等,用于还原用户完整的访问行为)
控件点击及其他事件
在阿里巴巴的无线客户端日志采集实践中,将交互日志采集从页面时间采集中剥离出来,这就是控件点击事件和其他事件。
控件点击事件不仅记录了基本的设备信息、用户信息;它还记录了控件所在页面名称、控件名称、控件的业务参数等。
其他事件,就是用户可以根据业务场景需求,使用自定义时间来采集相关信息。
特殊场景
页面事件和控件点击以及其他事件,均为一个行为产生一条日志,特殊场景则是针对特殊场景的事件。
2.怎样进行日志采集
页面浏览日志采集页面浏览日志怎样进行采集,那就要从发送一个浏览器请求到服务器的响应说起了。
(1)用户在浏览器中输入网址链接
(2)浏览器向目标服务器发起HTTP请求
HTTP请求:请求行、请求报头、请求正文
(3)服务器接收并解析请求
HTTP响应:状态行、响应报头、响应正文
(4)浏览器接收到服务器的响应内容,并按照文档规范展现给用户,从而完成一次请求
要想完成页面浏览日志的采集,那我们肯定是从请求过程中的某一个步骤下手了。在第一步和第二步,用户的请求尚未到达服务器;而第三步,我们也只能认为服务器处理了请求,而不能保证浏览器是否正确的解析和渲染页面,尚不能保证用户已确实打开了页面,因此在第三步也是无法采集用户的浏览日志的。那么采集日志的动作,需要再第四步浏览器开始解析文档是才能进行。
因此基本的思路:在HTML文档内的适应位置增加一个日志采集节点,当浏览器解析到这个节点时,将自动触发一个特定的HTTP请求到日志服务器。如此一来,当日志采集服务器接收到这个请求时,就可以确定浏览器已经成功地接收和打开了页面。下图为阿里巴巴页面浏览日志采集方案流程框架。
在阿里巴巴,通过一套名为“黄金令箭”的采集方案来解决交互日志的采集问题。
具体而言,“黄金令箭”是一个开放的基于HTTP协议的日志服务,需要采集交互日志的业务,经过一下步骤即可将自助采集的交互日志发送到日志服务器。
在这里插入图片描述
(1)业务方在“黄金令箭”的元数据管理界面一次注册需要采集交互日志的业务、具体业务场景以及场景下的具体交互采集点,在注册完成之后,系统将生成与之对应的交互日志采集代码模板。(配置元数据)
(2)业务方将交互日志采集代码植入目标页面,并将采集代码与需要监测的交互应为做绑定。
(3)当用户在页面上产生指定行为时,采集代码和正常的业务活动响应代码一起被触发和执行
(4)采集代码 在采集动作完成后将对应的日志通过HTTP协议发送到日志服务器,日志服务器接收到日志后,对于保存在HTTP请求参数部分的自定义数据,即用户上传的数据,原则上不做解析处理,只做简单的转存。
无线客户端的日志采集
无线客户端的日志采集采用采集SDK来完成,在阿里巴巴内部,多使用名为UserTrack的SDK来进行无线客户端的日志采集。
H5&Native日志统一
(1)H5页面浏览和页面交互的数据,在执行时通过加载日志采集的JavaScript脚本,采集当前页面参数,包括浏览行为的上下文信息以及一些运行环境信息。在APP中打开H5页面和在浏览器中的处理完全一样,在前端页面的开发中无须做任何特殊的处理,只需在页面开发时手动植入日志采集的JavaScript脚本即可。
(2)在浏览器日志采集的JavaScript脚本中实现将所采集的数据打包到一个对象中,然后调用WebView框架的JSBridge接口,调用移动客户端对应的接口方法,将埋点数据对象当作参数传入。
(3)移动客户端日志采集SDK,封装提供接口,实现将传入的内容转换成移动客户端日志格式。采集SDK会根据日志类别来识别是页面浏览事件,还是控件点击事件,然后调用内部相应的接口进行处理,将埋点数据转换成移动客户端日志的统一格式。而后就同移动客户端的日志处理一样,先记录到本地日志缓存中,择机上传。通过日志类别的识别来做不同的日志格式转换,这样,未来如果要实现新的事件类别,比如自定义事件,就不需要改动WebView层的接口,只需改动JavaScript的部分内容及移动客户端日志采集SDK中对应的实现即可。
3.怎样保证日志信息的可用性
针对浏览器页面采集的日志(1)识别流量攻击、网络爬虫和流量作弊
(2)数据缺项补正
(3)无效数据剔除
(4)日志隔离分发