如何在前端项目里接入Sentry监控系统并通过企业微信通知

本文主要是介绍如何在前端项目里接入Sentry监控系统并通过企业微信通知,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

能不能让用户录个屏过来呀?
用户使用的是什么机型的手机?
用户使用的什么浏览器呀?
用户的网络是什么情况?


线上出现问题时,技术部和业务部同学之间的对话诸如此类…业务同学也很栓Q呀,硬着头皮去问客户信息
客户配合还算好的,如果遇到不配合的客户,还真的是一个头两个大!
黑人问号脸

那么,这时候,接入一套监控系统,真真是有必要极了!!

Sentry 横空出世

Sentry 是一款软件监控工具,可帮助开发人员识别和修复与代码相关的问题。从错误跟踪到性能监控,Sentry 提供代码级可观察性,可以轻松诊断问题并持续了解应用程序代码的运行状况。

Sentry 可以为我们提供的帮助有什么?

错误监控(自动捕获错误,重播用户操作行为等等)
性能监控
发布健康监控

功能多多,其他不多说了,我们直接开整!

写在前边

sentry 分为 sass 版 和 私有化部署。

sass版
是最方便的使用方式, 只需进入 官方注册 激活邮箱并创建项目就可以使用了,但是会有使用数量限制等
0
私有化部署
需要开发者自己使用Python或者Docker进行安装,但胜在数据更加安全,限制少

最终选择哪种方式,可以根据实际的应用场景进行选择,基于我司业务,最终选择了“私有化部署”这种方式,求助了运维同学帮我们搭建了自己的sentry监控平台,然后登录上去,随后有关前端方面的真正的配置就开始了!

一:基础搭建

创建项目

create
成功之后会生成一个搭建指南
指南

根据指南,执行以下操作,具体如下:

安装依赖

yarn add @sentry/vue

SDK配置

import * as Sentry from '@sentry/vue'
Sentry.init({Vue,debug: false, // 调试模式environment: 'development', // 可以调整为一个变量dsn: 'https://xxxx',integrations: [new Sentry.BrowserTracing({tracePropagationTargets: [], // 设置哪些url应该被“分布式跟踪”错误请求routingInstrumentation: Sentry.vueRouterInstrumentation(router),}),new Sentry.Replay(),],tracesSampleRate: 1.0, // 错误上报率replaysSessionSampleRate: 0.1, // 重播会话采样率replaysOnErrorSampleRate: 1.0, // 重播错误采样率release: import.meta.env.VITE_SOURCEMAP_RELEASE,   // 建议从env环境变量中读取
})

下边详细说下重要的几个参数:

environment:实践的时候可以根据具体项目情况将该参数置为变量,这样子的话在sentry后台监控系统里边就能根据这个参数去区分具体是哪个环境发生的错误,也可以进行快速定位和分析
env

dsn:即项目向哪个url发送通知,那么就来源于此
dsn

release :这个至关重要,是上传SourceMap时要用到的参数,是错误代码分析时的统称版本号
release
一般到这来说,错误预警功能算是完成了。
我们可以尝试更改前端页面代码,随便加入一行错误代码,试试看~~

this.abcdef()   // 实则abcdef这个方法是不存在的

运行之后,控制台报错,这时候sentry会监控到这个错误,然后sentry后台也会受到相关通知,如下:
error

我们会发现,虽然能看到这个错误了,但是依旧不知道是在哪一行,而接下来的一步,上传SourceMap 就能帮我们定位到是哪一行代码出错了

二:上传SourceMap

上传方式

使用 @sentry/cli 手动上传 ;
其实就是上边指南中尚未截取的部分,使用npx,按照提示语一步一步进行
sentry/cli
另外一种方式是使用
插件 @sentry/webpack-plugin 或者 @sentry/vite-plugin 上传;

具体需要看项目里使用的打包方式是 webpack 还是 vite,两种大同小异,这里结合我们自己的项目特别介绍一下@sentry/vite-plugin的使用方法

安装依赖

yarn add @sentry/vite-plugin

SDK配置

import { sentryVitePlugin } from '@sentry/vite-plugin'
export default defineConfig(({ mode }) => {const envDir = fileURLToPath(new URL('./environments', import.meta.url))const envParams = loadEnv(mode, envDir)return {envDir,plugins: [sentryVitePlugin({org: 'xxx',project: 'xxxx',url: 'https://xxxxx.com/',include: './dist/js', // 只上传jsignore: ['node_modules', 'vite.config.ts'],cleanArtifacts: true, // 先清理再上传urlPrefix: '~/js', // 线上对应的url资源的相对路径authToken: envParams.VITE_SENTRY_AUTH_TOKEN,release: envParams.VITE_SOURCEMAP_RELEASE,}),],}
})

下边详细说下重要的几个参数:

org:即组织名称,是唯一ID
org

project:即要接入监控系统的项目
project

url:即sentry管理后台平台地址,与dsn相呼应
include:上传SourceMap的路径代码,一般我们只会分析js文件代码
cleanArtifacts:尤其重要,一定要先清洗再上传,否则资源越积越多
urlPrefix:具体路径可查看你的网页控制台打开后的路径是怎样的
urlPrefix
authToken:生成的方式有两种,取决你是采用哪种方式上传的SourceMap。
如果是手动上传使用@sentry/cli,那么会在执行完所有的提示输入后在根目录自动生成一个文件.env.sentry-build-plugin,文件内容如下
token

如果使用插件@sentry/vite-plugin,那么可在sentry管理后台手动生成使用,具体操作如下
authToken
release:上边提到过的,这决定了SourceMap的版本记录

至此,我们点进错误通知后就能直接定位到发生错误的代码了
17
由此我们可以看到是第17行代码发生了错误!

发生了错误之后,肯定是立马解决呀,那么接入通知也是必不可少的,官方提供的是邮件通知,但是在国内办公大环境里邮件查看后并立马回复普及必然是比不上社交软件的回复速度,我司办公常用的沟通软件是“企业微信”,所以接下来就展开说说如何将错误消息通过企业微信通知到处理人!

三:接入企业微信,进行预警通知

方案

WebHooks

警报
首先我们先查看项目中是否已经集成WebHooks,如果暂未集成,需要开启WebHooks~
然后再进行预警规则配置
配置预警规则

企微文档

接下来就是找WebHooks 要配置的 CallBackUrl,填入到上边的图片中。

首先,在企业微信群里边引入一个机器人,然后右键查看机器人配置
机器人
在查看机器人配置说明的时候,查看到 官方文档群机器人配置说明 有对发送的消息格式有要求!
而那边Sentry管理后台配置完这个WebHook 地址后也并未生效,于是,意识到是报文格式不正确,随后进行验证,发现sentry 发送的错误预警的格式如下

{"id": "22","project": "xxx","project_name": "xxx","project_slug": "xxx","logger": null,"level": "error","culprit": "s.created(src/views/aaaaa)","message": "","url": "https://sentry.xxx.com/xxxxx","triggering_rules": ["xxx \u6d4b\u8bd5\u73af\u58831"],"event": {"event_id": "6f76509exxxxxxxxxx2668492f0","level": "error","version": "7","type": "error","fingerprint": ["{{ default }}"],"culprit": "s.created(src/views/aaaaa)","logger": "","platform": "javascript","timestamp": 1706084260.74,"received": 1706084260.906766,"release": "test20240124","environment": "test1","user": { "ip_address": "100.1.1.1" },"request": {"url": "http://192.168.1.1:1111/aaaaa","headers": [["User-Agent","Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1"]]},"contexts": {"browser": {"name": "Mobile Safari","version": "13.0.3","type": "browser"},"device": {"family": "iPhone","model": "iPhone","brand": "Apple","type": "device"},"os": { "name": "iOS", "version": "13.2.3", "type": "os" },"replay": {"replay_id": "844078ccccccccc3e486e63d1e31","type": "replay"},............

查看后发现接收到的报文显然与企微文档中要求的四种格式不符,那么,最快的方法是让后端协助提供一个接口把上边的这个报文转成企微要求的通知格式

随后,当…当…当…当…,我们便成功接收到了错误预警通知,具体如下
企微
Happy Ending!!
end

这篇关于如何在前端项目里接入Sentry监控系统并通过企业微信通知的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/649445

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06