Sentry 적용

2021, Jan 29    

회사 프로젝트에 sentry적용 하면서 몇가지 기록해 둔다.

  • sentry : 로그 관리 elk로 로그 관리하는 것과 비슷한 플랫폼, 모바일, js등 브라우져 device별 로그도 tracking이 가능하고 90개의 언어와 플랫폼을 지원한다고 한다. (https://docs.getsentry.com/on-premise/ 참고)

Spring Logback 설정

  • https://docs.sentry.io/platforms/java/guides/spring-boot/
  • 로그를 sentry에 전달하기 위해서는 DSN 이라는 token이 포함된 url을 설정해 줘야 하며, 프로젝트 > settings > client keys(CDN)을 가보면 얻을 수 있다.
    <appender name="Sentry" class="io.sentry.logback.SentryAppender">
        <options>
            <!-- NOTE: Replace the test DSN below with YOUR OWN DSN to see the events from this app in your Sentry project/dashboard -->
            <dsn>https://examplePublicKey@o0.ingest.sentry.io/0</dsn>
        </options>
        <!-- Optionally change minimum Event level. Default for Events is ERROR -->
        <minimumEventLevel>WARN</minimumEventLevel>
        <!-- Optionally change minimum Breadcrumbs level. Default for Breadcrumbs is INFO -->
        <minimumBreadcrumbLevel>DEBUG</minimumBreadcrumbLevel>
    </appender>
  • minimumEventLevel 은 sentry에 event로 인식되는 최소 레벨을 설정 하는 부분이라고 써 있는데, 이벤트란 sentry에 전달 되는 로그 하나의 단위를 지칭하는 것으로 보인다.
  • minimumBreadcrumbLevel - 최소 Breadcrumbs 레벨이라고 설명 되어 있다. ‘Breadcrumbs’란 헨델과 그레델에서 나오는 빵부스러기에서 나오는 말로 ‘이동경로’를 뜻한다. event가 발생하기 까지 이동 경로를 말하는 것으로 기본적으로 100개의 레코드를 메모리에 저장해 놓고 있다가 전송시점에 100개의 정보를 메시지에 포함하여 Sentry로 전송한다.

기타 설정

  • sentry에 로그를 전송하기 위해서는 dsn 이라는 설정값이 필요하다. 토큰값이 포함된 url로, sentry내 프로젝트 설정으로 가보면 ‘Client Keys(CDN)’ 메뉴에서 확인 할 수 있다.
  • 로그를 환경별로 분리해서 보기 위해서는 properties에 enviroment 값을 설정해 주면 됩니다. appender options 설정에 <enviroment>qa</enviroment>와 같이 항목을 추가해줘도 sentry에는 production 으로 인식 되었다.
  • 프라퍼티에 sentry.enviroment 로 설정해 주니 인식이 제대로 되었다. 아마도 properies 값으로만 인식 하는듯 하다.
  • error 레벨만 event로 인식하게 하면 sentry에는 error 이하 로그는 쌓이지 않는데, info 레벨도 event로 쌓이게 하고 error 레벨 이상만 알람으로 전달 되도록 가능한지 좀더 찾아 보려고 한다.