bsh6226 2025. 1. 5. 07:45

 

모니터링 툴 구성요소

모니터링  대상구성
OS (시스템 자원) Node Exporter + Prometheus
JVM (Spring Boot 앱) Micrometer + Prometheus
외부 DB/Redis 등 redis_exporter, mysqld_exporter
시각화 Grafana

 

1. Prometheus란?

Prometheus는 **시계열 기반 모니터링 데이터 수집기(메트릭 저장소)**입니다. CPU, 메모리, 네트워크 트래픽 등 다양한 시스템 상태 정보를 주기적으로 pull 방식으로 수집하고 저장할 수 있습니다.

주요 특징

Prometheus의 주요 특징

  1. 시계열 데이터 수집:
    • **메트릭(metric)**이라고 불리는 데이터를 시계열(Time Series) 형식으로 수집.
    • 예: CPU 사용률, 메모리 사용량, 네트워크 트래픽.
  2. 알림(Alerting):
    • 특정 조건이 충족되면 AlertManager를 통해 경고를 생성하고, 이메일, Slack 등으로 알림을 보냄.
  3. 독립 실행형:
    • 분산 스토리지 없이도 단일 Prometheus 서버만으로 동작 가능.

 

주요 Exporter + 대표 메트릭 정리

Exporter는 Prometheus가 수집할 수 있도록 메트릭을 노출해주는 중간 역할의 에이전트입니다. Exporter는 시스템 내부 지표를 Prometheus가 이해할 수 있는 HTTP 형식으로 변환해주는 "번역기" 역할을 합니다.

 

Exporter 모니터링 대상 주요 메트릭 예시
Node Exporter 서버(OS 자원) CPU 사용률, 메모리 사용량, 디스크 I/O, 네트워크 트래픽, 시스템 Load
JMX Exporter JVM (Spring, Java 앱) Heap 사용량, GC 시간, Live Threads, Class 로딩, CPU 사용률
Micrometer + Prometheus Spring Boot HTTP 요청 수/지연 시간, ThreadPool 상태, DB 쿼리 시간, Cache hit ratio
MySQL Exporter MySQL 커넥션 수, Slow Query, InnoDB 버퍼, 쿼리 QPS
Redis Exporter Redis 메모리 사용량, Key 수, Connected Clients, 캐시 히트율
Kafka Exporter Kafka Consumer lag, Partition 상태, Broker 메시지 처리량
RabbitMQ Exporter RabbitMQ Queue depth, 메시지 rate, 연결 수, 채널 수

 

Exporter의 수집방법

1. Exporter가 열어주는 경우

  • 예: node_exporter, redis_exporter, jmx_exporter
  • Exporter는 외부에서 데이터를 긁어와서 → /metrics HTTP 포트를 열어둠
  • Prometheus는 이 /metrics 엔드포인트에 주기적으로 접근해서 수집
  • 이때 exporter가 자체적으로 포트를 열어야 수집 가능

2. 애플리케이션이 직접 열어주는 경우

  • 예: Spring Boot + Micrometer (내장 Actuator)
  • 애플리케이션이 직접 HTTP 서버를 통해 /actuator/prometheus를 열어줌
  • Prometheus는 그 경로에 접근해서 메트릭을 수집
  • 이때도 애플리케이션이 직접 HTTP 엔드포인트를 “열어줘야” 함

 

Prometeus는 가능하지만 top으로는 확인 못하는 것들

지금 당장 무슨 일이 벌어지고 있는지”를 빠르게 확인하고 싶다면, top, htop, vmstat 같은 명령어들만으로도 충분히 유용합니다.


항목 top Prometheus
과거 CPU/메모리 사용 추세
GC Pause 시간 / 빈도 (JVM) ✅ jvm_gc_pause_seconds, jvm_memory_used_bytes
Thread Pool 상태 ✅ executor_active_threads, executor_queued_tasks
HTTP 요청 수, 오류율, 응답 시간 ✅ http_server_requests_seconds_count 등
DB 커넥션 수 / 커넥션풀 고갈 여부 ✅ HikariCP, DBCP 커넥션 사용량 메트릭
배치 성공 여부, 마지막 실행 시간 ✅ Custom metric으로 가능
디스크 쓰기/읽기 추세 부분만 (iowait) ✅ node_disk_* 메트릭
네트워크 지연/트래픽량 ✅ node_network_* 메트릭
알람 / 경고 / 자동 감시 ✅ Grafana Alerts 가능