Spring boot 프로젝트에 Sentry 연결하기
Spring

Spring boot 프로젝트에 Sentry 연결하기

Sentry는 에러 추적, 성능 모니터링 플랫폼입니다.

이번에 작업한 프로젝트를 원격 서버에 배포하고 난 뒤 에러가 발생했습니다. nohup 명령어를 사용하고 있어서 nohup.out 파일에 서비스 로그가 찍히고 있었는데, 보기에 매우 불편해서 Sentry를 통해 에러를 잡고 디버깅을 해보려 사용하게 됐습니다.

 

 

Sentry는 애플리케이션 런타임 시에 SDK를 사용해서 데이터를 잡습니다.

Sentry가 Spring boot 프로젝트에서 데이터를 잡기 위해서 SDK를 설치해야합니다. 설치 방법이 두가지인데, 그 중에서 gradle plugin으로 추가하는 방법을 선택했습니다. 이 방법을 사용하면 Sentry 플러그인이 Spring boot 프로젝트에 적절한 의존성을 추가해준다고 합니다.

plugins {
	id "io.sentry.jvm.gradle" version "4.7.1"
}

 

Sentry 공식 문서에는 Spring boot를 사용하는 경우 logging framework를 함께 사용하는게 권장된다고 하는데, 그 이유에 대해서는 추가적으로 글을 올리겠습니다.

 

 

Sentry 프로젝트 생성

Sentry를 사용하려면 Sentry에 가입해야합니다. 가입한 후 sentry.io 사이트에 접속하면 아래와 같은 화면이 보입니다.

 

 

내 프로젝트와 Sentry를 연결하려면 프로젝트를 생성하고, DSN 코드를 발급 받아야합니다.

Create project 버튼을 클릭해서 프로젝트를 생성합니다.

Spring boot 프로젝트와 연결시킬 것이기 때문에 Spring boot 아이콘을 선택해줍니다.

 

 

프로젝트가 생성되면 아래와 같이 프로젝트 목록에 보이는 걸 확인할 수 있습니다.

 

 

Sentry 프로젝트로 이벤트 보내기

프로젝트를 생성하면 자동으로 DSN 주소를 할당해 줍니다. DSN은 Sentry SDK가 이벤트를 보낼 위치입니다.

Project Settings > Client Keys 에 DSN 값이 있습니다.

 

 

DSN 주소는 application.yml 파일에 설정해주면 됩니다.

sentry:
  dsn: #sentry dsn 주소
  tracesSampleRate: 1.0
  environment: production
  release: pinterest-clone-proj-v1

어떤 읽기 요청에 대해서도 허용되지 않고 새로운 이벤트 데이터 전달만 허용하기 때문에 DSN 주소는 공개되어도 안전하다고 합니다.

 

 

Sentry SDK는 error, exception, crashes, transaction 등 애플리케이션으로 발생하는 모든 문제를 실시간으로 수집합니다.

그리고 데이터를 Sentry 프로젝트에 이벤트로 보냅니다. 이벤트는 문제와 관련된 전체 데이터를 말한다고 볼 수 있습니다.

기본적으로는 처리되지 않은 Exception만 Sentry로 보내집니다.

 

 

연결 확인

에러를 발생시켜서 이슈가 추가된 걸 확인해봅시다.

실제 프로젝트 내 코드에서 에러 발생 위치를 확인할 수 있습니다.

 

 

참고사이트

[SpringBoot] 에러 로그 모니터링 with Sentry

Spring Boot | Sentry for Spring-boot

Data Source Name (DSN)

Event Data

Releases

Environments