Prometheus란 무엇인가
Prometheus는 오픈소스 기반의 시계열(Time Series) 데이터베이스 및 모니터링 도구임.
시스템의 상태, 애플리케이션 메트릭, 인프라 자원 등을 수집하고 저장하여 실시간 모니터링과 경고(알림)를 설정할 수 있음.
Cloud Native Computing Foundation(CNCF)에 속한 프로젝트로, Kubernetes와 궁합이 매우 좋음.
1. Prometheus의 주요 특징
- 시계열 데이터 저장
- 시간에 따라 변화하는 데이터를 수집하고 저장함.
- 메트릭 단위로 데이터를 수집하고, 타임스탬프와 함께 기록함.
- Pull 방식 데이터 수집
- Prometheus는 모니터링 대상 시스템에 직접 접속하여 데이터를 수집함.
- HTTP 기반의 엔드포인트 /metrics 에서 데이터를 가져오는 방식임.
- 다양한 Exporter 지원
- Node Exporter, MySQL Exporter, Blackbox Exporter 등 다양한 exporter를 통해 여러 시스템의 메트릭을 수집할 수 있음.
- PromQL(Prometheus Query Language) 지원
- Prometheus 고유의 쿼리 언어를 통해 복잡한 메트릭을 조회하고 집계할 수 있음.
- 알림 기능
- Alertmanager와 연동하여 Slack, Email 등으로 경고 알림을 전송할 수 있음.
2. Prometheus의 동작 원리
Prometheus는 Pull 방식으로 메트릭을 수집하고 저장하는 구조를 가지고 있음.
데이터 흐름
Exporter → Prometheus → 시계열 DB → AlertManager / Grafana
- Exporter
- 모니터링 대상 서버나 애플리케이션에서 메트릭을 수집하는 에이전트 역할을 함.
- Prometheus
- Exporter로부터 주기적으로 메트릭을 수집하여 자체 시계열 DB에 저장함.
- AlertManager
- Prometheus에서 발생한 경고(Alert)를 수집하여 외부로 전달함.
- Grafana
- Prometheus의 데이터를 시각화하여 대시보드로 보여줌.
3. Prometheus 주요 구성 요소
구성 요소 | 설명 |
Target | Prometheus가 메트릭을 수집하는 대상 시스템 |
Exporter | 모니터링 대상에서 메트릭을 수집하는 에이전트 |
Time Series Database | 시계열 데이터를 저장하는 저장소 |
AlertManager | 경고 발생 시 외부 시스템으로 알림을 전송하는 도구 |
PromQL | Prometheus의 데이터 조회 및 집계 쿼리 언어 |
4. Prometheus 설치 및 구성
1) 설치
Docker를 통해 간편하게 설치할 수 있음.
docker run -d -p 9090:9090 prom/prometheus
2) 설정
설정 파일 prometheus.yml 에서 수집 대상(targets)을 정의함.
global:
scrape_interval: 15s # 메트릭 수집 주기
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100'] # Node Exporter 주소
3) Exporter 연결
Node Exporter를 설치하여 시스템 메트릭을 수집할 수 있음.
docker run -d -p 9100:9100 prom/node-exporter
4) Grafana와 연동
Prometheus를 Grafana 데이터 소스로 추가하여 대시보드를 생성하고 시각화할 수 있음.
5. Prometheus에서 사용하는 쿼리 언어 (PromQL)
PromQL(Prometheus Query Language)은 시계열 데이터를 조회하고 집계할 때 사용하는 쿼리 언어임.
- CPU 사용률 평균 조회
avg(rate(node_cpu_seconds_total{mode!="idle"}[5m]))
- 메모리 사용량
node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes
- HTTP 요청 속도
rate(http_requests_total[1m])
복잡한 쿼리를 사용하면 알림 조건도 세밀하게 설정할 수 있음.
6. Prometheus의 장단점
장점 | 단점 |
설치 및 사용이 간편함 | 장기간 데이터 저장에 비효율적일 수 있음 |
시계열 데이터에 최적화됨 | Pull 방식이므로 외부 접근이 어려운 환경에서는 사용이 제한될 수 있음 |
PromQL을 통한 유연한 데이터 조회 | 학습 곡선이 존재함 |
AlertManager와 연동하여 경고 기능 제공 | 알림 관리 및 설정이 다소 복잡할 수 있음 |
7. Prometheus 실무 활용 사례
- 서버 모니터링
- CPU 사용률, 메모리 사용량, 디스크 I/O, 네트워크 트래픽 등 수집 및 모니터링
- 애플리케이션 모니터링
- HTTP 요청 수, 응답 시간, 에러율 모니터링
- 쿠버네티스 클러스터 모니터링
- 노드, 파드(Pod), 컨테이너 리소스 사용량 모니터링
- CI/CD 파이프라인 모니터링
- 빌드/배포 성공률 및 시간 모니터링
정리
Prometheus는 Pull 기반으로 메트릭을 수집하는 시계열 데이터베이스 및 모니터링 도구임.
Exporter를 통해 다양한 시스템의 메트릭을 수집하고, PromQL을 활용하여 데이터를 조회하거나 AlertManager를 통해 알림을 보낼 수 있음.
Grafana와 연동하여 시각화하면 훨씬 효율적으로 시스템을 모니터링할 수 있음.
출처 : ChatGPT
'Infra' 카테고리의 다른 글
K6 부하 테스트 (0) | 2025.04.25 |
---|---|
Micrometer (1) | 2025.04.10 |
Grafana (0) | 2025.04.08 |
리버스 프록시 (1) | 2025.04.03 |
메시지 브로커(Message Broker) (0) | 2025.03.15 |