1️⃣ 메트릭(Metric)이란?
- 정량적 수치 기반의 데이터
예: CPU 사용률, HTTP 요청 수, 응답 지연 시간, 쓰레드 수 등 - 로그가 텍스트 위주의 이벤트 기록이라면, 메트릭은 수치 기반의 시간 시계열 데이터
2️⃣ 모니터링 시스템 구성도

- Spring Boot : Micrometer → /actuator/prometheus 로 메트릭 노출
- Prometheus : 주기적으로 애플리케이션에서 메트릭 수집 (pull 방식)
- Grafana : Prometheus 데이터를 시각화하고 대시보드로 제공
3️⃣ 각 요소의 역할
Spring Boot + Micrometer + Actuator
- Micrometer: 다양한 모니터링 시스템에 메트릭을 전달할 수 있는 추상화 계층
- Actuator: /actuator/prometheus 엔드포인트를 통해 Prometheus 형식으로 메트릭 노출
- 기본적으로 JVM, HTTP 요청, 메모리 사용량 등 다양한 지표 자동 제공
Prometheus
- 시계열 메트릭 수집기 & 저장소
- pull 방식: 설정된 타겟(예: Spring 앱)의 /actuator/prometheus 경로를 주기적으로 호출
- 자체 쿼리 언어 PromQL을 사용해 메트릭 분석 가능
Grafana
- 시각화 도구
- Prometheus를 데이터 소스로 등록하여, 시계열 데이터를 대시보드로 표현
- 실시간 차트, 경고 알림(알림 조건 설정 시), 템플릿 활용 등 지원
4️⃣ 메트릭 종류 정리
| 메트릭 유형 | 예시 | 설명 |
| Counter | HTTP 요청 수 | 단조 증가 |
| Gauge | 현재 메모리 사용량 | 실시간 변화 측정 가능 |
| Timer / Histogram | 응답 시간, 처리 시간 분포 | 시간 기반 지표 |
| Summary | 백분위 응답 시간 | 분포 기반 정리 (Histogram과 유사) |
5️⃣ Prometheus 수집 방식 (Pull vs Push)
- Pull 방식(기본)
Prometheus가 직접 애플리케이션의 엔드포인트를 호출하여 메트릭을 가져감 - Push 방식
Pushgateway를 통해 사용 (ex: 배치성 작업, 짧은 생명주기의 서비스)
6️⃣ Spring Boot에서 사용하는 대표 메트릭 정리
| 메트릭 키 | 의미 |
| http_server_requests_seconds_count | 총 HTTP 요청 수 |
| process_cpu_usage | 프로세스 CPU 사용률 |
| jvm_memory_used_bytes | JVM 메모리 사용량 |
| tomcat_threads_active | 현재 활성화된 Tomcat 쓰레드 수 |
이러한 값은 /actuator/prometheus에서 확인 가능하며, Prometheus는 해당 데이터를 정해진 주기로 가져가 저장
7️⃣ 마무리
Prometheus와 Grafana는 단순히 "보이는 것"을 넘어서 시스템 내부를 수치로 해석할 수 있도록 도와주는 훌륭한 도구이다.
메트릭을 커스텀 하여 여러가지 수치와 정보를 분석 할 수 있어서 서버를 운영하는데 있어서 많은 도움이 될 것 같다.
'SPRING' 카테고리의 다른 글
| [SPRING] 동시성 제어 분산 락 (2) | 2025.05.26 |
|---|---|
| [SPRING] 커스텀 메트릭 수집 및 시각화 (2) | 2025.05.20 |
| [SPRING] 조건 검색 개선 3탄 (분리 조회,Projection, 복합 인덱스) (3) | 2025.05.15 |
| [SPRING] @EventListener (3) | 2025.05.14 |
| [SPRING] @TransactionalEventListener (0) | 2025.05.13 |