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 엔드포인트
- 기본 메트릭 목록 : http://localhost:{본인포트}/actuator/metrics
- 기본 메트릭 상세 : http://localhost:{본인포트}/actuator/metris/{name}
만약 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
반응형
'개발 > Spring' 카테고리의 다른 글
| 단일 폴링 스케줄러를 전용 ThreadPool로 고도화하기 (0) | 2025.09.17 |
|---|---|
| Spring Boot + Redis Queue 비동기 작업을 FIFO로 처리하기 (0) | 2025.09.04 |
| Spring Boot Actuator (2) | 2025.06.05 |
| @Transactional 내부에서 어떻게 동작할까? (0) | 2025.06.04 |
| [MyBatis] if - else 사용하기 (choose) (0) | 2021.10.12 |