美文网首页
【前端日志采集】传输方案

【前端日志采集】传输方案

作者: 嘻洋洋 | 来源:发表于2018-09-12 18:06 被阅读0次

传统解决方案遇到的问题

  • 统计脚本和其它脚本参合在一起,导致用户关闭页面过早,统计脚本还未加载/初始化完成。解决方法单独加载统计脚本,并且放在前头,让它优先加载。具体做法有:
    • Nginx 在 Body 开始标签位置注入一段脚本处理。
    • js 动态请求换成 <img src> 硬编码的方式发送请求
  • 用户关闭或者跳出页面的时候,请求未发出。比如点击前发送日志然后立即跳转,如果不做任何优化处理,这种场景的丢失率巨高。具体解决方法:
    • 阻塞式的 Ajax 请求(同步请求)
window.addEventListener('unload', function(event) {
  var xhr = new XMLHttpRequest(),
  xhr.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
  xhr.open('post', '/log', false); // 同步请求
  xhr.send(data);
});
  • 暴力的死循环阻塞页面关闭

window.addEventListener('unload', function(event) {
  send(data);
  var now = +new Date;
  while(new Date - now >= 10) {} // 阻塞 10ms
});
  • 发一个图片请求阻塞
    大部分浏览器都会等待图片的加载,趁这个机会把统计数据发送出去
window.addEventListener('unload', function(event) {
  send(data);
  (new Image).src = 'http://example.com/s.gif';
}

以上提到的几个方案都是一个原理,让浏览器继续保持阻塞状态,等数据发送出去后再跳转,这里存在的问题是:

  • 少量浏览器下可能不奏效。
  • 等待一会儿再跳转,用户体验上打了折扣,尤其是移动端上。

优化方案

localstorage 存储重发

针对丢失率高的场景,咱们可以先把请求日志存储在 localstorage 中,失败后在下个页面重发,并且可以添加重试机制,这样日志的完整性能很大程度上提高。

相关文章

  • 【前端日志采集】传输方案

    传统解决方案遇到的问题 统计脚本和其它脚本参合在一起,导致用户关闭页面过早,统计脚本还未加载/初始化完成。解决方法...

  • 前端日志采集方案浅析

    前言 在前端部署过程中,通常会使用nginx作为部署服务器,而对于默认的nginx服务来说,其提供了对应的日志记录...

  • 2.阿里大数据——日志采集

    Aplus.JS:是web端日志采集技术方案 UserTrack:APP端日志采集技术方案 一、浏览器的页面日志采...

  • k8s八 | 基于EFK实现日志管理与日志报警

    一、日志采集方案 大致一下分为三种方案来做日志采集: 在节点上运行一个 agent 来收集日志 在 Pod 中包含...

  • 部署efk+kafka高并发日志收集系统

    一架构&详解 架构图: 本次实验主要以采集nginx日志为例,采用filebeat采集日志,传输到kafka,然后...

  • 91 分布式ELK 日志采集系统

    1,传统日志采集存在哪些问题?2, 分布式+日志采集有哪些方案?3,ElasticSearch+logstash+...

  • 基于Elasticsearch+Fluentd+Kibana的日

    一个完整的日志系统,需要包含以下几个主要特点:` 收集-能够采集多种来源的日志数据 传输-能够稳定的把日志数据传输...

  • Kubernetes日志采集-EFK

    1. 日志采集方案 因为方案一在业界使用更为广泛,并且官方也更为推荐,所以我们基于方案一来做k8s的日志采集。 2...

  • BigData~09:Flume

    一、概述 Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统,通常用来做日志的采集。 Flum...

  • 日志采集

    一.日志采集两大体系 1)Aplus.JS是Web端(基于浏览器)日志采集技术方案 2)UserTrack是APP...

网友评论

      本文标题:【前端日志采集】传输方案

      本文链接:https://www.haomeiwen.com/subject/gocvgftx.html