您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    运用 Sentry 监控你的Spring Boot运用
    时间:2020-11-10 12:42 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    Sentry是一个运用监控系统,可以用于前后端各种技术栈的线上监控和错误剖析,这次我们用它来停止Spring Boot项目的线上日志剖析实际。

    运用 Sentry 监控你的Spring Boot运用

    创立项目

    首先需求依据提示在Sentry中创立好项目,项目平台(platform)可以选择Spring Boot或许Java。

    引入依赖&配置

    Sentry提供了官方的Spring Boot Starter。 

    <dependency> 

      <groupId>io.sentry</groupId> 

      <artifactId>sentry-spring-boot-starter</artifactId> 

      <version>3.1.1</version> 

    </dependency> 

    除此之外,我们还需求配置application.properties,将我们在Sentry中创立的项目密钥(DSN)导入: 

    sentry.dsn=https://key@host/id 

    第一个错误

    编写我们的Controller,尝试抛出一个复杂的异常。 

    @RestController 

    public class HelloController { 

     

      @RequestMapping("/"

      public void test() { 

        throw new IllegalArgumentException("hello world"); 

      } 

    假设之前的配置没有成绩,那么我们就可以在Sentry的「Issue」面板下面看到这个异常信息。

    运用 Sentry 监控你的Spring Boot运用

    点击这个异常即可查看详细信息。可以看到这个异常的一些基本信息,比如说「用户信息(这里未设置)」、「用户环境」、「标签(Tag)」、「调用栈跟踪(StackTrace)」、「日志片(Breadcrumbs)」、「央求Headers」,以及一些用户可以自定义的内容(叫做Context)。

    运用 Sentry 监控你的Spring Boot运用

    这里要引见一下Sentry中的一个概念,首先,在相反中央产生的异常会被归结为一个「Issue」,每次在这个中央产生的异常叫做「Event」。所以在同一个中央触发两次异常,依然只要一个Issue,但是可以在Event页面看到两个事情。

    运用 Sentry 监控你的Spring Boot运用

    自定义用户信息

    既然曾经知道了这个异常,我们也是希望了解是哪位用户触发的异常。Sentry SDK提供了SentryUserProvider,可以用于异常时用户信息的提供,我们只需求配置一个Bean。 

    @Bean 

      public SentryUserProvider sentryUserProvider(){ 

          return () -> { 

              // 实践的用户信息,能够要经过其他方式取得 

              User user = new User(); 

              user.setId("userId"); 

              user.setUsername("张三"); 

              user.setEmail("zhangsan@gmail.com"); 

     

              return user; 

          }; 

      } 

    再次触发异常,我们失掉了用户信息。

    运用 Sentry 监控你的Spring Boot运用

    自定义Tag以便应用Tag挑选异常

    随着异常信息的增多,我们希望可以挑选出一些特定的异常信息,Sentry提供了「标签(Tag)」功用,可以依据标签停止挑选。虽然自带的Tags曾经够多,但是我们还是希望可以依据业务需求自定义一些,当然Sentry SDK提供了BeforeSendCallback,我们可以借此添加一些Tag。 

    @Bean 

     public SentryOptions.BeforeSendCallback beforeSendCallback(){ 

         return (event, hint) -> { 

             event.setTag("name","zhangsan"); 

             return event; 

         }; 

     } 

    可以看到我们的Tag曾经成功地添加了,点击这个Tag可以找到一切含有这个Tag的Event。

    (责任编辑:admin)