利用Sentry监控应用里的前后端

这篇笔记主要记录用Sentry监控应用里的前后端,分别配置应用里的前端和后端并测试是否生效。我用到的Sentry功能点如下

功能点编号 功能名称 功能说明
1 监控应用性能 追踪页面加载时间、接口响应时间、慢请求等性能指标
2 报错监控 捕获并上报前端或后端的异常信息,快速定位到代码位置
3 用户会话复现 自动录制用户点击、输入等操作,报错时可回放用户操作视频
4 用户操作痕迹 记录用户的行为路径,如点击、跳转、输入等操作

新建了应用里的前端和后端项目

用户会话复现

用户操作痕迹,点击 点击 输入 点击 报错

追踪代码报错的位置

还有些其他功能,我没有用到, 如错误关联具体用户,版本控制(Release tracking),知道是哪个版本上线后报错,我用的是免费版。

我们要监控的应用是一个全栈应用,技术栈是MEAN(MongoDB Express React Node),开始配置吧

配置前端项目

进入Sentry控制台, 点击新建项目

因为我的是React, 选择React, 其他我保持默认,比如项目名,是否邮件通知

点击新建项目按钮后就跳到如下页面,里面有配置步骤

来自未来的一张截图 展示配置只要4步

安装@sentry/react 执行安装下
bash 复制代码
pnpm add @sentry/react
接着配置SDK 在main.tsx里配置
tsx 复制代码
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import App from './App.tsx'
import 'react-day-picker/style.css'
import './index.css'
import * as Sentry from '@sentry/react'

Sentry.init({
  dsn: 'https://9c6eccdb37a5555089711d72aa4556fc@o4507231223939072.ingest.de.sentry.io/4509126357483600',
  integrations: [Sentry.replayIntegration()],
  // Session Replay
  replaysSessionSampleRate: 1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.
  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.
})

createRoot(document.getElementById('root')!).render(
  <StrictMode>
    <App />
  </StrictMode>
)
上传Source Maps

这里可以选择自动还是手动,我用的是vite, 我选择自动,执行下面命令, 就会安装执行引导程序

bash 复制代码
npx @sentry/wizard@latest -i sourcemaps

问我用的是自己部署的Sentry还是官方的Sass, 我用的官方免费版,,自动打开sentry网页,因为我已经登录,就让我选择要配置的项目, 这里选择刚才新建的javascript-react项目,选择好了后页面就提示回到控制台,继续执行source-map配置引导程序

问我选择了什么构建工具,我选了vite, 创建了一个.env.sentry-build-plugin

然后配置CI/CD 我选择的是I will do this later(晚点再配), 因为当时给的是Github actions, jinkins, 没仔细看有没有netlify(前端自动部署用的这个),要自己配下

并给出了配置的token, 后面用到

SENTRY_AUTH_TOKEN=sntrys_eyJpYXQiOjE3NDQyNDkzNDMuNTI4NDMxLCJ1cmwiOiJodHRwczovL3NlbnRyeS5pbyIsInJlZ2lvbl91xxxxxx

引导程序结束后有测试验证的流程,

添加测试代码
按照引导程序给出的流程验证,在本地测试和验证
  1. pnpm build 打个包 成功上传source map 到sentry了

  2. 运行应用 测试错误 打完包之后,我们运行应用,去Sentry控制台,发现有报错

可以看到代码提示的错误位置

前端项目配置成功🎉🎉

Tip 配置Github 这样可以在Github看到代码报错位置

上面截图有让我们连接Git Providers, 这样就可以code mapping, 点击Get Started

但是这个测试代码我还没有提交,所以打开的时候 虽然是提示的这个代码位置,但是并没有错误代码

netlify 集成sentry

在这个页面,

给应用里的后端部分配置Sentry

和前端一样的流程,选择NODE.JS, 现在有了经验,大胆点给项目取名叫做dushu-backend

新建项目

选择我用的框架Express

安装@sentry/node

然后来到了下面的界面

配置SDK

安装了后@sentry/node后,配置SDK,在项目根目录新增一个instrument.js

js 复制代码
// Import with `import * as Sentry from "@sentry/node"` if you are using ESM
const Sentry = require("@sentry/node");

Sentry.init({
  dsn: "https://42424cc83b6f7f74c4830f4251f00b8d@o4507231223939072.ingest.de.sentry.io/4509126824951888",
});

在index.js首页引入配置 刚才新建的这个instrument.js 引入要放在最前面

js 复制代码
// IMPORTANT: Make sure to import `instrument.js` at the top of your file.
// If you're using ECMAScript Modules (ESM) syntax, use `import "./instrument.js";`
require("./instrument.js");

// All other imports below
// Import with `import * as Sentry from "@sentry/node"` if you are using ESM
const Sentry = require("@sentry/node");
const express = require("express");

const app = express();

// All your controllers should live here

app.get("/", function rootHandler(req, res) {
  res.end("Hello world!");
});

// The error handler must be registered before any other error middleware and after all controllers
Sentry.setupExpressErrorHandler(app);

// Optional fallthrough error handler
app.use(function onError(err, req, res, next) {
  // The error id is attached to `res.sentry` to be returned
  // and optionally displayed to the user for support.
  res.statusCode = 500;
  res.end(res.sentry + "\n");
});

app.listen(3000);

注意这里,Sentry.setupExpressErrorHandler(app);这句要放在app.post, app.get, app.put...这些控制器后面,错误中间件前面

source-map 配置

同样我们用自动配置

base 复制代码
npx @sentry/wizard@latest -i sourcemaps -sass

SENTRY_AUTH_TOKEN=sntrys_eyJpYXQiOjE3NDQyNTYyOTguNjkzMjAxLCJ1cmwiOiJodHRwczovL3NlbnRyeS5pbyIsInJlZ2lvbl91xxx

添加测试代码
构建项目 后端我们就重新运行下项目 测试代码生效
sentry 后台也有报错信息

这样我们前后端就都配置成功了。 自动构建成功,有错误提醒都会发邮件通知,不想要这个通知,这个我们也可以关掉

相关推荐
—Qeyser2 小时前
用 Deepseek 写的uniapp血型遗传查询工具
前端·javascript·ai·chatgpt·uni-app·deepseek
codingandsleeping2 小时前
HTTP1.0、1.1、2.0 的区别
前端·网络协议·http
小满blue2 小时前
uniapp实现目录树效果,异步加载数据
前端·uni-app
天天扭码4 小时前
零基础 | 入门前端必备技巧——使用 DOM 操作插入 HTML 元素
前端·javascript·dom
慕容静漪4 小时前
如何本地安装Python Flask并结合内网穿透实现远程开发
开发语言·后端·golang
ErizJ4 小时前
Golang|锁相关
开发语言·后端·golang
咖啡虫4 小时前
css中的3d使用:深入理解 CSS Perspective 与 Transform-Style
前端·css·3d
烛阴5 小时前
手把手教你搭建 Express 日志系统,告别线上事故!
javascript·后端·express
良许Linux5 小时前
请问做嵌入式开发C语言应该学到什么水平?
后端
拉不动的猪5 小时前
设计模式之------策略模式
前端·javascript·面试