Sentry 监控部署与使用(详细流程)

news2024/11/22 18:06:48

一、简介

  • Sentry 是一个开源的实时错误监控的项目,它支持很多端的配置,包括 web 前端服务器端移动端游戏端

    基于 Django 构建的现代化的实时事件日志监控、记录和聚合平台,主要用于如何快速的发现故障。更快地解决错误和性能问题,并从前端到后端不断了解他们的应用程序运行状况。

    支持各种语言,例如 pythonocjavanodejavascript 等。也可以应用到各种不同的框架上面,如前端框架中的 vueangularreact 等最流行的前端框架。

    提供了 githubslacktrello 等常见开发工具的集成。可以自己安装并且搭建 sentry 应用。

  • 优点

    • 产品体验好,功能完善
    • 接入工作量少
    • Sentry 专注于 ErrorExceptionCrash
    • 提供丰富的上下文信息
    • 自动合并重复问题
    • 主动邮件告警
  • 缺点

    • 部署依赖繁多官方提供的 Github 仓库,基于 DockerDocker Compose 确实可以一键部署、开箱即用。不过,当看到 30 个容器列在面前时,还是会觉得踌躇。
    • 需自行保障高可用比如:ZooKeeperNginxRedis 等,要自行运维这些组件并保障高可用,并不是容易的事情。
    • 如果大量的错误信息涌向 Sentry 服务器,会导致 Sentry 响应严重延迟

二、其他监控方案

  • Logan

    美团点评集团推出的大前端日志系统,包括日志的收集存储,上报分析以及可视化展示。提供了五个组件,包括 端上日志收集存储Web SDK后端日志存储分析 Server日志分析平台 LoganSite

  • ARMS

    阿里的一个前端数据监控的服务,专注于对 Web 场景Weex 场景小程序场景 的监控,从 页面打开速度(测速)页面稳定性(JS Error)外部服务调用成功率(API) 这三个方面监测 Web小程序页面 的健康度,似乎是收费的。

  • fundebug

    专业的应用错误监控平台,及时发现 Bug,提高 Debug 效率。目前支持 前端 JavaScript微信小程序微信小游戏支付宝小程序React NativeJava 以及 Node.js 等,是一个挺完善的前端错误日志服务,也是收费的。

  • BadJS

    腾讯团队的一个开源项目,针对 web 前端异常监控解决方案,提供一种 web 页面的脚本错误监控、上报、统计、查看等系统化的跟踪解决方案。

  • 目前比较流行的异常监控方案有以上几种,但从易用性、免费与否、以及项目是否开源等方面考虑, Sentry 是个非常不错的选择,服务端部署也非常简单,当然服务端也可以直接使用 Sentry 提供的,网站客户端引入 sentry sdk 并插入初始化 Sentry 的代码就可以实现对页面脚本异常的监控了。

三、部署(服务端)

  • 官网提供了两种部署方案:docker 方式python 方式

    • docker 方式 部署操作比较简单,也是 Sentry 官方 比较推崇的方式,直接按 Sentry On-Premise 提供的方式按部就班部署就好了。或者可直接参考 Docker 部署 Sentry 监控 Django 应用并使用Email+钉钉通知 即可。

    • python 方式 部署相对比较麻烦,但还是比较稳妥,没有 docker 部署的不可控风险等系列问题,可参考:Sentry 官方提供的 Python 安装方式。

  • 部署实战记录

    • docker 部署流程

    • python 部署流程

四、项目本地测试(Vue 项目举例,配置都差不多)

  • Sentry 管理后台创建项目,会出来对应项目类型的接入文档,可以根据需要做下调整。

    image.png

    image.png

  • Vue 项目中引入并配置

    • 安装

      # Using yarn
      $ yarn add @sentry/vue
      
      # Using npm
      $ npm i @sentry/vue
      
    • main.js

      // ======= Vue3
      import { createApp } from 'vue'
      import * as Sentry from "@sentry/vue"
      
      const app = createApp(App)
      
      Sentry.init({
        app,
        dsn: "http://924f490d8b1a4ee38f7e17a25cbab259@10.0.51.147:9000/3"
      })
      
      app.use(...).mount('#app')
      
      
      // ======= Vue2
      import Vue from 'vue'
      import * as Sentry from '@sentry/vue'
      
      Sentry.init({
        Vue,
        dsn: "http://924f490d8b1a4ee38f7e17a25cbab259@10.0.51.147:9000/3",
      })
      
      new Vue({...}).$mount('#app')
      
      
      // ======= 只在线上环境进行错误日志收集
      // process.env.NODE_ENV === 'production' && Sentry.init({...})
      
      // 配置字段补充
      Sentry.init({
        Vue,
        // 客户端密钥,可以通过进入项目 -》右上角设置 -》客户端密钥(DSN) 里面拷贝
        dsn: "http://924f490d8b1a4ee38f7e17a25cbab259@10.0.51.147:9000/3",
        // 项目版本号
        release: '1.0.0',
        // 使用哪些插件,附:http://www.javascriptcn.com/post/203679
        integrations: [new Integrations.BrowserTracing()],
        // 采样率,默认为 0.1,表示采集 10% 的请求,设置为 1.0,表示采集全部请求
        tracesSampleRate: 1.0,
        // 当前环境
        environment: 'production',
        // 发送前回调
        beforeSend(event) {
          // 在发送事件之前修改事件
          return event
        },
        ....
      })
      
    • 随便找个位置,放置一段报错代码

      <template>
        <div>
          <!-- 随便找个图片添加一个点击事件 -->
          <img @click="touchImg" alt="Vue logo" src="../assets/logo.png">
        </div>
      </template>
      
      <script setup>
      import * as Sentry from "@sentry/vue"
      
      // 点击输出
      function touchImg () {
        // 输出一个不存在的对象,强制报错
      
        // 1、检测到报错会自动上报
        // console.log(window.a.b)
      
        // 2、检测到报错,手动上报
        try {
          console.log(window.a.b)
        } catch (error) {
          Sentry.captureException(error)
        }
      }
      </script>
      

      image.png

  • 查看错误日志,下面这两个地方都能查看到错误日志

    image.png

    image.png

    能准确定位到某行代码:

    image.png

五、项目打包后测试

  • 使用 anywhere 模拟正式环境。

    image.png

补充

  • 如果线上报错无法定位到具体代码, 可以通过 @sentry/cli 解决,新增 .sentryclirc 配置文件进行配置。附:@sentry/cli 使用流程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/752994.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue——自定义指令,实现拖拽改变元素的宽度——技能提升

最近在看企业微信时&#xff0c;发现tapd的需求部分&#xff0c;分为左右两部分&#xff0c;左侧可以实现拖拽改变宽度。 感觉这样的实现效果比较好&#xff0c;再联想到之前写绩效结构时&#xff0c;也是同样的左右布局。 如果能实现同样的效果&#xff0c;则算是很好一种体…

【方法】公众号上传的视频不能横屏播放,如何解决?

目录 说明 解决步骤 步骤一&#xff1a;开启微信横屏模式 步骤二&#xff1a;打开手机自动旋转功能 说明 直接用手机打开公众号文章上内嵌的视频&#xff0c;发现只能横屏播放&#xff0c;无法全屏查看。 这个时候学习&#xff0c;尤其是看视频课程的时候无法看清楚全图。…

华为发布大模型时代AI存储新品

7月14日&#xff0c;华为发布大模型时代AI存储新品&#xff0c;为基础模型训练、行业模型训练&#xff0c;细分场景模型训练推理提供存储最优解&#xff0c;释放AI新动能。 企业在开发及实施大模型应用过程中&#xff0c;面临四大挑战&#xff1a; 首先&#xff0c;数据准备时…

数据结构:第五章 树

文章目录 一、树的基本概念1.1树的定义1.2树的基本用语1.2.1结点之间的关系描述1.2.2结点、树的属性描述1.2.3有序树、无序树1.2.4森林1.2.5小结 1.3树的性质 二、二叉树的概念2.1二叉树的定义和基本术语2.2二叉树的性质2.2.1二叉树常考性质2.2.2完全二叉树常考性质 2.3二叉树的…

使用chatgpt过funcaptcha验证码3个人学习记录

funcaptcha 验证码3 通过记录 往期验证码&#xff1a;http://t.csdn.cn/ulgXY funcaptcha1 往期验证码&#xff1a;http://t.csdn.cn/3xMnZ funcaptcha2 funcaptcha 那个公司开发的简要介绍&#xff1a; Funcaptcha是由hCaptcha公司开发的一种人机验证系统。hCaptcha是一家位…

快速排序的非递归实现、归并排序的递归和非递归实现、基数排序、排序算法的时间复杂度

文章目录 快速排序的非递归三数取中法选取key快速排序三路划分 归并排序的递归归并排序的非递归计数排序稳定性排序算法的时间复杂度 快速排序的非递归 我们使用一个栈来模拟函数的递归过程&#xff0c;这里就是在利用栈分区间。把一个区间分为 [left,keyi-1][key][keyi1,right…

机器学习(13)--支持向量机

目录 一、支持向量机概述 二、Sklearn中的SVM概述 三、线性SVM损失函数 四、sklearn中进行可视化 1、导入模块 2、实例化数据集&#xff0c;可视化 3、网格点制作 4、建立模型并绘制决策边界和超平面 5、常用接口 6、如果数据是环形呢&#xff1f; 五、核函数 1、…

emacs下相对行号的设置

全局设置 全局开启行号显示&#xff1a;global-display-line-numbers-mode t 并设置 display-line-numbers-type的样式: relative 相对 配置代码如下: (use-package emacs:ensure t:config (setq display-line-numbers-type relative) (global-display-line-numbers-mode t)…

校园跑腿小程序如何运营赚钱,方法其实很简单

校园跑腿小程序是一种以满足大学生的校园内外需求为主要目标的创业方式。下面将详细介绍校园跑腿小程序的运营方式&#xff0c;包括市场调研、产品设计、用户获取与留存、服务流程管理等方面。 市场调研&#xff1a; 在开始校园跑腿小程序的运营之前&#xff0c;进行充分的市…

2023年经典【自动化面试题】附答案

一、请描述一下自动化测试流程&#xff1f; 自动化测试流程一般可以分为以下七步&#xff1a; 编写自动化测试计划&#xff1b; 设计自动化测试用例&#xff1b; 编写自动化测试框架和脚本&#xff1b; 调试并维护脚本&#xff1b; 无人值守测试&#xff1b; 后期脚本维…

【C++从0到王者】第九站:String基本介绍及使用

文章目录 一、String的基本使用二、String构造相关的成员函数1.String构造函数2.String析构函数3.operator运算符重载4.String增删查改之增5. operator[]运算符重载 三、String迭代器1.迭代器介绍2.string中迭代器的作用3.迭代器跟容器结合4.反向迭代器5.const修饰的迭代器 四、…

华夏ERP在虚拟机Ubuntu上的安装(测试实例)

1.虚拟机软件VirtualBOX 7.0 2.Ubuntu 版本 3.宝塔面板安装 百度搜索宝塔面板&#xff0c;按官网提示进行安装。下面截图是官网示例。 if [ -f /usr/bin/curl ];then curl -sSO download.cnnbt.net/install_panel.sh;else wget -O install_panel.sh download.cnnbt.net/install…

python接口自动化(三十七)-封装与调用--读取excel 数据(详解)

简介 在进行软件接口测试或设计自动化测试框架时&#xff0c;一个不比可避免的过程就是: 参数化&#xff0c;在利用python进行自动化测试开发时&#xff0c;通常会使用excel来做数据管理&#xff0c;利用xlrd、xlwt开源包来读写excel。例如&#xff1a;当我们登录的账号有多个的…

报错400是什么怎么解决呢?

首先要了解400错误是什么错误&#xff1a; HTTP状态码400表示"错误请求"。它是一种客户端错误状态码&#xff0c;表示服务器无法理解请求的语法或参数。当服务器收到一个无效的请求时&#xff0c;通常会返回400错误码。这可能是由于请求中缺少必要的参数、参数格式错…

亚马逊买家号怎么留评

要在亚马逊上留下产品评价&#xff0c;需要买家号有留评权限才行。以下是留评论的步骤&#xff1a; 1、登录亚马逊账号&#xff1a;使用您的买家账号和密码登录到亚马逊的网站或移动应用程序。 2、找到购买的产品&#xff1a;在亚马逊的网站或应用程序中&#xff0c;找到您购…

el-ment ui 表格组件table实现列的动态插入功能

在实际需求中我们经常遇到各种奇葩的需求&#xff0c;不足为奇。每个项目的需求各不相同&#xff0c;实现功能的思路大致是一样的。 本文来具体介绍怎么实现table表格动态插入几列。 首先实现思路有2种&#xff0c; 1. 插入的位置如果是已知的&#xff0c;我知道在哪个标题的…

WEB学习笔记3

输入输出语句 外部js&#xff1a;这种写法有一个不好的地方就是&#xff0c;两个不同的开发人员在使用不同的js写function的时候有可能造成重复&#xff0c;导致程序紊乱。在这推荐一种用json格式方式书写js函数的方法 变量&#xff1a; 变量命名规范&#xff1a; let和var的区…

DolphinScheduler使用问题记录

1.资源中心 功能板块 出现 storage not startup #问题原因 提示&#xff1a;“storage not startup”&#xff0c;顾名思义&#xff1a;未启用存储 #解决方式 1. 修改两个 common.properties 文件&#xff1a; api-server/conf/common.properties worker-server/conf/common.p…

分布式运用——存储系统Ceph

分布式运用——存储系统Ceph 一、Ceph 介绍1.Ceph 简介2、存储基础2.1 单机存储设备2.2 单机存储的问题2.3 商业存储解决方案2.4 分布式存储&#xff08;软件定义的存储 SDS&#xff09;2.5 分布式存储的类型 3.Ceph 优势3.1 高扩展性3.2 高可靠性3.3 高性能3.4 功能强大 4.Cep…

自动化测试——selenium(完结篇)

自动化测试——selenium&#xff08;完结篇) 文章目录 自动化测试——selenium&#xff08;完结篇)一、元素操作方法二、浏览器操作方法三、获取元素信息操作四、鼠标操作 &#xff08;需要实例化鼠标对象&#xff09;4.1 鼠标右键及双击4.2 鼠标拖拽4.3 鼠标悬停 【重点】 五、…