当前位置: 首页 > news >正文

错误监控——自建sentry

创建sentry服务端

下载最新版本镜像

地址:https://github.com/getsentry/self-hosted/releases/tag/22.8.0

运行批处理文件
./install.sh
启动docker-compose环境
docker-compose up -d
打开本地服务

http://localhost:9000/

登入账号

进行客户端配置

以React为例

首先安装配置环境
npm install --save @sentry/react @sentry/tracing
将sentry配置放入项目中

时机应当尽可能的早

import React from "react";
import { createRoot } from 'react-dom/client'
import * as Sentry from "@sentry/react";
import { BrowserTracing } from "@sentry/tracing";
import App from "./app.jsx";

Sentry.init({
  dsn: "http://0324e0c287304017bf1cba0deabf5445@localhost:9000/4",
  integrations: [new BrowserTracing()],
  release: 'test2',
  tracesSampleRate: 1.0,
});

const container = document.getElementById('root');
const root = createRoot(container); 
root.render(<App tab="home" />);

此时报错已经可以上报给服务器了


错误追踪

sentry-cli环境配置

由于我们下面会用到sentry-cli,为了避免多次在命令行传入信息,先来进行环境配置

安装sentry-cli框架

npm i @sentry/cli -g 

npm install sentry-cli-binary -g

获取API Token

进入 <你的服务器地址>/settings/account/api/auth-tokens/
点击创建新API Token

NOTE:记得勾选project:write

登录sentry

sentry-cli login

此时控制台显示以下信息,token处填入上一步获取到的token即可

Sentry server: sentry.io
Open browser now? [y/n] y
Enter your token:

输入完成之后会给你存储位置

Stored token in /Users/xxx/.sentryclirc

添加sentry配置
打开上一步存储的位置,进行信息补充

  • url是sentry服务的地址
  • org是个人面板种组织名称
  • project是项目名称
[auth]
token=xxx

[defaults]
url=<你的服务器地址>
org=<你的组织地址>
project=<你的项目地址>

上传sourceMap

由于生产环境发布的内容往往已经经过了压缩,因此上报的信息是无法对应到源码行列号的。可以通过往sentry服务端上传sourceMap的方式来进行错误追踪

方案一:直接上传

创建release

sentry-cli releases -o sentry new -p react test1

参数说明:

  • -o:组织的名字
  • -p:项目的名称
  • test1: 这个是release的名称

以上的组织名称、项目名称、release名称都是自己起的。按照实际情况填写就可以了。因为项目相关信息填写多处用到,可以直接配置sentry-cli。参见sentry-cli部分

发布sourceMap

sentry-cli releases files test1 upload-sourcemaps --url-prefix "~/js" --validate ./dist/js

此时该项目的错误上报可以追踪到具体的行列号了

方案二:配置webpack插件

 devtool: 'source-map',
 plugins: [
    new SentryWebpackPlugin({
      // sentry-cli configuration - can also be done directly through sentry-cli
      // see https://docs.sentry.io/product/cli/configuration/ for details
      authToken: process.env.SENTRY_AUTH_TOKEN,
      org: "sentry",
      project: "react",
      release: "test2",
      include: ".",
      ignore: ["node_modules", "webpack.config.js"],
    })
 ]

将该配置放在生产环境下,打包后可自动上传sourceMap

相关文章:

  • 【2022-09-14】JS逆向之某团影视(jsjiami-v5)
  • Jmeter工具的使用
  • PVE系列教程(十六)、安装ubuntu server22.04系统
  • 【牛客】WY49数对,JZ65不用加减乘除做加法
  • C语言《超详细解析内存函数》
  • SpringBoot使用Redisson 实现分布式锁
  • 微服务初级入门实战分布式项目构建
  • tessafe.sys是病毒吗?tessafe.sys不兼容驱动程序如何解决?
  • Android实现ViewPager适配器kotlin简单实现
  • 点云深度学习系列博客(四):PointNet代码精讲
  • 基于SSH开发HR(人力资源管理系统)简单工作流程系统 课程设计 大作业 毕业设计
  • Promise详解与基础实现(Promise/A+规范)
  • 封装和static
  • LF-YOLO: A Lighter and Faster YOLO for Weld Defect Detection of X-ray Image
  • JavaScript随手笔记---保留小数位
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • CentOS7 安装JDK
  • DataBase in Android
  • EOS是什么
  • ES6语法详解(一)
  • Gradle 5.0 正式版发布
  • HTTP中GET与POST的区别 99%的错误认识
  • MQ框架的比较
  • MySQL QA
  • MySQL几个简单SQL的优化
  • Redux系列x:源码分析
  • SpiderData 2019年2月13日 DApp数据排行榜
  • storm drpc实例
  • vagrant 添加本地 box 安装 laravel homestead
  • Vue 重置组件到初始状态
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 前端面试之闭包
  • 如何在GitHub上创建个人博客
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 数据可视化之 Sankey 桑基图的实现
  • 探索 JS 中的模块化
  • 线性表及其算法(java实现)
  • linux 淘宝开源监控工具tsar
  • 从如何停掉 Promise 链说起
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 进程与线程(三)——进程/线程间通信
  • #14vue3生成表单并跳转到外部地址的方式
  • #Linux(权限管理)
  • (2)STM32单片机上位机
  • (2020)Java后端开发----(面试题和笔试题)
  • (C++20) consteval立即函数
  • (poj1.3.2)1791(构造法模拟)
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (动态规划)5. 最长回文子串 java解决
  • (二)fiber的基本认识
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (剑指Offer)面试题34:丑数
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (删)Java线程同步实现一:synchronzied和wait()/notify()