Prometheus란?
시간 기반(Time-Series)으로 메트릭 데이터를 수집, 저장하는 오픈소스 모니터링 시스템이다.
서버와 애플리케이션의 상태를 시간에 따라 수집하고
이를 쿼리 하고 시각화 하며 알람 까지 보낼 수 있게 해주는 시스템이다.
개념
| 용어 | 설명 | 예시 |
| 메트릭 (Metric) | 시스템의 상태를 수치로 표현한 값 | CPU 사용률, 요청 수, 지연 시간 등 |
| 시계열 (Time Series) | 시간에 따른 메트릭의 변화 추이 | 1초 간격으로 수집된 CPU 사용량 |
| Exporter | Prometheus가 데이터를 수집할 수 있도록 노출하는 엔드 포인트 | /actuator/prometheus |
| Scrape | Prometheus가 주기적으로 대상 애플리케이션에서 데이터를 가져오는 방식 | Pull 방식 |
| PromQL | Prometheus 전용 쿼리 언어 | 메트릭 분석 및 대시보드 구성 |
| AlertManager | 임계값을 설정하고 알림을 발송하는 컴포넌트 | CPU > 80% 시 알람 |
수집 방식
- Prometheus는 Pull 방식으로 메트릭을 수집한다.
- Prometheus 서버가 주기적으로 대상 애플리케이션의 메트릭 엔드포인트를 호출하여 데이터를 가져온다.
/actuator/health
/actuator/prometheus
/actuator/info
| 방식 | 설명 | 장점 | 단점 |
| Pull | Prometheus가 주기적으로 대상의 메트릭을 가져온다 | 모니터링 서버에서 대상 상태를 능동적으로 관리 가능, 장애시 파악 용이 |
방화벽, 네트워크 제약 시 수집 어려움 |
| Push | 대상이 Prometheus로 데이터를 직접 전송 | 네트워크 제약을 회피 가능 | 능동적 장애 감지 어려움 |
수집하는 메트릭 타입
| 타입 | 특징 | 예시 |
| Counter | 단조 증가하는 누적값 | 요청 수, 에러 수 |
| Gauge | 증가, 감소 모두 가능 | CPU 사용률, 메모리 사용량 |
| Histogram | 분포를 버킷 단위로 수집 | 요청 지연 시간 분포 |
| Summary | 샘플링 기반 요약 값 | 백분위 지연 시간 |