1.前端异常处理的框架对比

 
是否开源
收费
语言
监控范围
sentry 自己搭建服务器(免费)价格 英文 Angular、AngularJs、Backbone、Ember、JavaScript、React、Vue......
fundebug 收费(708一年,本地版:12万一年) 中文 Angular、AngularJs、Backbone、Ember、JavaScript、React、Vue、微信小程序等等......

2,前端异常监控方案梳理

what?(前端监控是什么)


对线上代码的异常排查,一般分为下面三个点:

  1. js的异常采集的方式
  2. js异常的上报方式
  3. 统计异常监控上报的常见问题

why?(为什么要有前端异常监控)


  1. 随着移动互联网的快速发展,互联网获取流量的渠道越来越多样化。前端的应用场景不在局限于网页,通常是网页、公众号、安卓端、ios都有涉及。这样的话很多边界问题完全依赖于后端的监控和测试阶段的测试是完全不够的。
  2. 用系统化的报错采集替代人工上报。以便于获得更快速的异常收集。

How?(怎么做)


  1. js的异常处理方式

    收集异
    // try-catch 异常处理
    // try-catch 在我们的代码中经常见到,通过给代码块进行 try-catch 进行包装后,当代码块发生出错时 catch 将能捕捉到错误的信息,页面也将可以继续执行。
    // 但是 try-catch 处理异常的能力有限,只能捕获捉到运行时非异步错误,对于语法错误和异步错误就显得无能为力,捕捉不到。
    try {
      error    // 未定义变量
    catch(e) {
      console.log('我知道错误了');
      console.log(e);
    }
    ----------------------------------------------------------------------------------------------------------------------------
    // window.onerror 异常处理
    // 无论是异步还是非异步错误,onerror 都能捕获到运行时错误。
    // 另外 onerror 是无法捕获到网络异常的错误
    window.onerror = function (msg, url, row, col, error) {
      console.log('我知道错误了');
      console.log({
        msg,  url,  row, col, error
      })
      return true;
    };
    new Error('111')
  2. js异常的上报方式
    • 根据定义好的数据格式,利用ajax发送数据
    • 根据定义好的数据格式,利用img标签发送数据

      // 数据格式示例
      // 错误日志信息
          msg: '',
          url: ''// 错误来源页面url
          line: ''// 错误行数
          col: ''// 错误列数
          stack: '',
          from: ''// 错误来源
          "navigator.userAgent"''//浏览器信息
          ret: {}, // 解析source map后原始准确定位数据
          evtMoniter: [] //用户行为保存数组,保存最近10次行为操作
      }
  3. 统计异常监控上报的常见问题
    上报后的数据后台对对应的数据进行存储分类,根据不同项目不同种类的错误进行统计。 超过一定数量可以设置报警等级制。

现有的前端异常处理的服务商


  1. sentry

  2. funDebug

前端异常处理的框架对比

搭建sentry服务

entry有两种安装方式,一种是利用docker安装,另外一种是配置pathon环境。官网推荐用docker,下面主要介绍docker渠道的安装。

依赖环境

构建容器

  1. 克隆仓库 getsentry/onpremise.
  2. 创建对应目录

    mkdir -p data/{sentry,postgres}
  3. 获取项目的Key, 拷贝最后一行的key

    docker-compose run --rm web config generate-secret-key
  4. 打开docker-compose.yml, 将key考到 SENTRY_SECRET_KEY 后面

    vim docker-compose.yml
  5. 创建项目的superuser,根据提示一次填写

    docker-compose run --rm web upgrade
  6. 开启 sentry 服务,就可以进入自己的sentry啦, http:://ip:9000 即可进入你的 sentry

    docker-compose up -d
  7. nginx配置

    server {
         listen  80;
         server_name yusidi.sentry.com;
            location / {
            proxy_pass http://127.0.0.1:9000;
        }
    }
  8. 利用sentry来改善你的工作流程

    文档:https://blog.sentry.io/2018/03/06/the-sentry-workflow

创建新的项目:

选择对应的框架:

记住项目对应的dsn点击确定

将dns中的域名替换成我们jiazheng.daojia.com

sourcemap上传:

// webpack接入
var SentryCliPlugin = require('@sentry/webpack-plugin')
plugins:[
new SentryCliPlugin({
      include: 'dist/js',
      ignoreFile: '.sentrycliignore',
      ignore: ['node_modules''webpack.config.js'],
      configFile: 'sentry.properties'
    }),
]
 
根目录创建文件夹.sentryclirc
[auth]
token=f99aebfed9734d8fa5cc834f80c53a6a6e8a268471e749acbea5c25941115f35
 
[defaults]
org=jiazheng
project=daily-clean
url=https://jz-homer.daojia-inc.com/

homer API

  • error

     homer.error(new Error(111))
  • info

      homer.info('用户aaa')

业务线接入前端异常监控sentry的更多相关文章

  1. [转] vue前端异常监控sentry实践

    1. 监控原理 1.1 onerror 传统的前端监控原理分为异常捕获和异常上报.一般使用onerror捕获前端错误: window.onerror = (msg, url, line, col, e ...

  2. 从无到有<前端异常监控系统>落地

    导火索 有一天一个测试同事的一个移动端页面白屏了,看样子是页面哪里报错了.  我自己打开页面并没有报错,最后发现报错只存在于他的手机,移动端项目又是在微信环境下,调试起来会比较麻烦,最后用他手机调试才 ...

  3. 前端异常监控 - BadJS

    前端异常监控 - BadJS 简介:BadJS 是 web 前端异常监控解决方案,提供一种 web 页面的脚本错误监控.上报.统计.查看等系统化的跟踪解决方案.目前BadJS覆盖了腾讯课堂.公众号.邮 ...

  4. Fundebug前端异常监控插件更新至2.0.0,全面支持TypeScript

    摘要: 是时候支持TS了! Fundebug前端异常监控服务 Fundebug提供专业的前端异常监控服务,我们的插件可以提供全方位的异常监控,可以帮助开发者第一时间定位各种前端异常,包括但不限于Jav ...

  5. Fundebug前端异常监控插件更新至 1.9.0,支持监控 HTTP 慢请求

    摘要: 1.9.0新增 httpTimeout 配置选项,支持监控 HTTP 慢请求,同时修复了记录的 HTTP 响应时间偏小的 BUG. Fundebug提供专业的前端异常监控服务,可以第一时间捕获 ...

  6. 【原】聊聊js代码异常监控

    在平时的工作,js报错是比较常见的一个情景,尤其是有一些错误可能我们在本地测试的时候测试不出来,当发布到线上之后才可以发现,如果抢救及时,那还好,假如很晚才发 现,那就可能造成很大的损失了.如果我们前 ...

  7. 前端性能监控方案window.performance 调研(转)

    1. 业界案例 目前前端性能监控系统大致为分两类:以GA为代表的代码监控和以webpagetest为代表的工具监控. 代码监控依托于js代码并部署到需监控的页面,手动计算时间差或者使用浏览器的的API ...

  8. 前端异常日志监控 - 使用Sentry

    背景 现在的前端项目越来越复杂,在不同的客户端会产生各种在开发人员机器上不会出现的问题.当用户报告一个问题给开发人员的时候,开发人员无法直接定位问题.在此前,听过一次鹅厂的前端人员,他们对QQ里面的网 ...

  9. vue+sentry 前端异常日志监控

    敲代码最糟心不过遇到自己和测试的环境都OK, 客户使用有各种各样还复现不了的问题,被逼无奈只能走到这一步:前端异常日志监控! vue官方文档如下推荐: 就是说, vue有错误机制处理errorHand ...

随机推荐

  1. [面试]Actor模型

    Actor模型 面试中自己说话不利落, 或者自己对知识点认识不全面.在这里进行一下记录. 理论部分都是收集(copy)自网上其他的博客. 什么是Actor模型 参与者模式(英语:Actor model ...

  2. [译]asp-net-core-mvc-ajax-form-requests-using-jquery-unobtrusive

    原文 全文源码 开始项目 项目使用了package.json'文件,添加需要的前端package到项目中.在这我们添加了jquery-ajax-unobstrusive`. { "versi ...

  3. MySQL学习11 - MySQL创建用户和授权

    权限管理 权限管理 我们知道我们的最高权限管理者是root用户,它拥有着最高的权限操作.包括select.update.delete.update.grant等操作.那么一般情况在公司之后DBA工程师 ...

  4. Python+Selenium+Unittest框架使用——Selenium——模拟操作浏览器(三)

    1.浏览器大小的控制 Set_window_size()是控制浏览器大小 Maximize_window()浏览器全屏显示 from selenium import webdriver #导入sele ...

  5. UEFI+GPT安装WIN7,WIN8/WIN10下安装WIN7双系统

    一.BIOS更改 首先来bios更改:我们知道,uefi+gpt引导虽然出来的时间比较长,但是win7还不能完全的支持,所以在使用uefi+gpt安装win7的时候就会出现各种错误!所以我们在安装Wi ...

  6. 移动端,input、textarea滚动至可视区域

    1.一般情况下 在移动端,点击input框之后,会弹出输入键盘.而内容input的内容也会自动滚动到可视区域内. 2.当父元素设置了overflow属性之后 在设置了overflow属性之后,点击in ...

  7. Iterator接口(迭代器)

    目录 前言 原理 方法 异常 Iterator接口(迭代器) 前言 一般遍历数组都是采用for循环或者增强for,这两个方法也可以用在集合框架,但是还有一种方法是采用迭代器遍历集合框架,它是一个对象, ...

  8. Mathematica 2

    如今的数值分析,如果没有高等代数的基础,都不好意思打招呼说自己是 "有数学基础". 高等代数,解决问题的一大神器. 1,初等变换 2,特征值 | A-λE | = | λE - A ...

  9. 初学python之路-day07-数据类型总结

    数据类型的各种使用方法:#1.字符串类型s='abcdef's1=s[0]s2=s[-1]print(s1,s2) #h d 索引取值,正向,反向a = 10b = "20"c = ...

  10. 一场由like引发的事故

    故事背景: 有一张用户级表,数据量在千万级别,而运营人员要查看这张表,其中有一项查询条件为根据“错误类型”(单值)查出所有包含这个类型的数据,而这个数据类型在数据库存放的方式类似于 “1,2,3,4, ...