카테고리 없음

Prometheus란?

idea9329 2024. 12. 3. 14:05
반응형

 

Prometheus 오픈 소스 시스템 모니터링 및 경고 도구로, 대규모 분산 시스템에서 메트릭(metrics) 데이터를 수집, 저장, 분석, 시각화하는 데 사용됩니다.
Prometheus는 2012년 SoundCloud에서 개발되었으며, 이후 독립 프로젝트로 성장하여 CNCF(Cloud Native Computing Foundation)의 주요 프로젝트로 자리 잡았습니다.


1. Prometheus의 주요 특징

1.1 시계열 데이터베이스(Time-Series Database)

  • 데이터를 시간 단위로 수집하여 저장.
  • 예: CPU 사용량, 메모리 소비량, 네트워크 트래픽 등.

1.2 강력한 쿼리 언어(PromQL)

  • PromQL(Prometheus Query Language)을 통해 복잡한 데이터 분석과 시각화를 지원.

1.3 푸시 대신 풀 방식(Pull Model)

  • Prometheus는 대상(target)에서 데이터를 직접 가져오는 풀(Pull) 방식을 사용.
  • 이는 각 대상이 Prometheus와 독립적으로 동작하도록 설계되었습니다.

1.4 알림 및 경고(Alerting)

  • 특정 조건이 충족될 때 사용자에게 경고를 전송.
  • Alertmanager와 통합되어 이메일, Slack, PagerDuty 등으로 알림 발송 가능.

1.5 다중 플랫폼 지원

  • Kubernetes, Docker, Linux 서버 등 다양한 환경에서 활용 가능.

2. Prometheus의 주요 구성 요소

2.1 Prometheus 서버

  • 메트릭 데이터를 수집, 저장, 쿼리, 시각화.
  • Scraping을 통해 대상에서 데이터를 가져옵니다.

2.2 Exporter

  • 대상 시스템의 메트릭 데이터를 노출하는 엔드포인트 역할.
  • 예:
    • Node Exporter: 서버의 하드웨어 및 운영 체제 메트릭 수집.
    • Blackbox Exporter: HTTP, DNS, TCP 상태 확인.

2.3 Pushgateway

  • 푸시 방식으로 데이터를 Prometheus에 전달.
  • 짧은 수명 작업(Job)에서 생성된 메트릭을 수집.

2.4 Alertmanager

  • Prometheus에서 생성된 경고(Alert)를 관리하고 알림 전송.

2.5 시각화 도구

  • Prometheus 자체 대시보드 또는 Grafana와 통합하여 데이터를 시각화.

3. Prometheus의 주요 기능

3.1 메트릭 수집

  • 다양한 대상에서 메트릭 데이터를 정기적으로 수집.
  • 예:
    • 웹 서버의 응답 시간.
    • 데이터베이스의 연결 수.
    • Kubernetes의 Pod 상태.

3.2 데이터 저장

  • 시계열 데이터베이스를 사용해 효율적으로 데이터를 저장.

3.3 데이터 쿼리

  • PromQL을 사용해 실시간 분석 및 시각화를 수행.

3.4 알림 및 경고

  • 정의된 조건에 따라 알림을 생성.
  • 예:
    • CPU 사용률이 90%를 초과하면 경고 발송.

4. Prometheus의 아키텍처

 +--------------------+       +--------------------+
 |  Node Exporter     |       |  Application       |
 +--------------------+       +--------------------+
           |                            |
           +----------------------------+
                        Pull
                     Prometheus
                        |
           +----------------------------+
           |       Time-Series DB       |
           +----------------------------+
                        |
                 PromQL Queries
                        |
          +-------------+-------------+
          |     Alertmanager          |
          |         Grafana           |
          +---------------------------+

5. Prometheus 사용 사례

5.1 Kubernetes 모니터링

  • Pod, Node, 클러스터 상태를 실시간으로 추적.
  • 예:
    • Kubernetes의 CPU 및 메모리 사용량.
    • Deployment 상태.

5.2 서버 및 애플리케이션 성능 분석

  • CPU, 메모리, 디스크 I/O 등의 시스템 자원 사용 추적.

5.3 SLA 및 SLO 추적

  • SLA(서비스 수준 계약) 또는 SLO(서비스 수준 목표) 지표 모니터링.

5.4 네트워크 상태 확인

  • 네트워크 트래픽, 대역폭 사용량 모니터링.

6. Prometheus와 다른 도구 비교

기능PrometheusZabbixNagios

데이터 모델 시계열 데이터 상태 기반 상태 기반
수집 방식 Pull Push Push
확장성 높은 확장성 상대적으로 낮음 상대적으로 낮음
커뮤니티 지원 활발한 커뮤니티 보통 보통
알림 및 경고 Alertmanager 내장 경고 시스템 내장 경고 시스템

7. Prometheus의 장단점

7.1 장점

  1. 확장성:
    • 대규모 분산 환경에서 사용 가능.
  2. 오픈 소스:
    • 무료로 사용 가능하며, 커스터마이징 가능.
  3. 강력한 쿼리 언어:
    • PromQL로 정교한 데이터 분석 가능.
  4. 경량 설계:
    • 단순하고 빠른 설치 및 운영.

7.2 단점

  1. 데이터 보존 제한:
    • 기본적으로 오래된 데이터 보존이 제한됨(장기 보존은 외부 솔루션 필요).
  2. 복잡한 설정:
    • 다양한 대상 및 메트릭 구성 시 초기 설정이 어려울 수 있음.
  3. 분산 스토리지 미지원:
    • 기본적으로 단일 노드에서만 작동(외부 분산 시스템 필요).

8. Prometheus 설치 및 사용

8.1 설치

  1. Docker 사용 예제:
  2. docker run -p 9090:9090 prom/prometheus
  3. 설정 파일 예제 (prometheus.yml):
  4. scrape_configs: - job_name: 'node_exporter' static_configs: - targets: ['localhost:9100']
  5. 대시보드 접속:
    • 브라우저에서 http://localhost:9090로 접속.

Prometheus는 대규모 시스템의 실시간 모니터링 및 경고 설정에 적합한 강력한 도구로, 특히 클라우드 네이티브 환경에서 필수적인 솔루션으로 자리 잡고 있습니다. 😊

반응형