Prometheus란?
Prometheus란? (What is Prometheus?)
Observability(관측 가능성)는 시스템이 만들어내는 데이터를 바탕으로 내부 상태를 이해해 인프라가 건강한지 판단하는 데 집중해요. Prometheus는 시스템 모니터링·관측을 위한 핵심 기술이지만, 여러 맥락에서 쓰여 "Prometheus"라는 용어가 헷갈릴 수 있어요. 데이터·소프트웨어·배포 관점의 Prometheus를 이해하면 Grafana도 더 잘 쓸 수 있습니다.
출처: 문서
본문
Prometheus는 2012년 SoundCloud에서 기존 기술로는 관측 요구를 충족할 수 없어 시작됐어요. 견고한 데이터 모델과 쿼리 언어를 제공하고 단순·확장 가능합니다. 2018년 Cloud Native Computing Foundation(CNCF) 인큐베이션을 졸업했고 오늘날 활발한 커뮤니티가 있습니다.
데이터로서의 Prometheus
대시보드 패널이 보여주는 데이터는 *시계열(time series)*을 이룹니다. X축은 시점, Y축은 숫자·측정값(예: 초당 5MB)이에요. Prometheus는 시계열 데이터를 수집·저장하는 기술이며, 데이터 모델은 다음으로 구성됩니다.
- timestamp와 sample(숫자 값)로 이루어진 metrics
job,device같은 dimensions라 불리는 라벨 집합
시계열 데이터를 관계형 DB에 저장할 수도 있지만 그런 시스템들은 대용량 시계열 저장·쿼리에 최적화되지 않았어요.
PromQL을 쓰는 간단한 대시보드
Metrics browser 필드에 다음 쿼리가 들어있습니다:
node_disk_written_bytes_total{job="integrations/macos-node", device!=""}
이 쿼리는 관심 메트릭(node_disk_written_bytes_total)을 식별하고 두 라벨(job, device)을 제공해요. 라벨 선택자 job="integrations/macos-node"가 메트릭을 필터링하고 device 라벨이 비어 있지 않도록 지정합니다. 결과는 그래프가 표시하는 원시 숫자 스트림이에요.
이 보기는 시스템 성능을 일부 보여주지만 전체 이야기는 아니에요. 쓰기가 얼마나 빠르게 변하는지(변화율)를 이해해야 명확해집니다. PromQL의 rate() 함수는 5m(5분) 간격의 초당 평균 증가율을 보여줍니다.
카운터(counter) 메트릭은 증가만 하는 숫자(예: 총 쓰기 바이트)의 한 유형이며, Prometheus는 증가·감소하는 gauge, 관측을 개수 세고 구성 가능한 그룹으로 정리하는 histogram 등 여러 유형을 지원합니다. 이러한 시계열·메트릭·라벨·집계 함수 개념은 Grafana와 관측 가능성의 기초입니다.
이것이 왜 중요한가
소프트웨어·시스템에서는 때로 문제가 발생합니다. Observability는 시스템 상태를 이해해 문제를 빠르게 식별하고 선제적으로 대응하게 해주며, 문제 발생 시 SLO(Service Level Objective) 안에서 진단·해결하도록 알려줍니다. 관측 가능성의 세 기둥은 메트릭, 로그, 트레이스이고 Prometheus는 메트릭 기둥을 지원해요.
소프트웨어로서의 Prometheus
Prometheus는 데이터 형식일 뿐 아니라 오픈소스 시스템 모니터링·알림 툴킷이에요. 클라이언트 라이브러리로 계측된 소프트웨어의 엔드포인트를 주기적으로 다시 방문해 새 데이터를 확인하는 스크래핑(scraping) 방식으로 메트릭을 수집·저장합니다. 예: NodeJS 앱이 prom-client로 메트릭을 엔드포인트에 노출하면 Prometheus가 정기적으로 스크래핑해요.
배포로서의 Prometheus
'MyApp' 애플리케이션이 Prometheus 클라이언트로 http://localhost:3000/metrics 엔드포인트에 메트릭을 노출한다고 해요. 애플리케이션이나 인프라의 측정값을 기록·전송하는 과정을 telemetry라고 합니다. 메트릭을 Grafana로 가져오려면 Prometheus 소프트웨어나 Grafana Alloy로 스크래핑할 수 있어요. Grafana Alloy는 텔레메트리 데이터를 수집·전달해 Grafana Stack 오픈소스 배포, Grafana Cloud, 또는 Grafana Enterprise로 보냅니다(예: MyApp에서 5초마다 데이터를 당겨 Grafana Cloud로 전송). 규모를 키워 로그·트레이스까지 확장하면 Alloy가 이미 해결책을 갖고 있어요.
종합
Prometheus와 Grafana Alloy의 결합으로 보고할 메트릭, 출처, 목적지를 제어할 수 있어요. 데이터가 Grafana에 들어오면 Grafana Mimir 데이터베이스에 저장되고, 대시보드는 Prometheus 데이터 소스에서 쿼리한 데이터로 채워집니다. PromQL 쿼리가 데이터를 필터·집계해 필요한 통찰을 제공해요. 이렇게 원시 숫자가 Prometheus로, Grafana로, PromQL로 쿼리되어 Grafana에서 시각화되죠.
다음 단계
- Grafana에서 대시보드 만들기
- Grafana Mimir - Prometheus 데이터용 데이터베이스
- Prometheus 데이터 소스 또는 PromQL 기초