Infra

Prometheus

baek-dev 2025. 4. 9. 18:25

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