Prometheus를 쓰다 보면 가장 많이 마주치는 개념이 바로 메트릭 타입이다.
메트릭 타입을 정확히 이해해야 올바른 모니터링과 알람 설정이 가능하다.
Prometheus에는 총 4가지 메트릭 타입이 있다.
이 글에서는 각각의 개념을 쉽게 설명하고,
실습은 Gauge / Counter 타입 조회 두 가지만 다뤄볼 것이다.
Gauge는 말 그대로 눈금(Gauge) 값처럼
현재 상태를 나타내는 변수이다.
특징
ex)
즉, “어제 40이었다가 지금 27로 떨어졌네?” → 이런 데이터가 Gauge에 해당한다.
Counter는 이름 그대로 계수기라고 볼 수 있다.
특징은 하나다.
특징
ex)
즉, “몇 번 발생했냐?”만 중요한 상황에서 쓰는 타입이라고 볼 수 있다.
Histogram은 버킷(bucket) 으로 값들을 모아
구간별로 몇 개가 들어왔는지를 세는 방식이다.
특징
ex)
즉, “응답시간이 어떤 분포인지 알고 싶다” → Histogram.
Summary는 백분위(percentile)를 내부적으로 계산하여 제공하는 메트릭이다.
특징
ex)
Histogram과 비슷해 보이지만 목적이 조금 다르다.
Prometheus UI → Graph 탭에서 아래 입력:
예제 1 — 시스템 부하(load average)
node_load1

이 값은 계속 오르락내리락하는 Gauge 타입이다.
예제 2 — 남은 메모리
node_memory_MemAvailable_bytes

그래프 찍어보면 현재 남아있는 메모리 용량이 실시간으로 변하는 것을 확인할 수 있다.
Prometheus UI → Graph 에서 입력:
예제 1 — 컨테이너 재시작 횟수
kube_pod_container_status_restarts_total

특정 파드만 조회하고 싶으면:
kube_pod_container_status_restarts_total{pod="busybox-test"}

이 값은 절대 감소하지 않고,
재시작이 일어날수록 증가한다.
예제 2 — 프로세스 CPU 누적 사용 시간
process_cpu_seconds_total

Counter 특성에 따라 숫자가 계속 증가한다.
| 타입 | 특징 | 예 |
|---|---|---|
| Gauge | 오르락내리락 가능한 현재 상태 | node_load1, node_memory_MemAvailable_bytes |
| Counter | 증가만 함, 누적 값 | kube_pod_container_status_restarts_total |
| Histogram | 분포 저장 (bucket) | HTTP latency 분포 |
| Summary | Exporter가 quantile 계산 | p99, p95 등 |
위 실습에서 아래 쿼리가 있었다.
kube_pod_container_status_restarts_total{pod="busybox-test"}
이 {pod="busybox-test"} 부분이 바로 레이블 매처(Label Matcher)라는 것이다.
Prometheus 메트릭에 달려 있는 레이블(label)을 기준으로 특정 데이터만 필터링하는 문법이다.
메트릭은 단순 숫자가 아니라,
key=value 형태의 레이블이 함께 붙어 있다.
ex)
kube_pod_container_status_restarts_total{namespace="default", pod="busybox-test", container="busybox"}
레이블 매처를 사용하면,
이 메트릭 중에서 원하는 조건만 뽑아올 수 있다.
예를 들어:
{pod="busybox-test"}
{namespace="monitoring"}
{container!="POD"}
kube_pod_container_status_restarts_total{pod=~"busy.*"}
이런식으로 여러가지 필터링을 하여 표현할 수 있다.
| 문법 | 의미 | 예시 |
|---|---|---|
= | 정확히 일치 | {pod="busybox-test"} |
!= | 해당 값만 제외 | {container!="POD"} |
=~ | 정규식(regex) 매칭 | {pod=~"busy.*"} → busy로 시작하는 모든 파드 |
!~ | 정규식 불일치 | {pod!~"nginx.*"} → nginx로 시작하는 건 제외 |
레이블 매처는 Prometheus에서 정확히 내가 보고 싶은 대상만 골라내기 위한 필터라고 보면 된다.
Gauge / Counter / Histogram / Summary 모든 메트릭 타입에 적용 가능하다.