错误监控系统要做什么?
发现/监控 -> 搜集 -> 存储 -> 分析 -> 报警 -> 定位 -> 最终解决错误。 当错误发生时,我们需要一些辅助信息来帮助我门更快速的定位错误,eg:JS错误类型、错误信息、堆栈、发生的位置及相关代码;错误发生的概率、当前的设备类型、版本等辅助信息。基于上述分析综合实际业务(Electron 分析主进程NodeJS及底层内核库、渲染进程TS)情况选中sentry。
sentry
Sentry是一个开源的错误追踪工具,可以帮助开发人员实时监控和修复系统中的错误。其专注于错误监控以及提取一切事后处理所需的信息;支持几乎所有主流开发语和平台, 并提供了web来展示输出错误。sentry官网:sentry.io/;(当前业务员已经自建[sentry服务])
配置
1.创建项目 - 根据使用语言选择项目类型,eg:Javascript
2.生成密钥
3.项目引用
// main.js
import * as Sentry from '@sentry/browser';
import * as Integrations from '@sentry/integrations';
// 在生产环境中让sentry报错
process.env.NODE_ENV === "production" && Sentry.init({
dsn: 'https://your dns',
integrations: [ Integrations.BrowserTracing() ]
});
4.以上配置完成 就可以正常上报错误;
经过以上步骤,错误已经被监控,但是可读性较差,因为代码是压缩混淆过的,不能精准的定位错误信息,所以我们需要上传Sourcemap配合查验。
Sourcemap 上传
1. sentry后台配置authToken
2. webpck插件
为方便项目生成map文件,更新自动化配置,项目下安装插件
npm i @sentry/webpack-plugin -D
然后在根目录下新建 .sentryclirc
[defaults]
### 你的域名
defaults='your.url'
### 组织团队名默认是 sentry
org=sentry
### 项目名称
project=your app
### 步骤1创建的
[auth]
token=your token
项目中配置插件
const SentryWebpackPlugin = require('@sentry/webpack-plugin');
if (process.env.NODE_ENV !== 'development') {
// 注意只在生成环境开启,不然npm run dev也会上传
new SentryWebpackPlugin({
release: Date.now(), // 唯一标识,可以用其他的比如 hash
include: './build', // 要上传的文件夹 有的叫 dist
ignore: ['node_modules', 'config-overrides.js'],
configFile: '.sentryclirc' // 默认同级,如果不一样需要用node path模块处理一下 }); }
其他,配置邮件
可配置邮件通知、钉钉机器作为报警邮件
后台配置文件Docker-compose.yml
SENTRY_EMAIL_HOST: 'smtp.baidu.com'
SENTRY_EMAIL_USER: '***@baidu.com'
SENTRY_EMAIL_PASSWORD: '*****' # 填写自己的密码
SENTRY_SERVER_EMAIL: '***@baidu.com'
SENTRY_EMAIL_PORT: xxx
SENTRY_EMAIL_USE_TLS: 'true'