一.日志采集两大体系
1)Aplus.JS是Web端(基于浏览器)日志采集技术方案
2)UserTrack是APP端(无线客户端)日志采集技术方案
1.1浏览器页面日志采集
(1)页面浏览日志采集,PV,UV.
(2)页面交互日志采集
页面日志采集思路:
在HTML文档内的适当位置增加一个日志采集节点,当浏览器解析到这个节点时,将自动触发一个特定的http请求到日志采集服务。
所以阿里的页面日志采集流程如下:
1)客户端日志采集,一般由一小段被植入页面HTML文档内的JSP脚本执行。
2)客户端日志发送,采集脚本执行时,会向日志服务器发起一个日志请求,将采集的数据发送给日志服务器。
3)服务器端日志收集。服务器接收后立马回应浏览器,并将收集内容放入缓冲区异步处理。
4)服务器端日志解析文档。
2.2 页面交互日志采集
“黄金令箭”
1)业务方在"黄金令箭"的元数据管理界面依次注册需要采集交互日志的业务,具体的业务场景以及场景下的具体交互采集点,注册后生成与之对应的交互日志采集代码模板。
2)业务方将交互日志采集代码植入目标页面,并将采集代码与需要监测的交互行为做绑定。
3)当用户在页面上产生指定行为时,采集代码和正常的业务互动响应代码一起被触发和执行。
4)采集代码在采集动作完成后将对应的日志通过HTTP协议发送到日志服务器,日志服务器接收到日志后,对于保存在HTTP请求参数部分的自定义数据,即用户上传的数据,原则上不做解析处理,只做简单的转储。
2.3 页面日志的服务器端清洗和预处理
(1)识别流量攻击,网络爬虫,流量作弊。
(2)数据缺项补正。
(3)无效数据剔除。
(4)日志隔离分发。
2.4无线客户端的日志采集
无线客户端的日志采集采用采集SDK来完成,使用名为UserTrack的SDK来进行无线客户端的日志采集。UT把时间分为几类,常用包括页面事件和控件点击事件。
2.5日志采集的挑战
1.日志分流与定制处理
针对短时间的流量热点爆发,使得日志服务器端采用集中统一的解析处理方案变得不可能,要求在日志解析和处理过程中必须考虑业务分流,日志优先级控制以及根据业务特定定制处理。
阿里PV日志的请求位置URL是随着页面所在业务类型的不同而变化的。通过尽可能靠前地布置路由差异,就可以尽可能早地进行分流,降低日志处理过程中的分支判断消耗,并作为后续的计算资源调配的前提,提高资源利用效率。
2.采集和计算一体化设计
对于PV日志的问题(大规模URL正则)采用用户可直观感知的SPM规范和SPM元数据中心。
3.大促销保障
整个链路从端上埋点采集->日志服务器的收集->数据传输->日志实时解析->实时分析.
整个链路需要考虑服务器的收集能力(如峰值qps),数据传输能力,实时解析的吞吐量,实时业务的分析能力。
所以首先 我们要实现服务器端推送配置到客户端,且做到高到达率;其次对日志进行分流,结合日志的重要程序及各类日志的大小,实现了日志服务器端的拆分,在实时处理上也要做优化提高吞吐量。结合实时处理能力,评估峰值数据量,在高峰期通过服务器端推送配置的方式对非重要日志进行适当的限流,错峰后逐步恢复,还可以采用延时上报,部分采样。
网友评论