[Prometheus] Prometheus란?

Uk-Jake·2024년 12월 9일

Prometheus

목록 보기
1/2
post-thumbnail

Prometheus란?

  • Prometheus는 메트릭 수집, 시각화, 알림, 서비스 디스커버리 기능을 제공하는 오픈 소스 모니터링 시스템입니다.
  • 원래 SoundCloud에서 개발되었으나, 오픈 소스로 전환된 후 CNCF(Cloud Native Computing Foundation)의 프로젝트로 채택되었습니다.
  • Prometheus는 타겟(Target)에서 시간 경과에 따른 메트릭을 수집하여 시계열 데이터베이스(Time-Series Database) 형태로 저장합니다.

Prometheus의 주요 기능

  1. HTTP 엔드포인트를 통한 Pull 방식의 메트릭 수집 및 시계열 데이터 저장
  2. 서비스 디스커버리를 활용한 동적 모니터링
  3. PromQL을 이용한 시계열 데이터 쿼리 및 집계
  4. Grafana와 같은 시각화 도구를 통해 데이터 시각화

Prometheus 데이터 저장 방식

Prometheus는 WAL(Write-Ahead Log)과 청크(chunk)를 사용하여 데이터를 저장합니다.

  1. Prometheus는 타겟으로부터 메트릭을 수집하여 이를 시계열 데이터로 변환합니다.
  2. 수집된 메트릭은 메모리 내 데이터 구조로 저장됩니다.
  3. 동시에, 데이터는 WAL에 기록됩니다.
  4. 메모리 내 데이터는 chunk 형태로 구성되며, 주기적으로 로컬 파일 시스템에 저장(flush)된 후 가장 오래된 WAL 파일은 삭제됩니다.
  5. 디스크에 저장된 chunk는 정기적으로 compaction과정(최적화)을 거쳐 저장 공간을 최적화합니다.
  6. Prometheus가 재시작되면 WAL 데이터를 읽어 메모리에 다시 적재함으로써 데이터의 연속성을 유지합니다.

Prometheus 아키텍처


1. Retrieval (데이터 수집)

  • Retrieval은 서비스 디스커버리에 정의된 타겟(Target)을 식별하고 데이터를 수집합니다.
  • Kubernetes Service Discovery를 활용하면 클러스터 내 실행 중인 서비스를 동적으로 검색하고 모니터링할 수 있습니다.

2. Exporters (데이터 변환기)

  • Exporters는 Prometheus에서 직접 호환되지 않는 서비스(예: OS 레벨 메트릭)를 모니터링하거나 데이터를 수집할 때 사용됩니다.
  • 시스템의 메트릭 데이터를 Prometheus가 이해할 수 있는 형식으로 변환하며, 변환된 데이터를 Retrieval이 가져옵니다.

3. Pushgateway (배치 작업 지원)

  • Pushgateway는 짧은 지속 시간의 작업(예: 배치 작업)에서 발생하는 메트릭 데이터를 수집하는 역할을 합니다.
  • 해당 메트릭은 Pushgateway를 통해 Prometheus가 데이터를 가져올 수 있도록 저장됩니다.

4. Alertmanager (알림 관리)

  • Alertmanager는 Prometheus가 생성한 알림(Alert)을 수신하고, 이를 필터링, 그룹화, 전달하여 최종 수신자(예: 이메일, 슬랙 등)에게 전달합니다.
  • 알림의 우선순위를 설정하거나 특정 조건에 따라 그룹화하여 효율적으로 알림을 관리할 수 있습니다.

5. Prometheus Server (데이터 제공)

  • Prometheus HTTP Server는 수집한 데이터를 HTTP 엔드포인트로 노출하여 Grafana와 같은 시각화 도구나 API 클라이언트가 데이터를 조회할 수 있도록 지원합니다.

Prometheus 데이터 흐름

  1. 서비스 디스커버리를 통해 타겟을 식별.
  2. 타겟에서 메트릭 데이터를 Pull 방식으로 수집.
  3. 수집된 메트릭 데이터를 메모리에 저장하고 WAL에 기록.
  4. 메모리에서 chunk 형태로 데이터를 디스크에 저장합니다.
  5. 필요에 따라 PromQL을 사용해 데이터를 쿼리 및 분석하며, Grafana를 통해 시각화합니다.

📚 참고 자료

0개의 댓글