Sentry 错误监控

git https://github.com/getsentry/sentry

文档 https://docs.sentry.io/ 社区

  • 集成gitlab 一键创建issue
  • 配置邮件通知
  • 配置规则,添加邮件发送条件
  • 配置版本号,为开发和线上配置不同的邮件发送规则
  • sourcemap,直接查看报错js代码片段
//最简单的方式是主动触发:
try {
    doSomething(a[0])
} catch(e) {
    Raven.captureException(e)
}

//window.onerror捕捉异常
window.onerror = function (e) {
    Raven.captureException(e)
}

//在vue里可以使用Vue.config.errorHandler 钩子来捕捉
Vue.config.errorHandler = (err, vm, info) => {
  Raven.captureException(err)
}

//对于接口报错,可以在全局拦截里实现
request.interceptors.response.use(null, error => {
      axiosHelper.error(error)
      Raven.captureException(error)
      return Promise.reject(error)
    })

使用过程中可能遇到的问题

1.采集到的信息不全,没有我们想要的用户信息,如用户guid和phone

解决方案:文档里有提供方法setUserContext(),顾名思义该方法是设置全局上下文,因此我们可以在拿到用户信息后执行一次该方法。

request.interceptors.response.use(null, error => {
      axiosHelper.error(error)
      Raven.setUserContext({
        phone: token.Phone || '',
        guid: token.CustomerGuid || ''
      })
      Raven.captureException(error)
      return Promise.reject(error)
    })

2.当异常信息过多时,在监控后台没有有效的筛选条件,导致我要看指定的异常信息什么困难
解决方案:查询文档发现有新增标签的方法,标签可以帮助我们来筛选异常信息。

Raven.setTagsContext({
   phone: token.Phone || '未登录'
})

3.由于线上的代码都是压缩过的,所以报错时很难定位到具体的哪一行代码出错。

解决方案: 上传sourcemap,sentry会自动匹配源码 https://docs.sentry.io/

搭建自己的sentry服务

由于官方提供的免费服务有一定次数的限制,达到一定限制后想要再使用就需要收费了,但是sentry是开源项目所以我们可以在本地搭建自己的服务,官方页提供了具体的操作步骤。Sentry的搭建

Leave a Reply

Your email address will not be published. Required fields are marked *