原文首发于个人博客:https://lonhon.top/上一篇《基础篇》主要介绍了Sentry和基础部署过程。在使用过程中,你会发现Sentry受欢迎的原因:除了简单的监控异常,它还提供溯源、任务分发等一站式服务。本文主要介绍Sentry中比较好的扩展功能,包括:发布控制,分别处理线上和测试环境的异常。可以直接通过SourceMap查看报错的js源码。报警邮件的发送规则。问题与GITHUB/GITLAB相关。各种文档和社区帖子,这篇文章更多的是操作性的东西,代码和图片比较多。准备工作需要安装sentry对应的命令行管理工具sentry-cli,如下:npmi-g@sentry/cli安装完成后可以通过sentry-cli-V查看版本。生成token点击Sentry页面左下角的头像,选择API生成token,记得勾选project:write权限。登录$sentry-cli--urlhttps://myserver/login输入上一步获取的token。如果你使用Sentry的SaaS,你可以不指定urlRelease控件。在开发过程中,我们希望不监听本地环境的异常,测试环境和生产环境的异常是分开的,所以需要Release来进行“异常”的版本控制。创建Releasesentry-clireleases-oorganization-pprojectnewstaging@1.0.1其中staging@1.0.1是我们指定的版本号。-o-p可以在页面左上角看到。现在我们可以通过创建多个版本号来进行异常分类。同时也可以通过页面的“Releases”查看是否创建成功。本地应用Release返回到前端工程,相应的release添加到config中。指定版本后,每次上报的异常都会归类到该版本下。Raven.config(DSN,{release:'staging@1.0.1'}).addPlugin(RavenVue,Vue).install()deleteReleasesentry-clireleases-oorganization-pprojectdeletestaging@1.0.1注意删除一个当releasing,需要处理其下的异常,清除该版本的sourcemap文件。完成以上两步后,可能要等2个小时才能删除,否则会报错:此版本有其他依赖。SourceMap管理目前前端项目基本都是对混淆代码进行压缩,导致sentry捕获的异常栈无法看懂。我们希望哨兵在直接看到异常代码的源码时,需要上传相应的源码和图谱。1.上传SourceMapsentry-clireleases-oorganization-pprojectfilesstaging@1.0.1upload-sourcemapsjs文件所在目录--url-prefix在线资源URI这里需要注意,我们一般压缩公共模块在vendor.js中,此时可能会出现vendor.js.map的文件大小过大,无法上传。目前我的做法是不上传vendor.js和vendor.js.map。PS:切记不要把地图文件传到生产环节,太大不安全……PS:免费服务的文件限制是40MB。2.清空SourceMap文件sentry-clireleasesfilesstaging@1.0.1delete--all也可以选择在version>artifact中逐一点击删除(escape...3.重要的url-prefixurl-prefix可以在线查看js文件的完整路径,有可能static不在根目录下,比如项目在线资源的URI如下:https://www.baidu.com/asset/js/main.mini.js文件的url-prefix在上传的时候要设置成'~/asset/js/',弄了好几天才搞定,反正规则是:~/是网站根目录,后面的路径一定要对应source,错误的源码可以直接在哨兵上看:告警邮件发送规则哨兵默认会把收集到的所有异常发送到告警邮件,有时候我们可能只想在某个版本下接收报警邮件,这种情况下,我们需要删除默认的报警规则,然后创建自定义规则,在项目设置中找到Alerts,左上角的“NewAlertRule”添加并设置报警规则。比较常规的规则引擎,可以自己配置,比较简单。如果不想发送测试版的例外,设置过滤规则为Release:staging。Issue关联GITHUB/GITLABSentry和项目仓库后,可以直接为异常创建一个issue,方便责任认定,顺便提高KPI:-)1.选择WarehouseProjectSettings>IssueTracking选择自己想要的仓库,下面以Github为例。2.关联仓库点击上图中醒目的issue,然后进行Github登录第三方授权。授权完成后,再次点击“CreateNewIssue”,会出现下图。3、在Sentry中创建issue后,可以在我们的GITHUB仓库中查看。如下修改sentry-cli的默认设置。在上面的操作中,你应该会发现,每条命令都需要重复输入一长串-oxxx-pxxxx来指定我们的项目,根本不是DRY。只需在当前用户文件夹中找到.sentryclirc文件并添加默认组织和项目即可。修改后的内容如下:[auth]token=YOURAPITOKEN[defaults]url=serverorg=organizationproject=projectconclusion以上是我目前的情况,使用的功能基本涵盖了常见的场景。当然,我会继续挖掘。如果大家遇到什么问题或者有新发现,也可以给我留言,互相交流。下一篇要写前端异常监控的分类,也就是需要监控哪些异常,敬请期待~
