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

一、简介

  • 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 的代码就可以实现对页面脚本异常的监控了。

三、部署(服务端)

四、项目本地测试(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

五、项目打包后测试

补充

  • 如果线上报错无法定位到具体代码, 可以通过 @sentry/cli 解决,新增 .sentryclirc 配置文件进行配置。附:@sentry/cli 使用流程
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Sentry是一个前端监控工具,用于捕获和报告前端应用程序中的错误和性能问题。在React项目中使用Sentry,可以通过在入口文件index.ts中初始化Sentry来开始监控。\[1\]初始化Sentry的代码示例如下: ```javascript import * as Sentry from "@sentry/react"; import { BrowserTracing } from "@sentry/tracing"; Sentry.init({ dsn: "https://[email protected].sentry.io/121", integrations: \[new BrowserTracing()\], release: '0.0.1', tracesSampleRate: 1.0, }); ``` 除了捕获错误,Sentry还可以收集页面性能方面的数据。通过在Sentry.init()中添加`new Integrations.BrowserTracing()`,可以将浏览器页面加载和导航检测作为事务,并捕获请求和其他性能指标。\[2\] Sentry是一个由各种语言的SDK和数据后台服务组成的系统。通过Sentry SDK的配置,可以上报与错误关联的版本信息和发布环境。Sentry SDK还会自动捕获异常发生前的相关操作,以便后续的异常追踪。异常数据上报到数据服务后,会通过过滤、关键信息提取和归纳展示在数据后台的Web界面中。\[3\] Sentry的功能架构如下图所示。 #### 引用[.reference_title] - *1* *2* *3* [基于Sentry的前端性能监控平台搭建与应用](https://blog.csdn.net/xiangzhihong8/article/details/128798778)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡尔特斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值