Prometheus
Prometheus는 클라우드 네이티브 환경에서 애플리케이션과 인프라의 ‘모니터링 및 경보(alerting)’를 제공하는 오픈소스 시스템입니다. 시계열 데이터(Time Series Data)를 수집, 저장, 쿼리하며, Kubernetes와 같은 분산 시스템의 성능과 상태를 실시간으로 모니터링할 수 있도록 설계되었습니다. CNCF(Cloud Native Computing Foundation)의 Graduated 프로젝트로, DevOps와 클라우드 네이티브 워크로드에서 널리 사용됩니다.
주요 특징
- 시계열 데이터 저장: 수집한 데이터를 시계열 형식으로 저장하며, 메트릭 값은 시간과 레이블(label)로 구분.
- 라벨 기반 데이터 모델: 각 데이터 포인트는 키-값 쌍으로 이루어진 라벨을 사용하여 필터링과 집계가 가능.
- 강력한 쿼리 언어(PromQL): PromQL을 사용하여 데이터를 분석하고 시각화 가능.
- 스크레이핑 방식: 푸시(push) 방식이 아닌, 푸시 가능한 노드(Exporters)로부터 데이터를 스크레이핑(pull)하여 수집.
- 알림 관리(Alerting): 경고 조건을 정의하고, 문제 발생 시 이메일, Slack, PagerDuty 등을 통해 알림을 전송.
- Kubernetes 네이티브 통합: Kubernetes 환경에서 Pod, 노드, 네트워크 등 다양한 리소스를 모니터링하도록 최적화.
- 플러그인 생태계: 다양한 Exporter와 Grafana 같은 도구와의 강력한 통합.
장점
- 확장성: 대규모 분산 환경에서 메트릭 데이터를 효율적으로 수집 및 저장 가능.
- 유연성: 라벨 기반 데이터 모델로 세부적인 필터링과 집계 가능.
- 오픈소스: 무료로 사용 가능하며, 커뮤니티 지원이 활발.
- 광범위한 도구 통합: Exporters와 Grafana 등 외부 도구와 쉽게 연결 가능.
- 독립적 데이터 저장소: 별도의 외부 데이터베이스가 필요하지 않음.
관련 용어
- Grafana: Prometheus 데이터를 시각화하는 대시보드 도구.
- Exporters: 애플리케이션, 서비스, 하드웨어 등의 메트릭 데이터를 Prometheus 형식으로 변환하여 제공.
- PromQL: Prometheus에서 데이터를 분석하고 쿼리하는 언어.
- Alertmanager: Prometheus의 경고 관리를 담당하는 컴포넌트.
- 시계열 데이터(Time Series Data): 시간에 따라 변화하는 메트릭 값을 기록하는 데이터.
주요 솔루션 및 사용 사례
- 도구
- Node Exporter: 시스템 메트릭 수집.
- Blackbox Exporter: HTTP, TCP, ICMP 등을 통한 서비스 상태 점검.
- Pushgateway: 짧은 수명 작업의 메트릭 수집.
- 사용 사례
- Kubernetes 클러스터 상태 모니터링.
- 웹 서비스의 응답 시간 및 트래픽 분석.
- 마이크로서비스 아키텍처의 리소스 사용량 및 성능 모니터링.
- 서버의 CPU, 메모리, 디스크 상태 추적.