안녕하세요! 👋 오늘은 시스템 및 애플리케이션 모니터링의 필수 도구, Prometheus의 핵심 구성 요소인 메트릭 타입에 대해 쉽고 상세하게 알아보는 시간을 갖겠습니다. Prometheus를 처음 접하시는 분들도, 이미 사용하고 계신 분들도 이번 기회에 개념을 확실히 다져보세요! 🚀
시스템의 상태를 정확하게 파악하고 싶다면, 어떤 데이터를 어떻게 수집할지 결정하는 것이 매우 중요합니다. Prometheus는 이를 위해 4가지 핵심 메트릭 타입을 제공하는데요, 바로 카운터(Counter), 게이지(Gauge), 히스토그램(Histogram), 서머리(Summary)입니다. 각 타입이 어떤 특징을 가지고 있고, 언제 사용해야 하는지 지금부터 하나씩 파헤쳐 보겠습니다!

1. 카운터 (Counter) 📈: 오직 증가만 아는 숫자
카운터는 이름 그대로 누적되는 값을 기록하는 메트릭 타입입니다. 가장 큰 특징은 값이 오직 증가만 가능하다는 점입니다. 마치 자동차의 총주행거리 계기판처럼, 뒤로 가지 않고 앞으로만 나아가죠. 물론, 시스템이 재시작되면 0으로 초기화될 수는 있습니다.
- 🤔 언제 사용할까요?
- 웹 서버의 총 HTTP 요청 횟수
- API 호출 성공 또는 실패 횟수
- 작업 완료 건수
- 에러 발생 총횟수
- 예시: http_requests_total
- 이 메트릭은 서비스가 시작된 이후 받은 모든 HTTP 요청의 총개수를 나타냅니다.
- 💡 핵심 포인트!
- 카운터 자체의 값보다는 시간에 따른 변화율(rate)을 계산해서 "초당 요청 수"와 같은 의미 있는 데이터를 추출하는 데 주로 사용됩니다. 이를 위해 PromQL의 rate()나 irate() 함수를 함께 사용하죠.
2. 게이지 (Gauge) 🌡️: 실시간 상태를 보여주는 온도계
게이지는 현재 상태의 측정값을 나타내는 메트릭 타입입니다. 카운터와 달리, 값이 증가할 수도 있고 감소할 수도 있습니다. 마치 온도계가 주변 온도에 따라 올라가고 내려가는 것과 같습니다.
- 🤔 언제 사용할까요?
- 현재 사용 중인 메모리 양
- 활성화된 사용자 세션 수
- 큐(Queue)에 쌓여있는 작업의 개수
- CPU 사용률
- 예시: memory_usage_bytes, cpu_temperature_celsius
- memory_usage_bytes는 현재 애플리케이션이 사용하고 있는 메모리 양을, cpu_temperature_celsius는 현재 CPU의 온도를 나타냅니다. 이 값들은 수시로 변할 수 있습니다.
- 💡 핵심 포인트!
- 시스템의 현재 상태를 스냅샷처럼 파악하고 싶을 때 유용합니다.
3. 히스토그램 (Histogram) 📊: 데이터의 분포를 한눈에
히스토그램은 조금 더 복잡한 메트릭 타입으로, 관찰된 데이터의 분포를 측정합니다. 주로 요청 처리 시간(latency)이나 응답 크기(response size)와 같이, 값의 분포를 파악하는 것이 중요할 때 사용됩니다.
히스토그램은 데이터를 미리 정의된 여러 개의 버킷(bucket)에 나누어 담습니다. 예를 들어, 0.1초 이하, 0.5초 이하, 1초 이하 등으로 버킷을 나누고, 각 요청이 처리될 때마다 해당하는 버킷의 카운트를 1씩 증가시킵니다.
- 🤔 언제 사용할까요?
- API 요청의 응답 시간 분포
- HTTP 요청의 크기 분포
히스토그램은 내부적으로 다음과 같은 여러 시계열 데이터를 만듭니다.
- _bucket{le="<상한값>"}: 각 버킷의 상한값(le, less than or equal)보다 작거나 같은 값들의 누적 개수
- _sum: 모든 관찰된 값의 총합
- _count: 관찰된 이벤트의 총횟수
- 예시: http_request_duration_seconds
- 이 메트릭을 통해 "전체 요청의 95%가 몇 초 안에 처리되었는가?"와 같은 백분위수(percentile)를 계산할 수 있습니다.
- 💡 핵심 포인트!
- 여러 인스턴스에 걸쳐 데이터를 집계(aggregate)하고 백분위수를 계산하는 데 매우 유용합니다. 서버 측에서 PromQL의 histogram_quantile() 함수를 사용하여 유연하게 분위수 계산이 가능합니다.
4. 서머리 (Summary) 📝: 정확한 백분위수를 위한 요약본
서머리도 히스토그램과 마찬가지로 데이터의 분포를 측정하는 데 사용됩니다. 하지만 작동 방식에 중요한 차이가 있습니다. 서머리는 서버에서 백분위수를 계산하는 히스토그램과 달리, 클라이언트(애플리케이션) 측에서 직접 백분위수(quantile)를 계산하여 노출합니다.
- 🤔 언제 사용할까요?
- 응답 시간의 중앙값(50th percentile), 95th percentile, 99th percentile 등을 정확하게 알고 싶을 때
서머리는 다음과 같은 시계열 데이터를 만듭니다.
- {quantile="<분위수>"}: 설정된 분위수에 해당하는 값
- _sum: 모든 관찰된 값의 총합
- _count: 관찰된 이벤트의 총횟수
- 예시: http_request_duration_seconds (서머리 타입으로)
- 이 메트릭은 http_request_duration_seconds{quantile="0.95"} 와 같이 직접적인 백분위수 값을 제공합니다.
- 💡 핵심 포인트!
- 클라이언트에서 직접 계산하므로 백분위수 값 자체는 매우 정확합니다. 하지만 여러 인스턴스의 데이터를 집계하여 평균을 내는 등의 연산이 불가능하다는 큰 단점이 있습니다. 따라서 대부분의 경우, 집계가 유연한 히스토그램 사용이 권장됩니다.
🧐 한눈에 보는 메트릭 타입 비교
| 메트릭 타입 | 특징 | 주요 사용 사례 | PromQL 함수 예시 |
| 카운터 | 단조롭게 증가하는 누적 값 | 요청 횟수, 에러 수 | rate(), increase() |
| 게이지 | 오르내릴 수 있는 현재 값 | 메모리 사용량, CPU 온도 | avg_over_time() |
| 히스토그램 | 데이터 분포 (서버에서 분위수 계산) | 응답 시간 분포, 요청 크기 | histogram_quantile() |
| 서머리 | 데이터 분포 (클라이언트에서 분위수 계산) | 정확한 단일 인스턴스 분위수 | 직접 조회 |
결론
지금까지 Prometheus의 네 가지 핵심 메트릭 타입에 대해 알아보았습니다. 각 타입의 특징과 용도를 잘 이해하고 상황에 맞는 메트릭을 사용하는 것이 효과적인 모니터링 시스템을 구축하는 첫걸음입니다.
- 단순 카운팅이 필요하면 카운터!
- 현재 상태 값이 궁금하면 게이지!
- 데이터 분포와 집계가 필요하면 히스토그램!
- 정확한 개별 백분위수가 필요하다면 서머리!
이 가이드가 여러분의 Prometheus 여정에 도움이 되었기를 바랍니다! 😊
태그: Prometheus, Monitoring, Metric Types, Counter, Gauge, Histogram, Summary, Observability, DevOps
'클라우드 > prometheus' 카테고리의 다른 글
| Prometheus 모범 사례: 올바른 메트릭과 레이블 설계하기 🚀 (0) | 2025.10.11 |
|---|---|
| 🧐 프로메테우스, '이렇게' 써야 전문가! 애플리케이션 모니터링 베스트 프랙티스 (0) | 2025.10.11 |
| 황금 쿠버스트로넛(Golden Kuberstroaunut)을 아시나요? 쿠버네티스 전문가의 새로운 상징! ✨ (1) | 2025.09.28 |
| 🚀 Observability의 완성! LGTM 스택으로 그라파나 생태계 정복하기 (0) | 2025.09.26 |
| 쿠버네티스(Kubernetes) 데이터베이스, 내부에? 외부에? 속 시원히 알려드립니다! 🤔 (2) | 2025.09.10 |