错误监控方案 sentry

1,056 阅读2分钟

错误监控系统要做什么?

发现/监控 -> 搜集 -> 存储 -> 分析 -> 报警 -> 定位 -> 最终解决错误。 当错误发生时,我们需要一些辅助信息来帮助我门更快速的定位错误,eg:JS错误类型、错误信息、堆栈、发生的位置及相关代码;错误发生的概率、当前的设备类型、版本等辅助信息。基于上述分析综合实际业务(Electron 分析主进程NodeJS及底层内核库、渲染进程TS)情况选中sentry。

sentry

Sentry是一个开源的错误追踪工具,可以帮助开发人员实时监控和修复系统中的错误。其专注于错误监控以及提取一切事后处理所需的信息;支持几乎所有主流开发语和平台, 并提供了web来展示输出错误。sentry官网:sentry.io/;(当前业务员已经自建[sentry服务])

配置

1.创建项目 - 根据使用语言选择项目类型,eg:Javascript

2.生成密钥

image.png

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'

官网:docs.sentry.io/clients/jav…