Sentry
是一个开源的错误追踪工具,能够帮助开发人员实时监控和修复系统中的错误。其专一于错误监控以及提取一切过后处理所需的信息;支持几乎全部主流开发语言(JS/Java/Python/php
)和平台, 并提供了web来展现输出错误。
sentry官网:https://sentry.io/php
sentry
是一个开源的工具,能够自行搭建。
官方支持两种安装和运行 Sentry
服务器的方法,Docker
和 Python
。推荐使用 Docker
。
固然,对于刚开始接触 sentry
的同窗,也能够直接使用官方提供的免费服务,可是有一些限制。
下面先来介绍一下利用官方的免费服务,在前端项目中如何使用 sentry
。前端
sentry
的官网注册一个帐号。注册完选择新建一个项目,sentry
支持多种框架,在其中选择 vue
建立项目。我建立了一个名为test的项目。sentry
。能够经过 cdn
或者 npm
引入。咱们采用 npm
引入。引入的时候须要给 init
函数传递一个 dsn
参数。这个参数惟一指定了咱们刚才建立的项目,在建立项目的时候系统会自动生成。若是不传这个参数,sentry
不会发送错误。// main.js import * as Sentry from '@sentry/browser'; import * as Integrations from '@sentry/integrations'; // 在生产环境中让sentry报错 process.env.NODE_ENV === "production" && Sentry.init({ dsn: 'https://1111a5bc59b54778b75f4e3a92f2e462@sentry.io/1447145', integrations: [ new Integrations.Vue({ Vue, attachProps: true, }), ], });
在项目跟目录下增长.sentryclirc文件,其中的token能够在左上角头像里的api keys里面获取。vue
[auth] token="your token" [defaults] url = https://sentry.io org = "your org" project = test
而后咱们在代码里制造一个错误,就可让 sentry
捕获了。本地如何模拟线上环境访问dist下的文件呢?须要装一个 http-server
,在dist文件夹下启动一个http服务就能够了。python
npm i http-server cd dist http-server -p 8888
注意:sentry捕获到的错误不会在打印在控制台中。webpack
在network中能够看到,sentry
发送了一个错误请求,请求参数以下:git
接下来咱们就能够在后台看到刚才上传的错误信息,同时 sentry
也会给你的邮箱发送一封错误邮件。github
在后台找到咱们的test项目,点击进去就能看到多了一条错误信息。
点击信息能够进入信息详情进行查看。
可是这个错误信息是压缩后的,不能定位到代码的实际位置。使用意义不大,所以须要上传 source-map
。web
上传的方式有多种。能够经过 sentry-cli
经过命令行的方式来上传 source-map
,可是须要手动上传。也能够采用 webpack-plugin
这个插件,能够在 build
的同时自动上传 source-map
。本文采用自动上传策略。docker
项目配置:数据库
// webpack.prod.conf const SentryCliPlugin = require("@sentry/webpack-plugin"); plugins:[ new SentryCliPlugin({ include: "./dist", release: process.env.RELEASE_VERSION, configFile: "sentry.properties" }) ]
// main.js Sentry.init({ dsn: "https://4ec86726f2ba40338f66837c6b959eed@sentry.io/1447158", integrations: [ new Integrations.Vue({ Vue, attachProps: true }), new Integrations.RewriteFrames() ], release: process.env.RELEASE_VERSION });
// prod.env.js "use strict"; const release = "test-1"; process.env.RELEASE_VERSION = release; module.exports = { NODE_ENV: '"production"', RELEASE_VERSION: `"${release}"` };
须要保证 plugins
和 Sentry.init
两个配置中的 release
版本号相同,这样的话 sentry
才能将 source-map
文件一一对应上。
修改完以后咱们从新build一下项目,build的过程比较慢:
以后咱们去后台能够看见在版本中多了一个 test-1
版本,也就是咱们刚刚上传的版本。
点进去能够看见咱们刚才上传的 source-map
文件。
这时咱们从新触发一次错误,就能够看到具体的出错位置了。
在设置->集成里面能够设置 sentry
关联各类服务,如 github、jira
等。关联上 github
后,能够直接为该异常建立issue。
这样在该异常的详情页就能够建立issue到 sentry
这个仓库了。
建立时能够选择仓库,名称,详情及指定给谁:
打开 github
,在 sentry
这个仓库下,发现多了一个issue,就是刚才咱们建立的。
在咱们向 github
提交 commit
的时候,若是加上了异常的id,例如这样:
git commit -m 'Fixes TEST-3'
这样在下次发版 build
的时候,sentry
会自动将该异常的状态从 unresolved
变成 resolved
,并会给出本次提交的 diff 地址。
官方给出的有两种方法能够自行搭建sentry:
推荐使用docker。下面来介绍一下经过docker如何搭建sentry。
首先须要下载docker
mac桌面版地址:https://hub.docker.com/editions/community/docker-ce-desktop-mac
其中已经集成了docker命令行、docker-compose等。
而后须要去github拉取 Sentry On-Premise,这个是官方提供的经过docker安装sentry的仓库,里面介绍了如何一步一步搭建sentry。
建立服务步骤:
cd onpremise // 建立本地数据库 docker volume create --name=sentry-data && docker volume create --name=sentry-postgres // 建立环境配置文件 cp -n .env.example .env // 构建docker服务 docker-compose build // 产生秘钥,将其做为SENTRY_SECRET_KEY加入到.env文件中 // 建立数据库,用交互式的提示生成管理员帐号 docker-compose run --rm web upgrade // 启动全部服务 docker-compose up -d
若是过程一切正常的话,如今访问localhost:9000就能看到sentry的登陆页面了,用刚才生成的管理员帐号密码登陆便可。
之后的操做就跟上面介绍的同样了。
'{PROTOCOL}://{PUBLIC_KEY}:{SECRET_KEY}@{HOST}/{PATH}{PROJECT_ID}' //相似这样,把它放在sentry.init中的dsn便可 http://4cf10206ef27409bbb64f68b:a67a0eb5513e43ab883af3f3@localhost:9000/2