前端项目接入Sentry监控系统

简介: 本文适合项目需要接入错误监控的小伙伴阅读

一、前言


场景:我们的项目在本地测试时没有问题,but在线上运行就遇到各种奇奇怪怪的问题。相信不少小伙伴应该都遇到过这样的情况,为了减少对用户的影响,引入一个线上监控系统是必不可少的。

方案:对于一些大型的团队,往往会自研一套监控系统。如果团队资源有限引入个第三方的异常监控系统也是一个不错的方案。

常用的有:博睿、神策、sentry本文我们分享下sentry。


二、原题


本文基于:

https://github.com/getsentry/sentry

https://github.com/getsentry/sentry-javascript

https://docs.sentry.io/


效果预览

image.png


文档预览

image.png


可以看出,sdk支持如下语言:

  • JavaScript
  • React-Native
  • Python
  • Ruby
  • PHP
  • Go
  • Rust
  • Java/Kotlin
  • Objective-C/Swift
  • C#/F#
  • C/C++
  • Dart
  • Perl
  • Clojure
  • Elixir
  • Unity
  • Laravel
  • Electron

what sentry

Sentry 是跨平台的应用程序监控,专注于错误报告。

线上版本发生异常回立刻会把报错的路由路径、错误所在文件等详细信息通知给相关人员,然后开发人员就可以利用错误信息的堆栈跟踪快速定位到需要处理的问题。


环境搭建

方式一:

sentry是开源的,如果我们愿意付费的话,sentry给我们提供了方便。省去了自己搭建和维护 Python 服务的麻烦事。


方式二:

自己搭建的话,Sentry 后端服务是基于 Python 和 ClickHouse 创建的,需要自己使用物理机进行搭建。


具体步骤:

私有化部署官方推荐方式是通过Docker和Docker Compose部署。

为简单起见,建议选择使用 Docker 和 Docker Compose  ,以及基于 bash 的安装和升级脚本。

1、安装Docker

下载Docker并进行安装,安装完成之后,系统会提示登录输入dockerid,可以去Docker官网申请一个账号即可。安装成功之后,可以正确的获取版本信息。使用如下命令,即可查看对应的版本:

docker --version
docker-compose --version


2、获取sentry

将Sentry源码克隆到本地,然后执行如下命令:

git clone https://github.com/getsentry/onpremise.git


3、修改sentry配置

step1: 修改docker-compose.yml配置来适应环境,创建一个名为volname的数据卷,通过-v参数可以进行创建,如下:

docker volume create --name=sentry-data && docker volume create --name=sentry-postgres


step2:  编译和标记Docker服务:

docker-compose build


step3: 生成密钥,并将它添加到.env作为SENTRY_SECRET_KEY

docker-compose run --rm web config generate-secret-key


step4: 将生成的秘密串字符复制到docker-compose.yml文件对应中并保存,然后再将生成的key复制到docker-compose.yml文件中。

environment:
    SENTRY_MEMCACHED_HOST: memcached
    SENTRY_REDIS_HOST: redis
    SENTRY_POSTGRES_HOST: postgres
    SENTRY_EMAIL_HOST: smtp
    #添加如下内容
    SENTRY_SECRET_KEY : 'dvw9w+4^%+ypj1z^#e%nt#h8w1i)@it84j+&m1npujr'


step5: 执行如下的命令更新配置

docker-compose run --rm web upgrade


4、启动服务

使用下面的命令启动所有的服务:

docker-compose up -d


页面效果:

image.png


use sentry

1、设置语言和时区点击头像User settings - Account Details的相应菜单设置,刷新后生效

image.png

image.png


2、建个demo

image.png


3、在项目中使用

本地起一个vue项目

# vue cli创建项目
$ vue create vue-sentry-test
# 选择vue-router vue2.x 
# 按照文档安装插件
$ yarn add @sentry/vue @sentry/tracing


配置sentry

// main.js 加入配置
import * as Sentry from '@sentry/vue'
import { BrowserTracing } from '@sentry/tracing'
Sentry.init({
  Vue,
  dsn: 'https://29312c0e8494419e8cdb1eee6e5212e4@sentry.hanyuan.vip/4',
  integrations: [
    new BrowserTracing({
      routingInstrumentation: Sentry.vueRouterInstrumentation(router),
      tracingOrigins: ['localhost', 'my-site-url.com', /^\//],
    }),
  ],
  tracesSampleRate: 1.0,
  release: process.env.SENTRY_RELEASE,
})

# 新建env用于保存release版本号
$ touch .env
$ cat > .env
$ SENTRY_RELEASE="0.0.1"


然后就可以到后台查看我们报错的内容了。

image.png


为了方便查看具体的报错内容,我们需要上传sourceMap到sentry平台。

一般有两种方式 sentry-cli sentry-webpack-plugin方式,这里为了方便采用webpack方式。

image.png


image.png


# 如果要上传源码需安装webpack插件
$ yarn add @sentry/webpack-plugin -D
$ touch .sentryclirc
# 写入配置
$ cat > .sentryclirc
[auth]
token=XXX
[defaults]
url=https://sentry.hanyuan.vip/
org=sentry
project=vue-sentry-test
# webpack配置
$ touch vue.config.js


// vue.config.js
const SentryCliPlugin = require('@sentry/webpack-plugin')
module.exports = {
  configureWebpack: {
    plugins: [
      new SentryCliPlugin({
        include: './dist/js', // 只上传js
        ignore: ['node_modules'],
        configFile: 'sentry.properties',
        release: process.env.SENTRY_RELEASE, // 对应main.js版本号
        cleanArtifacts: true, // 先清理再上传
      }),
    ],
  },
}

执行 $ yarn build 上传后并验证


在react项目中使用也大同小异,我们按需修改即可。


Tips

如何上传后删除sourcemap, 三种方式:


1、命令删除

"scripts": {
   "build": "vue-cli-service build && rimraf ./dist/js/*.map"
 }


2、单独生成map

// vue.config.js
configureWebpack(config) {
     config.output.sourceMapFilename('sourceMap/[name].[chunkhash].map.js')
     config.plugin('sentry').use(SentryCliPlugin, [{
        include: './dist/sourceMap', // 只上传js
        ignore: ['node_modules'],
        configFile: 'sentry.properties',
        release: process.env.SENTRY_RELEASE, // 对应main.js版本号
        cleanArtifacts: true, // 先清理再上传
    }])
}


3、webpack插件清理

$ yarn add webpack-delete-sourcemaps-plugin -D
// vue.config.js
const { DeleteSourceMapsPlugin } = require('webpack-delete-sourcemaps-plugin')
... // plugin
new DeleteSourceMapsPlugin(), // 清理sourcemap
...


三、最后


在我们做技术方案的时候,最好结合团队的实际情况,然后做出取舍,选择最符合实际的方案。

相关文章
|
1月前
|
资源调度 前端开发 JavaScript
构建高效前端项目:现代包管理器与模块化的深度解析
【2月更文挑战第21天】 在当今快速演变的前端开发领域,高效的项目管理和代码组织已成为成功交付复杂Web应用的关键。本文将深入探讨现代前端包管理器如npm, yarn和pnpm的工作原理,以及它们如何与模块化编程实践(例如CommonJS、ES6模块)协同工作以优化开发流程。我们将剖析这些工具的内部机制,了解它们如何解决依赖冲突,提高安装速度,并保证项目的健壮性。同时,本文还将介绍模块化编程的最佳实践,包括代码拆分、重用和版本控制,帮助开发者构建可维护且性能卓越的前端项目。
|
1月前
|
缓存 前端开发 JavaScript
Vite 构建流程大揭秘:快速构建前端项目的秘密武器
Vite 构建流程大揭秘:快速构建前端项目的秘密武器
|
1月前
|
前端开发 JavaScript jenkins
构建高效前端项目:从模块化到自动化
【2月更文挑战第13天】 随着Web技术的不断进步,前端项目的复杂性日益增加。为了确保可维护性和性能,前端工程师必须采用模块化和自动化的策略来优化开发流程。本文将探讨如何使用现代前端工具和最佳实践来构建一个高效的前端项目架构,包括模块打包、代码分割和持续集成等方面。
|
2月前
|
缓存 JavaScript 前端开发
IDEA启动VUE前端项目
IDEA启动VUE前端项目操作流程
|
3月前
|
前端开发 JavaScript 测试技术
探索现代前端工程化工具与流程:提升开发效率和项目质量
探索现代前端工程化工具与流程:提升开发效率和项目质量
探索现代前端工程化工具与流程:提升开发效率和项目质量
|
3月前
|
缓存 前端开发 JavaScript
「零基础」掌握Webpack:10个必学技巧,为前端项目保驾护航!(三)
「零基础」掌握Webpack:10个必学技巧,为前端项目保驾护航!
|
16天前
|
前端开发 应用服务中间件 nginx
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
75 0
|
3月前
|
前端开发 API Docker
web前端开发项目走proxy代理后端接口,构建发布到生产等环境后,如何修改api接口
web前端开发项目走proxy代理后端接口,构建发布到生产等环境后,如何修改api接口
41 0
|
1月前
|
前端开发 JavaScript 测试技术
构建高效前端项目:模块化与组件化策略
【2月更文挑战第25天】 在现代网页开发中,随着用户对于网页性能和交互体验的期待不断提升,前端项目的复杂性也随之增加。为了应对这种复杂性并提高开发效率,本文将探讨模块化与组件化在前端项目中的应用策略。通过分析这两种方法的优势与适用场景,我们将揭示如何利用它们来优化项目结构,提升代码复用率,以及加快开发流程。
26 4
|
1月前
|
前端开发 JavaScript 应用服务中间件
部署前端项目到服务器过程详解
部署前端项目到服务器过程详解
88 0