본문 바로가기

개발/Spring

Micrometor & Metrics

728x90
반응형

Micrometer

운영 중인 서비스에서는 다음과 같은 다양한 시스템 지표(metrics) 를 수집하고 모니터링하는 것이 매우 중요합니다.

  • CPU 사용률
  • 메모리 사용량
  • HTTP 요청 수 및 응답 시간
  • DB 커넥션 수
  • 사용자 요청 트래픽 등

이런 지표들을 잘 관리하면,

  • 문제가 발생하기 전에 조기 대응할 수 있고
  • 문제가 발생한 후에는 빠르게 원인 파악 및 복구가 가능합니다.

실제 운영 환경에서는 Prometheus, Datadog, New Relic, Graphite 등 다양한 모니터링 툴이 사용됩니다.
하지만 각 모니터링 시스템은 지표를 수집하는 방식과 포맷이 서로 다릅니다.
Micrometer는 이러한 문제를 해결해주는 지표 수집 추상화 라이브러리입니다.

쉽게 말해, "모니터링 툴과 애플리케이션 사이의 번역기" 역할을 합니다.

  • 코드에서 지표를 Micrometer 형식으로 수집합니다.
  • 실제 전송은 Prometheus, Datadog, New Relic 등 원하는 툴에 맞춰 자동 변환해서 처리합니다.

build.gradle

implementation 'org.springframework.boot:spring-boot-starter-actuator'

Micrometer 는 애플리케이션의 Metric(지표)을 Micrometer 가 정한 표준 방법으로 모아서 제공(추상화) 해줍니다.

spring boot actuator 는 Micrometer를 기본으로 내장

우리는 Micrometer 가 정한 표준방법으로 메트릭을 전달하고 사용하는 모니터링 툴에 맞는 구현체를 선택하면 된다.
만약 모니터링 툴이 변경되어도 해당 구현체만 변경하면 된다.


metrics 엔드포인트

만약 JVM 메모리 사용량을 확인하고싶다면, http://localhost:{본인포트}/actuator/metrics/jvm.memory.used 로 확인할 수 있다.

metrics 종류

HTTP 요청 메트릭

  • /http.server.requests : 모든 HTTP 요청의 카운트, 응답시간, 상태코드별 요청수 등을 수집함
  • 필터링 예시: tag=status:200, tag=uri:/api/user

JVM 메트릭

  • /jvm.memory.used : heap/nonheap 영역별 사용 중인 메모리
  • jvm.gc.pause : GC 일시정지 시간
  • jvm.threads.live : 현재 살아있는 스레드 수

시스템 메트릭

  • /system.cpu.usage : 전체 CPU 사용률
  • /system.load.average.1m : 1분간 시스템 부하 평균

애플리케이션 시작 메트릭

  • /application.started.time : 애플리케이션 시작 완료까지 걸린 시간
  • /application.ready.time : 완전히 준비되기까지 걸린 시간

스프링 MVC 메트릭

  • /mvc.controller.requests : 컨트롤러 별 요청 처리 시간 및 횟수
  • 조건: @Controller 혹은 @RestController 사용 시 수집됨

데이터소스(DB 커넥션) 메트릭

  • /hikaricp.connections.active : 현재 활성 커넥션 수
  • /hikaricp.connections.max : 최대 커넥션 수

로그 메트릭

  • /logback.events : 로그 레벨별 이벤트 수 (info, warn, error 등)

톰캣 메트릭 (내장 톰캣 사용시)

  • /tomcat.sessions.active.current : 현재 활성 세션 수
  • /tomcat.threads.current : 현재 동작 중인 톰캣 스레드 수

ref

https://docs.spring.io/spring-boot/docs/3.0.5/reference/html/actuator.html#actuator

728x90
반응형