Prometheus 개요

Prometheus 개요

모니터링을 처음 시작할 때 "어떤 도구가 우리 인프라에 맞을까"를 고민하게 되죠. Prometheus는 2012년 SoundCloud에서 시작된 오픈소스 시스템 모니터링·알림 도구로, 지금은 Kubernetes 다음으로 CNCF에 두 번째로 호스팅된 프로젝트가 되었어요. 이 글에서는 Prometheus가 무엇인지, 어떤 특징과 구성 요소로 이루어졌는지를 전체 그림으로 잡아드릴게요.

출처: Prometheus 공식 문서 — Overview

Prometheus란?

Prometheus는 시계열 데이터(time series data)로 메트릭을 수집하고 저장해요. 각 메트릭은 기록된 시각과 함께, 라벨(label)이라 부르는 키-값 쌍을 곁들여 보관됩니다. 지금은 독립적인 오픈소스 프로젝트로 운영되며, 2016년부터는 CNCF의 공식 프로젝트로 관리되고 있어요.

주요 특징

  • 다차원 데이터 모델 — 메트릭 이름과 키-값 쌍(라벨)으로 시계열 데이터를 식별해요.
  • PromQL — 이 다차원성을 활용할 수 있는 유연한 질의 언어예요.
  • 분산 스토리지 불필요 — 단일 서버 노드가 자율적으로 동작해요.
  • 풀(pull) 모델 수집 — HTTP를 통해 시계열을 끌어와 수집해요.
  • Push 게이트웨이 — 중간 게이트웨이를 거쳐 시계열을 밀어넣을 수도 있어요.
  • 서비스 디스커버리 — 대상(target)은 정적 설정이나 서비스 디스커버리로 발견돼요.
  • 다양한 시각화 — 여러 모드의 그래프·대시보드 지원이 있어요.

메트릭이란?

간단히 말하면 메트릭은 "숫자로 표현한 측정값"이에요. 시계열은 그 값이 시간에 따라 어떻게 변하는지를 기록한 것이고요. 무엇을 측정할지는 애플리케이션마다 달라요. 웹 서버라면 요청 시간을, 데이터베이스라면 활성 커넥션 수나 실행 중인 쿼리 수를 볼 수 있겠죠.

구성 요소

  • Prometheus 서버 — 시계열 데이터를 스크랩(scrape)하고 저장하는 핵심이에요.
  • 클라이언트 라이브러리 — 애플리케이션 코드를 계측(instrument)할 때 써요.
  • Push 게이트웨이 — 수명이 짧은 잡(job)을 지원하기 위한 도구예요.
  • 특수 목적 익스포터 — HAProxy, StatsD, Graphite 같은 서비스를 위한 도구예요.
  • Alertmanager — 알림을 처리하는 도구예요.
  • 각종 지원 도구 — 함께 쓰이는 다양한 유틸리티가 있어요.

대부분의 Prometheus 구성 요소는 Go로 작성되어 있어서, 정적 바이너리로 쉽게 빌드하고 배포할 수 있어요.

아키텍처

Prometheus는 계측된 잡에서 직접, 또는 수명이 짧은 잡의 경우 Push 게이트웨이를 거쳐 메트릭을 스크랩해요. 수집한 모든 샘플은 로컬에 저장되고, 이 데이터에 규칙(rule)을 적용해 기존 데이터를 집계한 새 시계열을 기록하거나 알림을 생성해요. 시각화는 Grafana 등 외부 도구와 연동하곤 해요.

언제 적합할까?

Prometheus는 순수한 숫자형 시계열을 기록하는 데 탁월해요. 머신 중심 모니터링은 물론, 매우 동적인 서비스 지향 아키텍처 모니터링에도 잘 맞아요. 마이크로서비스 환경에서는 다차원 데이터 수집과 질의 능력이 특히 강점이에요. 각 Prometheus 서버가 독립적이라 네트워크 스토리지나 원격 서비스에 의존하지 않죠. 그래서 장애 상황에서도 "이 시스템에 가면 진단이 가능하다"고 믿고 의지할 수 있는 도구로 설계되었어요.

더 알아보기