[Spring Boot] Sentry 기본 설정
Spring BootSentry
애플리케이션에서 발생하는 오류를 추적하고 수집하여 분석할 수 있도록 도와주는 소프트웨어 모니터링 도구입니다.
프로젝트 생성
Sentry를 설정할 플랫폼을 선택하고, 프로젝트명과 팀을 지정합니다.
프로젝트가 생성되면 선택한 플랫폼에 Sentry를 설정하는 방법을 친절하게 알려줍니다.
이 글에서는 문서(링크)에서 알려주는 방법으로 Sentry를 설정합니다.
DSN(Data Source Name) 확인하기
클라이언트에서 Sentry로 에러 정보를 전달하기 위해 사용되는 URL입니다.
프로젝트 생성 시 나타난 화면에서 DSN 값을 확인하거나 프로젝트 설정에서 DSN 값을 확인하여 복사합니다.
- Settings > Projects > 해당 Project > Client Keys (DSN)
Dependency
이 글에서는 Spring Boot 3과 Kotlin을 사용하고 있습니다.
build.gradle.kts
kotlin
dependencies {
implementation("io.sentry:sentry-spring-boot-starter-jakarta:7.0.0")
}
Configure
application.yml
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로 전달되지 않습니다.
kotlin
try {
throw RuntimeException() // Sentry로 전달되지 않는다.
} catch (e: Exception) {
throw CustomException() // Sentry로 전달된다.
}
Monitoring
설정이 끝나면 Spring Boot에서 오류가 발생할 경우
Sentry로 오류 정보가 수집됩니다.
또한 가입한 이메일로도 알림이 옵니다.
필요하다면 슬랙으로 알림이 오도록 설정할 수도 있습니다.
Timezone 설정하기
좌측 상단 팀명 > User settings > Account Details> Timezone
Sentry Timezone은 기본적으로 UTC입니다. 현지 국가로 변경하면 시간 계산없이 편하게 볼 수 있습니다.
Reference
https://docs.sentry.io/product/