스프링 부트(핵심 원리와 활용)

Ch08. 마이크로미터, 프로메테우스, 그라파나 - 다양한 메트릭

webmaster 2023. 4. 26. 00:24
728x90

마이크로미터와 액츄에이터가 기본으로 제공하는 다양한 메트릭을 확인해 보자..

  • JVM 메트릭
  • 시스템 메트릭
  • 애플리케이션 시작 메트릭
  • 스프링 MVC 메트릭
  • 톰캣 메트릭
  • 데이터 소스 메트릭
  • 로그 메트릭
  • 기타 수 많은 메트릭이 있다.
  • 사용자가 메트릭을 직접 정의하는 것도 가능하다. 뒤에서 예제로 만들어본다.

JVM 메트릭

JVM 관련 메트릭을 제공한다. jvm.으로 시작한다.

  • 메모리 및 버퍼 풀 세부 정보
  • 가비지 수집 관련 통계
  • 스레드 활용
  • 로드 및 언로드된 클래스 수
  • JVM 버전 정보
  • JIT 컴파일 시간

시스템 메트릭

시스템 메트릭을 제공한다. system. , process. , disk.으로 시작한다.

  • CPU 지표
  • 파일 디스크립터 메트릭
  • 가동 시간 메트릭
  • 사용 가능한 디스크 공간

애플리케이션 시작 메트릭

애플리케이션 시작 시간 메트릭을 제공한다.

  • application.started.time : 애플리케이션을 시작하는데 걸리는 시간 ( ApplicationStartedEvent 로 측정)
  • application.ready.time : 애플리케이션이 요청을 처리할 준비가 되는데 걸리는 시간 ( ApplicationReadyEvent 로 측정)

스프링은 내부에 여러 초기화 단계가 있고 각 단계별로 내부에서 애플리케이션 이벤트를 발행한다.

  • ApplicationStartedEvent : 스프링 컨테이너가 완전히 실행된 상태이다. 이후에 커맨드 라인 러너가 호출된다.
  • ApplicationReadyEvent : 커맨드 라인 러너가 실행된 이후에 호출된다.

스프링 MVC 메트릭

스프링 MVC 컨트롤러가 처리하는 모든 요청을 다룬다.(메트릭 이름: http.server.requests)

TAG를 사용해서 다음 정보를 분류해서 확인할 수 있다.

  • uri : 요청 URI
  • method : GET , POST 같은 HTTP 메서드
  • status : 200 , 400 , 500 같은 HTTP Status 코드
  • exception : 예외
  • outcome : 상태코드를 그룹으로 모아서 확인
    • 1xx:INFORMATIONAL , 2xx:SUCCESS , 3xx:REDIRECTION , 4xx:CLIENT_ERROR , 5xx:SERVER_ERROR

데이터소스 메트릭

DataSource , 커넥션 풀에 관한 메트릭을 확인할 수 있다.(jdbc.connections.으로.(jdbc.connections. 시작한다.)
최대 커넥션, 최소 커넥션, 활성 커넥션, 대기 커넥션 수 등을 확인할 수 있다.

히카리 커넥션 풀을 사용하면 hikaricp. 를 통해 히카리 커넥션 풀의 자세한 메트릭을 확인할 수 있다.

로그 메트릭

logback.events : logback 로그에 대한 메트릭을 확인할 수 있다.
trace, debug, info, warn, error 각각의 로그 레벨에 따른 로그 수를 확인할 수 있다.
예를 들어서 error 로그 수가 급격히 높아진다면 위험한 신호로 받아들일 수 있다.

톰캣 메트릭

톰캣 메트릭은 tomcat. 으로 시작한다.
톰캣 메트릭을 모두 사용하려면 다음 옵션을 켜야 한다. (옵션을 켜지 않으면 tomcat.session. 관련 정보만 노출된다.)

application.yml

server:
  tomcat:
    mbeanregistry:
      enabled: true
  • 톰캣의 최대 쓰레드, 사용 쓰레드 수를 포함한 다양한 메트릭을 확인할 수 있다.

기타

  • HTTP 클라이언트 메트릭( RestTemplate , WebClient)
  • 캐시 메트릭
  • 작업 실행과 스케줄 메트릭
  • 스프링 데이터 리포지토리 메트릭
  • 몽고DB 메트릭
  • 레디스 메트릭

사용자 정의 메트릭

사용자가 직접 메트릭을 정의할 수도 있다. 예를 들어서 주문수, 취소수를 메트릭으로 만들 수 있다.
사용자 정의 메트릭을 만들기 위해서는 마이크로미터의 사용법을 먼저 이해해야 한다.

정리

액츄에이터를 통해서 수많은 메트릭이 자동으로 만들어지는 것을 확인했다. 그런데 이러한 메트릭들을 어딘가에 지속해서 보관해야 과거의 데이터들도 확인할 수 있을 것이다. 따라서 메트릭을 지속적으로 수집하고 보관할 데이터베이스가 필요하다. 그리고 이러한 메트릭들을 그래프를 통해서 한눈에 쉽게 확인할 수 있는 대시보드도 필요하다.

참고: 지원하는 다양한 메트릭들은 다음 공식 매뉴얼을 참고하자

 

Production-ready Features

You can enable recording of HTTP exchanges by providing a bean of type HttpExchangeRepository in your application’s configuration. For convenience, Spring Boot offers InMemoryHttpExchangeRepository, which, by default, stores the last 100 request-response

docs.spring.io

 

 

728x90