Sentry 정보에 애플리케이션 버전 정보를 추가하는 방법

전제



Sentry를 사용하여 오류 정보를 감지하는 응용 프로그램입니다.

사용 언어, ​​프레임워크


  • Java 8
  • Spring Boot (Maven)

  • 개요



    Sentry로 전송되는 오류 정보가 어떤 버전의 애플리케이션에서 발생한 오류인지 확인할 수 있도록 하고 싶습니다.

    장점


  • 발생한 에러의 어플리케이션의 버젼의 특정을 한눈에 알 수 있다.
  • Sentry 화면에서 특정 버전에서 발생한 에러 목록을 다음과 같이 검색할 수 있게 된다.







  • 전제 조건


  • 응용 프로그램 버전이 정의되어 있어야 합니다.
  • 릴리스마다 버전이 업데이트되었습니다.

  • 다음 정의 파일의 <version>를 Sentry로 보냅니다.
    이번에는 버전 정보를 Sentry에 태그로 보냅니다.

    정의 파일



    pom.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmls="~">
         :
        <groupId>com.example</groupId>
        <artifactId>myproject</artifactId>
        <version>100.0.100</version>
         :
    </project>
    

    수정 절차



    다음 순서로 수정합니다.
    1. 종속성 추가
    2. 엔드포인트 추가
    3. 엔드포인트에 표시할 정보 추가
    4. Sentry에 전송 처리 추가

    1. 종속성 추가



    pom.xml
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
        </dependencies>
    

    2. 엔드포인트 추가



    application.yml
    management:
      endpoints:
        web:
          exposure:
            include: "info"
          base-path: "/"
    

    base-path는 환경에 따라 변경하십시오.

    3. 엔드포인트에 표시할 정보 추가



    application.yml
    info:
      application:
        version: @project.version@
    

    여기까지 설정하면 http://localhost:8080/info 에 액세스 하는 것으로 아래와 같이 여기까지의 순서로 설정한 버젼 정보를 확인할 수 있습니다.
    {"application":{"version":"100.0.100"}}
    

    4. Sentry에 전송 처리 추가



    설정 파일: @SpringBootApplication 어노테이션을 설정하는 클래스에 다음 처리를 추가합니다.
    ※ 이미 Sentry에의 송신 처리를 구현하고 있는 경우는 version 관련 처리를 추가해 주세요.
     (인수의 추가와 tag의 송신 부분입니다.)
    ※ 반환값의 형태는
    
      @Bean
      public HandlerExceptionResolver sentryExceptionResolver(
        @Value("${sentry.url:#{null}}") Optional<String> sentryUrl,
        @Value("${info.application.version:#{null}}") Optional<String> appVersion) {
    
        if (sentryUrl.isPresent()) {
          try {
            SentryClient sentryClient = Sentry.init(sentryUrl.get());
            // ここで、タグとしてバージョン情報を追加しています。
            appVersion.ifPresent(s -> sentryClient.addTag("version", s));
          } catch (InvalidDsnException e) {
            LOGGER.warn(e.getMessage(), e);
          }
        }
        return new SentryExceptionResolverImpl();
      }
    

    sentry.urlinfo.application.version 와 같이 application.yml 에 정의하고 있습니다.

    설정 후



    위 설정을 완료한 후 응용 프로그램에서 오류가 발생하면 다음과 같은 version 태그가 표시됩니다.
    버전의 숫자 부분을 클릭하면 시작 부분에서 이점으로 꼽은 검색 결과를 볼 수 있습니다.


    좋은 웹페이지 즐겨찾기