Sentry使用
介绍
Sentry 是一个开源的实时错误追踪系统,可以帮助开发者实时监控并修复异常问题。它主要专注于持续集成、提高效率并且提升用户体验。Sentry 分为服务端和客户端 SDK,前者可以直接使用它家提供的在线服务,也可以本地自行搭建;后者提供了对多种主流语言和框架的支持。目前公司的项目也都在逐步应用上 Sentry 进行错误日志管理。
私有化部署
Sentry提供了一套私有化部署的方式,基于Docker来实现快速部署。
Official bootstrap for running your own Sentry with Docker.
环境需求
- Docker 17.05.0+
- Compose 1.23.0+
最低硬件需求
- 至少需要2400M RAM
安装
如果执行默认安装的话,直接clone repo并运行./install.sh
。
通常需要对配置进行修改,包括如下:
- config.yml
- sentry.conf.py
- .env
对接React项目
使用
首先添加SDK
1 | # Using yarn |
2 | $ yarn add @sentry/browser |
3 | |
4 | # Using npm |
5 | $ npm install @sentry/browser |
然后需要在React应用启动的时候初始化Sentry。
Example:
1 | import React from 'react'; |
2 | import * as Sentry from '@sentry/browser'; |
3 | import App from 'src/App'; |
4 | |
5 | Sentry.init({dsn: "https://7758d66d228740dfb4a0de39dc69f255@dev-sentry.mokahr.com/56"}); |
6 | |
7 | ReactDOM.render(<App />, document.getElementById('root')); |
dev-sentry.yourhost.com
替换为自己的sentry url,7758d66d228740dfb4a0de39dc69f255
替换为自己的publickey
然后就可以进行报错的测试了.
Example:
1 | return <button onClick={methodDoesNotExist}>Break the world</button>; |
对接SourceMap
为了安全以及加载性能考虑,一般不会把sourcemap发布到生产环境,所以可以通过把sourcemap上传到sentry的方式来实现错误定位。
Sentry使用Source Map的方式有三种:
- 通过Sentry CLI上传
- 通过Webpack插件上传
- 从生产环境获取
Webpack插件方式
安装
Using npm:
1 | $ npm install @sentry/webpack-plugin --only=dev |
Using yarn:
1 | $ yarn add @sentry/webpack-plugin --dev |
配置CLI 配置
如果需要对CLI的参数进行修改,可以通过修改.sentryclirc
或者env。文档可以查看docs.sentry.io/learn/cli/configuration
通常我们还需要配置
- url sentry 地址
- org 组织名称
- project 项目名称
- token
Example:
1 | [defaults] |
2 | url=https://dev-sentry.mokahr.com/ |
3 | org=moka |
4 | project=react-fk-test |
5 | |
6 | [auth] |
7 | token=e42edc9473294dasdsadsa9fad43b9b899dsdsadsadsadadsada76843e25d |
使用
1 | const SentryCliPlugin = require('@sentry/webpack-plugin'); |
2 | |
3 | const config = { |
4 | plugins: [ |
5 | new SentryCliPlugin({ |
6 | include: '.', |
7 | ignoreFile: '.sentrycliignore', |
8 | ignore: ['node_modules', 'webpack.config.js'], |
9 | configFile: 'sentry.properties', |
10 | }), |
11 | ], |
12 | }; |
通常我们还需要配置
- release 版本名称
- urlPrefix 资源前缀
发布前删除map文件
使用CleanWebpackPlugin
1 | const config = { |
2 | plugins: [ |
3 | new CleanWebpackPlugin({ |
4 | verbose: true, |
5 | cleanAfterEveryBuildPatterns: ['./*.map'], |
6 | }), |
7 | ], |
8 | }; |