KO EN

[Spring Boot] Sentry 기본 설정

by 민갤

Back End / Dec 14 2023

Sentry

애플리케이션에서 발생하는 오류를 추적하고 수집하여 분석할 수 있도록 도와주는 소프트웨어 모니터링 도구입니다.

프로젝트 생성

Sentry를 설정할 플랫폼을 선택하고, 프로젝트명과 팀을 지정합니다.

프로젝트가 생성되면 선택한 플랫폼에 Sentry를 설정하는 방법을 친절하게 알려줍니다.

이 글에서는 문서(링크)에서 알려주는 방법으로 Sentry를 설정합니다.

최초 생성 시 화면

Spring Boot를 선택합니다. 스크롤을 내리면 프로젝트명을 설정할 수 있습니다.

Spring Boot 설정 방법

DSN(Data Source Name) 확인하기

클라이언트에서 Sentry로 에러 정보를 전달하기 위해 사용되는 URL입니다.

프로젝트 생성 시 나타난 화면에서 DSN 값을 확인하거나 프로젝트 설정에서 DSN 값을 확인하여 복사합니다.

  • Settings > Projects > 해당 Project > Client Keys (DSN)

DSN Copy

Dependency

이 글에서는 Spring Boot 3과 Kotlin을 사용하고 있습니다.

build.gradle.kts

dependencies {
    implementation("io.sentry:sentry-spring-boot-starter-jakarta:7.0.0")
}

Configure

application.yml

sentry:
    dsn: "${SENTRY_DSN:sentry-dsn}"
    traces-sample-rate: 1.0
    exception-resolver-order: -2147483647
  • dsn
  • 이벤트를 보낼 위치를 설정합니다.
  • 위에서 복사한 DSN 값을 env를 사용하여 작성합니다.
  • 이 값이 설정되어 있지 않으면 환경변수 SENTRY_DSN를 읽습니다.
  • 환경변수도 설정되어 있지 않으면 이벤트를 보내지 않습니다.
  • traces-sample-rate
  • 오류 발생 시 Sentry로 전송되는 트랜잭션의 양을 제어합니다.
  • 0(0%)에서 1(100%) 사이의 숫자를 사용합니다.
  • 예를 들어 0.2를 설정하면 약 20%가 기록되어 전송됩니다.
  • exception-resolver-order
  • 예외 해결 프로그램 순서를 설정합니다. (참고)
  • -2147483647(org.springframework.core.Ordered#HIGHEST_PRECEDENCE)로 설정하면 Spring 예외 처리기에서 처리된 오류는 Sentry로 전송하지 않습니다.
  • 예를 들어 try-catch로 처리된 예외는 Sentry로 전달되지 않습니다.
try {
    throw RuntimeException()    // Sentry로 전달되지 않는다.
} catch (e: Exception) {
    throw CustomException()     // Sentry로 전달된다.
}

Monitoring

설정이 끝나면 Spring Boot에서 오류가 발생할 경우

Spring Boot Error

Sentry로 오류 정보가 수집됩니다.

Sentry Issue

또한 가입한 이메일로도 알림이 옵니다.

필요하다면 슬랙으로 알림이 오도록 설정할 수도 있습니다.

Email Sentry Issue

Timezone 설정하기

좌측 상단 팀명 > User settings > Account Details> Timezone

Sentry Timezone은 기본적으로 UTC입니다. 현지 국가로 변경하면 시간 계산없이 편하게 볼 수 있습니다.

Timezone 설정

Reference

https://docs.sentry.io/product/

Author

민갤

Back-End Developer

꾸잉꾸잉하고 웁니다.