SPRING

[SPRING] 메트릭 기반 모니터링 시스템(Prometheus, Grafana)

도원좀비 2025. 5. 19. 21:17

1️⃣ 메트릭(Metric)이란?

  • 정량적 수치 기반의 데이터
    예: CPU 사용률, HTTP 요청 수, 응답 지연 시간, 쓰레드 수 등
  • 로그가 텍스트 위주의 이벤트 기록이라면, 메트릭은 수치 기반의 시간 시계열 데이터

2️⃣ 모니터링 시스템 구성도

 

  1. Spring Boot : Micrometer → /actuator/prometheus 로 메트릭 노출
  2. Prometheus : 주기적으로 애플리케이션에서 메트릭 수집 (pull 방식)
  3. 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는 단순히 "보이는 것"을 넘어서 시스템 내부를 수치로 해석할 수 있도록 도와주는 훌륭한 도구이다.

메트릭을 커스텀 하여 여러가지 수치와 정보를 분석 할 수 있어서 서버를 운영하는데 있어서 많은 도움이 될 것 같다.