线上bug追踪之Sentry初步尝试(一)

前言

现在的前端项目,如果一旦发布上线,代码一般都会进行混淆、压缩甚至加密,如果线上没有bug跟踪系统,客户端一旦报错,前端就无法及时感知,这个时候就需要使用人员上报,一层层上报到技术这边,技术如果要调试或者获得更具体的信息,就没有办法了,大部分情况下只有一张图片,但光靠一张图片,要追查bug产生的原因,有的时候是蛮困难的,等真正查清楚了,黄花菜都凉了。

没有人可以保证写的代码一定就没有bug,如果一个项目是一个团队写的,那就更不可能了,同样的,再好的QA,在互联网公司紧凑型排期的项目内,都无法保证覆盖率,所以有bug也是正常的。

关键是线上bug如何第一时间感知,分析原因,及时上线,这才是最重要的,这个做好了可以最大限度的降低公司的损失,避免事情进一步恶化,提高技术团队在公司的影响力,也省的每次都要杀一个产品祭天(😂┓( ´∀` )┏😂)。

需求有了,那找解决方案吧,在互联网这个领域,只要有痛点,特别是关于程序员的,肯定早都已经有成熟的方案了。

各种web bug追踪系统

国内这两年比较火的frontjs、fundebug;国外stackoverflow用的trackjs,据说微软和谷歌也有部分系统在用;PayPal、雅虎在用的instabug;Uber、wework用的rollbar;可以部署到自己系统内并且开源免费的sentry。

上述系统除了sentry可以选择自建服务外,其他的大规模商用,都需要钱。

把项目部署到sentry官方的系统内,超过一定规模后,也是收费的,当然好处也很多:炫酷的图表、直观的数据、不需要投入人力去研发、管理数据,反正给足钱(500-5000月),一切你想要的功能,都不是问题。

但很多中小公司,不一定有这方面的预算,我们公司目前就没有这方面的预算,所以自建了sentry系统。

这些线上bug追踪的系统到底解决了什么疼点?

个人的理解,bug追踪系统应该要能解决以下问题

  • [ ] 第一时间通知
  • [ ] 出错的url
  • [ ] 具体的错误文本、类型
  • [ ] 客户端的一些信息(浏览器版本、操作系统、用户行为)
  • [ ] 代码版本(release版本号)
  • [ ] 出错的代码文件(source map)
  • [ ] 还原用户操作

如果上述问题都能解决,那还有什么bug不能及时解决的尼?

接下来会以sentry,作为主体,谈谈如何用sentry搭建bug追踪体系

进入主题阶段

第一步:注册账号、创建项目

为了快速的开始,我们可以利用github账号快速的注册一个sentry的账号,然后创建一个基于VUE(公司用的VUE)【测试的项目】,如下图所示

sentry官网 https://sentry.io

这是创建一个【项目名】为Vue,【选择团队】为test001的vue的项目

第二步:前端部署,手动触发一个异常

按照官方【安装指引】里面给出的代码,把下面代码部署到vue项目中

import Vue from 'vue'
import * as Sentry from '@sentry/browser';
import * as Integrations from '@sentry/integrations';

Sentry.init({
  dsn: 'https://xxxxx@sentry.io/xxx',
  integrations: [new Integrations.Vue({Vue, attachProps: true})],
});

// 触发异常
Sentry.captureException(new Error('第一个错误'))

所有关于javascript项目的前端安装指引 https://docs.sentry.io/platforms/javascript/

打开Chrome浏览器输入http://localhost:8080/index,监控network,就可以看到以下数据

network数据

打开sentry的后台,可以看到已经有信息了(邮箱应该也收到了一封邮件)

默认情况下,sentry记录信息是【按照url】来记录的,比如先刷新Chrome,然后再用Safari打开一次,再看sentry后台统计信息,只有事件+1了,错误并没有加

只有事件+1了,错误并没有加

可以清晰的看到,信息只记录了三次。

这个时候如果变更url,比如输入http://localhost:8080/,sentry就会创建一个新的记录

错误信息一样,url不一样

上面这张图片可以看到,虽然报错的信息是一样的,但是因为url变更了,所以sentry认为是另外一个错误。

下面的信息是sentry收集的各种信息

sentry收集的各种信息

是不是很强大,到目前为止,我们只不过是简单部署了sentry,然后就解决了4个重要的问题

  • [x] 第一时间通知
  • [x] 出错的url
  • [x] 具体的错误文本、类型
  • [x] 客户端的一些信息(浏览器版本、操作系统、用户行为)
  • [ ] 代码版本(release版本号)
  • [ ] 出错的代码文件(source map)
  • [ ] 还原用户操作

后面三个问题,只要简单的为sentry增加一些配置,也可以很快的解决,下一章,我们再来细聊。

线上bug追踪之Sentry release+sourceMap(二)
线上bug追踪之Sentry 定制错误信息(三)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,099评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,828评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,540评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,848评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,971评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,132评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,193评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,934评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,376评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,687评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,846评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,537评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,175评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,887评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,134评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,674评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,741评论 2 351