nestjs 集成 sentry

998 阅读1分钟

最近做的一个公司项目,使用 nestjs 作为服务端,为了收集服务报错,尝试了一下接入 sentry。整个流程也是比较简单,sentry 的功能也真的很强大。

开始之前需要一个 sentry 账号。

创建项目

首先选择一个开发平台,这里没有 nestjs(可能还是比较小众吧),我们可以直接选择 node;然后填写项目名称,owner 等信息

B9E2B630-1AD3-4465-A241-38E1B763990E.png

客户端集成

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app/app.module';
import * as Sentry from '@sentry/node';
import CONFIG from '@Root/config';

const { APP_PORT, APP_ENV } = CONFIG;

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  // 本地开发环境报错不上传至 sentry
  if (APP_ENV !== 'dev') {
    Sentry.init({
      dsn: 'https://yourSentry.com/6',
      tracesSampleRate: 1.0,
      environment: APP_ENV,
    });
  }

  await app.listen(APP_PORT);
}

bootstrap();
  • dsn:指定 sentry SDK 向哪里发送这些异常事件
  • tracesSampleRate:跟踪采样率,为 0 到 1 之间的数字。假如为 0.2,大约 20% 的错误将被记录和发送
  • environment:隔离不同环境,方便查询

68110814-B059-474E-BD4E-408B96EDDA84.png

错误收集

通过以上配置基本可以上报错误了,然后通过 sentry 控制台看到相关的错误信息及代码定位。 22BA9342-E102-4DC2-9E9C-0A3DE50A591A.png

0E4A3B3F-8F46-4A12-9AD2-30550B7960C9.png

🌴 注意:如果是前端项目,需要上传 sourceMap 至 sentry 服务器, 但是 Node 项目一般没有源码转换(压缩、合并文件和转译),并不需要这样操作