메뉴 닫기

Prometheus

Prometheus

Prometheus는 오픈 소스 모니터링 및 경보 시스템입니다. 시스템 및 애플리케이션의 **메트릭(metric, 계량 정보)**을 수집하고, 시계열(time series) 데이터로 저장하며, 쿼리 및 시각화, 경보(alarm)를 설정할 수 있도록 지원합니다.

Prometheus의 대표적인 기능은 다음과 같습니다.

  • 풀 방식의 메트릭 수집, 시계열 데이터 저장
  • PromQL을 활용하여 저장된 시계열을 쿼리 및 집계
  • 서비스 디스커버리
  • 데이터 시각화

[개요]

종류 : 개념정의

난이도 : ⭐

내용요약 : Prometheus 개념 정리

테스트환경

관련직무 : 시스템 엔지니어, 클라우드 엔지니어, 데이터 엔지니어

 

Prometheus 아키텍처

✅ Prometheus 구성 요소 요약 및 설명

구성 요소 주요 역할 및 설명
Prometheus 시계열 데이터 수집 및 저장
설정 파일(prometheus.yml)을 기반으로 Pull 방식으로 Exporter 또는 Client App의 /metrics 엔드포인트에서 메트릭 수집
Exporter 시스템/서비스의 메트릭을 수집하고 /metrics 포맷으로 노출
예시: node_exporter, gpu_exporter, blackbox_exporter, mysqld_exporter
Client Library 사용자 애플리케이션 코드에 직접 메트릭을 계측할 수 있도록 도와주는 라이브러리
예시: prometheus_client (Python), prom-client (Node.js), prometheus-client (Go 등)
Pushgateway 짧은 수명 또는 비정기성 작업(예: batch job)의 메트릭을 Push 방식으로 Prometheus에 전달
Prometheus는 Pushgateway에서 Pull
Alertmanager          Prometheus에서 수집한 메트릭의 경고 조건(예: CPU > 80%)을 평가 후, 알림 전송 (Slack, Email, Webhook 등)
Grafana (외부 툴)         Prometheus 데이터를 시각화하는 대시보드 도구. PromQL을 사용해 강력한 시각화 가능
Service Discovery 동적 인프라 환경(Kubernetes, EC2 등)에서 자동으로 타겟을 감지하여 메트릭 수집
수동으로 job 타겟을 지정할 필요가 없음
Thanos / Cortex Prometheus의 **수평 확장(Scale-Out)**과 장기 보존(Long-term Storage)을 가능하게 하는 보조 오픈소스 툴

 

✅ Prometheus를 사용하기에 적합한 일

유형 설명
메트릭 기반 시계열 데이터 수집 CPU 사용률, 메모리 사용량, 요청 수, 응답 시간 등 수치형(time series) 데이터 수집 및 저장
인프라/애플리케이션 성능 모니터링 Node Exporter, cAdvisor, kube-state-metrics 등을 통해 다양한 시스템/컨테이너/클러스터의 상태 추적
마이크로서비스 환경에 적합 Prometheus는 서비스 디스커버리(Kubernetes 등) 및 라벨링 기능을 통해 다수의 동적 인스턴스 모니터링에 효과적
임계치 기반 알림 생성 Alertmanager를 통한 알림 전송 (Slack, Email 등) 가능. 예: CPU > 90% for 5m 경고 조건
간단하고 빠른 셋업이 필요한 경우 단일 바이너리로 동작, 로컬 디스크에 저장하는 구조이기 때문에 가볍고 설정이 간편함

❌ Prometheus가 적합하지 않은 일

유형 설명
이벤트 기반 로깅 로그인 시도, 에러 발생 내역 등의 비정형 이벤트 로그 저장은 불가능 (→ ELK Stack, Loki, Graylog 사용 권장)
고카디널리티(high cardinality) 데이터 저장 예: 유저 ID, 이메일 주소, 세션 ID 등을 라벨로 저장하면 메모리 사용량 폭증 → 성능 저하 발생
정확성이 중요한 재무 데이터 저장 예: 결제 트랜잭션 횟수 집계 등은 레이스 컨디션이나 스크래핑 실패로 누락 가능성이 있어 부적절
분산 처리 및 수평 확장이 필요한 경우 Prometheus는 기본적으로 싱글 노드 운영을 전제로 설계되어 있어, 대규모 환경에선 Thanos 또는 Cortex 도입 필요
이력 보존이 중요한 환경 Prometheus 기본 설정에서는 로컬 디스크 기반 저장이며 장기 보존이 어려움 (→ 외부 장기 스토리지 필요)

📚 참고 링크

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x