개요
다양한 로그 수집을 알아보다가 최근에 많이 사용하는 sentry을 알게되었습니다. sentry가 무엇이고 어떻게 사용하는지 코드로 함께 알아보겠습니다.
Sentry란?
Sentry란 Application 에러 트래킹, 성능 모니터링을 제공해주는 서비스입니다. 에러가 발생하면 알림을 받을 수 있고 에러에 대한 상세 정보를 트래킹 해줍니다. 특히 에러 상황을 자세히 알려주기 때문에 디버깅에 유용합니다. 또한 성능 모니터링을 이용해 각 지표들을 쉽게 확인할 수 있습니다.
- 다양한 플랫폼 지원
아무래도 하나의 기업은 몇 가지 기술이 아닌 수십 가지 기술을 사용할 확률이 높습니다. sentry는 방대한 플랫폼을 지원하기 때문에 어떠한 기술을 사용하여도 모두 호환이 가능합니다.
- 상세한 디버깅 기능 제공
전통적인 로깅 방식은 이슈 디버깅을 할 때 많은 정보를 제공하지 않습니다. 하지만 sentry는 해당 순간의 문맥(context)들을 최대한 많이 저장하여 충돌 분석에 효과적인 정보를 제공합니다.
Sentry 환경 구축하기
- started를 통한 플랫폼 정하기
자바 관련 로그 라이브러리만 하더라도 JAVA, LOG4J2.X, LOGBACK 등등 다양한 환경을 설정할 수 있습니다. 저는 프로젝트가 LOG4J 2.X이므로 해당 플랫폼을 선택합니다. Create Project를 합니다.
친절하게도 sentry 공식 홈페이지에서 Spring Boot에서 어떻게 사용해야 하는지 안내해줍니다.
- build.gradle에서 아래 의존성 추가
내가 사용하는 라이브러리에 따라서 sentry에서 추가할 의존성을 알려줍니다.
//log4j2
implementation 'io.sentry:sentry-log4j2:5.7.4'
//logback
implementation 'io.sentry:sentry-logback:5.7.4'
- logback.xml 파일 정의
기존에 logback을 Console에서 보여주도록 설정하였습니다.
같은 위치에 Sentry를 등록하고 로그 레벨 설정에 참조를 추가하면 됩니다.
<configuration>
<!-- Configure the Console appender -->
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- Configure the Sentry appender, overriding the logging threshold to the WARN level -->
<appender name="Sentry" class="io.sentry.logback.SentryAppender">
<options>
<dsn>#{dsn 정보}</dsn>
</options>
</appender>
<!-- Enable the Console and Sentry appenders, Console is provided as an example
of a non-Sentry logger that is set to a different logging threshold -->
<root level="INFO">
<appender-ref ref="Console" />
<appender-ref ref="Sentry" />
</root>
</configuration>
- Spring에 코드 추가
사용하는 방법은 다음과 같습니다.
try ~ catch에서 catch 부분에 Sentry.captureException(e)로 sentry 전용 예외를 던질 수 있습니다.
import java.lang.Exception;
import io.sentry.Sentry;
try {
throw new Exception("This is a test.");
} catch (Exception e) {
Sentry.captureException(e);
}
- 알람받은 로그 내역
매주 에러 사항을 메일로 알람 받도록 설정하였으며 개인 프로젝트에서 적용하여 나온 결과는 아래와 같습니다.
요일에 따라 에러가 발생한 횟수를 보여주며, 어떤 에러가 있었는지 보여줍니다.
각 에러를 클릭하면 세세하게 로그 내역을 확인할 수 있습니다.
결론
- sentry를 통하여 다양한 플랫폼에서 로그 알람을 받을 수 있습니다.
- 에러가 발생한 문맥과 흐름을 알 수 있어서 디버깅이 편리합니다.
- 각종 모니터링 정보 기능을 제공하므로 빠르고 편하게 확인 할 수 있습니다.
참고
https://node-js.tistory.com/33
'문제 해결, 기술 비교 > 개인프로젝트(북클럽)' 카테고리의 다른 글
Redis를 로그인 Session Storage로 이용하기 (0) | 2022.06.17 |
---|---|
분산 서버에서 Session 관리하기 (0) | 2022.06.17 |
Elastic Search 연동 및 테스트하기 (0) | 2022.05.27 |
RabbitMQ 이용해서 글 작성하기 (0) | 2022.05.27 |
cerbot로 SSL 인증서 만들기 (0) | 2022.05.24 |