어떻게 Sentry 를 사용 하여 당신 의 Spring Boot 응용 프로그램 을 감시 합 니까?

Sentry 는 응용 모니터링 시스템 으로 앞 뒤 에 있 는 각종 기술 창고 의 온라인 모니터링 과 오류 분석 에 사용 할 수 있 습 니 다.이번 에는 이 를 통 해 Spring Boot 프로젝트 의 온라인 로그 분석 실천 을 진행 할 수 있 습 니 다.
프로젝트 생 성
먼저 힌트 에 따라 Sentry 에서 프로젝트 를 만들어 야 합 니 다.프로젝트 플랫폼(platform)은 Spring Boot 나 자바 를 선택 할 수 있 습 니 다.
의존&설정 도입
Sentry 는 공식 적 인 Spring Boot Starter 를 제공 합 니 다.

<dependency>
 <groupId>io.sentry</groupId>
 <artifactId>sentry-spring-boot-starter</artifactId>
 <version>3.1.1</version>
</dependency>
이외에 도,우리 가 Sentry 에서 만 든 프로젝트 키(DSN)를 가 져 올 application.properties 를 설정 해 야 합 니 다.

sentry.dsn=https://key@host/id
첫 번 째 오류
우리 의 Controller 를 작성 하여 간단 한 이상 을 던 져 보 세 요.

@RestController
public class HelloController {

 @RequestMapping("/")
 public void test() {
  throw new IllegalArgumentException("hello world");
 }
}
이전 설정 에 문제 가 없 으 면 Sentry 의'Issue'패 널 에서 이 이상 한 정 보 를 볼 수 있 습 니 다.
 
이 이상 을 클릭 하면 상세 한 정 보 를 볼 수 있 습 니 다.이 이상 한 기본 정 보 를 볼 수 있 습 니 다.예 를 들 어'사용자 정보(여기 설정 되 지 않 음)','사용자 환경','태그(Tag)','스 택 추적(StackTrace)호출','로그 필름(Breadcrumbs)','Headers 요청',그리고 일부 사용자 가 사용자 정의 할 수 있 는 내용(Context 라 고 함)을 볼 수 있 습 니 다.
 
여기 서 Sentry 의 개념 을 소개 하려 면 먼저 같은 곳 에서 발생 하 는 이상 은'Issue'로 요약 되 고 매번 이곳 에서 발생 하 는 이상 을'Event'라 고 합 니 다.그래서 같은 곳 에서 두 번 이상 을 일 으 키 지만 하나의 Issue 만 있 지만 이벤트 페이지 에서 두 개의 사건 을 볼 수 있 습 니 다.

사용자 정의 정보
이 이상 을 알 게 된 이상 어떤 사용자 가 촉발 한 이상 인지 알 고 싶 습 니 다.Sentry SDK 는 Sentry User Provider 를 제공 합 니 다.이상 할 때 사용자 정 보 를 제공 할 수 있 습 니 다.저 희 는 Bean 하나만 설정 해 야 합 니 다.

@Bean
  public SentryUserProvider sentryUserProvider(){
    return () -> {
      //        ,           
      User user = new User();
      user.setId("userId");
      user.setUsername("  ");
      user.setEmail("[email protected]");

      return user;
    };
  }
다시 이상 을 일 으 켜 사용자 정 보 를 얻 었 습 니 다.

태그 로 이상 을 선별 할 수 있 도록 태그 사용자 정의
이상 정보 가 증가 함 에 따라 저 희 는 특정한 이상 정 보 를 선별 하고 싶 습 니 다.Sentry 는'태그(Tag)'기능 을 제공 하여 태그 에 따라 선별 할 수 있 습 니 다.자체 태그 가 충분 하지만 업무 수요 에 따라 사용자 정의 할 수 있 기 를 바 랍 니 다.물론 Sentry SDK 는 Beforesend Callback 을 제공 합 니 다.이 를 통 해 태 그 를 추가 할 수 있 습 니 다.

@Bean
  public SentryOptions.BeforeSendCallback beforeSendCallback(){
    return (event, hint) -> {
      event.setTag("name","zhangsan");
      return event;
    };
  }
우리 의 태그 가 성공 적 으로 추 가 된 것 을 볼 수 있 습 니 다.이 태 그 를 클릭 하면 이 태그 가 포 함 된 모든 이 벤트 를 찾 을 수 있 습 니 다.

통합 로그 백
기 존의 Spring Boot 업무 에는 이상 처리 가 포함 되 어 있 을 수 있 으 며,대부분의 이상 은 로그 형식 으로 직접 기록 되 어 있 을 수 있 습 니 다.물론 Sentry 도 Logback/Log4j 2 와 같은 로그 프레임 워 크 를 지원 합 니 다.의존 도 를 가 져 오기 만 하면 됩 니 다.Logback 을 예 로 들 겠 습 니 다.

<dependency>
 <groupId>io.sentry</groupId>
 <artifactId>sentry-logback</artifactId>
 <version>3.1.1</version>
</dependency>
Sentry Spring Boot Starter 는 의존 도 를 자동 으로 모니터링 하고 해당 하 는 설정 을 설정 합 니 다.우 리 는 기 존의 이상 을 log 로 대체 하여 던 질 수 있 습 니 다.

@RestController
public class HelloController {
  private static Logger logger = LoggerFactory.getLogger(HelloController.class);
  
  @RequestMapping("/")
  public void test(){
    logger.error("Logback error!");
  }
}
여기 서 재 미 있 는 점 은 처리 되 지 않 은 야생 이상 에 대해 서 는 Sentry 가 fatal 등급 을 주 고 Logback 을 도입 하면 logger 로그 등급 을 사용 한 다 는 점 이다.
 
설정 파일 에 minimum-event-level 과 minimum-breadcrumb-level 을 설정 하면 어떤 log 단계 가'이벤트'를 만 들 수 있 는 지,어떤 log 단계 가 다음'로그 필름(Breadcrumbs)'을 기록 할 지 지정 할 수 있 습 니 다.전 제 는 logger 의 단계 가 이 단계 보다 낮 거나 같 거나 같 습 니 다(그렇지 않 으 면 수집 할 수 없습니다).

sentry.logging.minimum-event-level=info
sentry.logging.minimum-breadcrumb-level=debug
자체 건설 Sentry
Sentry 는 공식 판 외 에 도 자체 위탁 관리 버 전의 Sentry 를 만 들 수 있다.정부 판 에 용량 제한 이 있어 서 비용 을 지불해 야 할 수도 있다.자체 위탁 판 은 용량 제한 이 없 지만 정 부 는 기술 지원 을 제공 하지 않 는 다.자체 적 으로 Sentry 를 만 드 는 것 도 매우 간단 하 다.Docker 와 Docker Compose 가 필요 하고 하드웨어 에 최소 2.4G 의 남 은 메모리 가 필요 하 다.

git clone https://github.com/getsentry/onpremise.git
cd onpremise
./install.sh
그 다음 에 localhost:9000 에서 자체 적 으로 만 든 Sentry 를 볼 수 있 습 니 다.Nginx 역방향 프 록 시 조정 포트 에 맞 춰 80/443 까지 사용 할 수 있 습 니 다.
공식 문서
본 고 는 자주 사용 하 는 기능 만 소개 하고 Sentry 와 관련 된 더 많은 기능 은 공식 문 서 를 참고 하 는 것 을 권장 합 니 다docs.sentry.io
Sentry 를 사용 하여 스프링 부 트 애플 리 케 이 션 을 모니터링 하 는 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 Sentry 모니터링 스프링 부 트 애플 리 케 이 션 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기