浏览器的页面日志采集

91 阅读4分钟

页面浏览日志

  1. 客户端日志采集:日志采集工作一般由一段被植入页面HTML文档内的JS脚本来执行,采集脚本被浏览器加载解析后执行,在执行时采集当前页面的蚕食、行为上下文信息、环境信息;植入日志采集脚本动作可以有业务服务器在响应业务请求时动态执行,也可以在开发页面时由开发人员手动植入。
  2. 客户端日志发送:采集脚本执行时,会向日志服务器发起一个日志请求,以将采集到的数据发送到服务器,大多数情况下采集完成之后会立即执行发送,个别场景下日志采集之后可能会经过一段时间的延迟才被发出;日志采集和发送模块一般集成在同一个JS脚本文件内,且通过HTTP与日志服务器通信,采集到的日志一般以URL参数形式放在请求行内。
  3. 服务器日志收集:日志服务器收到客户端的日志请求后,一般立即向浏览器发回一个请求成功的响应,同时日志收集模块会将请求内容写入一个缓冲区内。
  4. 服务器端日志解析存档:日志进入缓冲区后会被一段专门的日志处理程序顺序读出并按约定逻辑解析,转存入标准的日志文件中,并注入实时消息通道内供其他后端读取和进一步处理。

页面交互日志采集

在阿里巴巴通过一套名为“黄金令箭”的采集方案来解决交互日志的采集问题,“黄金令箭”是一个开放的基于HTTP协议的日志服务。

  1. 在“黄金令箭”的元数据管理界面一次注册需要采集交互日志的业务,在注册完成后系统将生成与之对应的交互日志代码模板。
  2. 业务方将交互日志采集代码植入目标页面,并将采集代码与需要检测的交互行为做绑定。
  3. 当用户在页面上产生指定行为时,采集代码和正常的业务互动响应代码一起被触发。
  4. 采集动作完成后,将对应的日志通过HTPP协议发送到日志服务器,原则上不做解析处理。

页面日志的服务器端清洗和预处理

在对时效要求较宽松的应用场合下,一般还需要进行相应的离线预处理

  1. 识别流量共计、网络爬虫和流量作弊,以避免日志相关指标的统计发生偏差。
  2. 数据缺项补正,为保证基本的数据统计口径一致,需要对重要数据作取值归一、标准化或反向补正,反向补正是根据新日志对上一个动作日志的回补修正,如用户登录后对登录前的日志做身份信息回补。
  3. 无效数据剔除,在某些情况下,因业务变更或配置不当,在采集的日志中会存在一些无意义、已失效、冗余数据,为减少数据存储和算力消耗或干扰正常计算,虚定时检查配置并依照配置将此类数据剔除。
  4. 日志隔离,基于数据安全、业务特性考虑。

日志采集的调整

  1. 采集计算一体化设计,在早期的互联网分析跟实践中,是以URL路径继而以URL(正则)规则集为依托进行日志分类的,但随着网站的大型化和开发人员的增加,规则集的维护和使用成本增长到了不显示的程度,这一状况要求日志采集方案必须将采集与计算作为一个系统来考量,进行一体化设计;阿里巴巴给出的答案是两套日志规范和预支对应的元数据中心,对于PV使用SPM规范+SPM元数据,对于自定义日志使用Goldlog+配置中心。
  2. 大促保障,首先端上实现了服务器推送配置到客户端,其次对日志做了分流,结合日志的重要程度,大小实现了日志服务器端的拆分,在高峰期通过服务器端推送配置的方式对非重要日志进行适当限流、错峰后逐步恢复;配置作用范围有应、平台、事件、实践中的某个场景,具体实施有延迟上报、部分采样。