Prometheus Metric Type

Prometheus Metric Type

1. Prometheus Metric Type

Prometheus는 Metric을 Counter, Gauge, Histogram, Summary 4가지 타입으로 구분하며, 각 Type별로 주로 이용하는 함수나 계산 방법이 존재한다.

1.1 Counter

http_requests_total 1234

rate(http_requests_total[5m])
increase(http_requests_total[1h])
[Query 1] Counter Type Example

Counter Type은 단조 증가하는 Metric을 나타내는 타입이다. 주로 총 요청 수, 오류 수, 총 처리량 등을 나타내는 Metric에 사용된다. Counter Type은 값이 단조 증가하기 때문에 증가량을 계산하는것이 핵심이며, 이를 위해서 주로 rate(), irate() 또는 increase() 함수를 사용해 증가율이나 증가량을 계산한다.

1.2 Gauge

memory_usage_bytes 654321

min(memory_usage_bytes)
max(memory_usage_bytes)
avg(memory_usage_bytes)
delta(memory_usage_bytes)
[Query 2] Gauge Type Example

Gauge Type은 증가 또는 감소하는 Metric을 나타내는 타입이다. 주로 온도, 메모리 사용량과 같이 측정되는 값을 나타내는 Metric에 사용된다. Gauge Type은 값이 증가하거나 감소할 수 있기 때문에 현재값, 최대값, 최소값, 평균값, 변화량을 계산하는것이 핵심이며, 이를 위해서 주로 min(), max(), avg(), delta() 등의 함수를 사용해 현재, 최대, 최소 값을 계산한다.

1.3 Histogram

http_request_duration_seconds_bucket{le="0.1"} 1200
http_request_duration_seconds_bucket{le="0.5"} 3400
http_request_duration_seconds_bucket{le="1.0"} 4500
http_request_duration_seconds_bucket{le="+Inf"} 5000
http_request_duration_seconds_count 5000
http_request_duration_seconds_sum 750

# Calculate 95th percentile of request duration
histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))
[Query 3] Histogram Type Example

Histogram Type은 데이터를 여러 Bucket으로 분할하여 값의 분포를 저장하는 Metric이다. 주로 응답 시간, 요청 크기, 처리 시간 등의 분포를 나타내는 Metric에 사용된다. Histogram Type에는 Lower or Equal를 의미하는 le Label이 존재하며, 이를 통해서 Bucket에 존재하는 값을 나타낸다. 예를 들어 [Query 3]에 존재하는 http_request_duration_seconds_bucket는 0.1초 이하의 HTTP Request 응답 시간이 1200번, 0.5초 이하의 HTTP Request 응답 시간이 3400번, 1초 이하의 HTTP Request 응답 시간이 4500번, 그 이상의 HTTP Request 응답 시간이 5000번 발생한 것을 나타낸다. 주로 histogram_quantile() 함수를 통해서 분위수를 계산하여 이용한다.

1.4 Summary

http_request_duration_seconds{quantile="0.5"} 0.2
http_request_duration_seconds{quantile="0.9"} 0.5
http_request_duration_seconds{quantile="0.99"} 0.7
http_request_duration_seconds_count 5000
http_request_duration_seconds_sum 750
[Query 4] Summary Type Example

Summary Type은 Histogram Type과 유사하지만, 미리 계산된 분위수를 저장하는 Metric이다. Summary Type에는 quantile Label이 존재하며, 이를 통해서 저장된 분위수를 나타낸다. 예를 들어 [Query 4]에 존재하는 http_request_duration_seconds는 0.5 분위수가 0.2초, 0.9 분위수가 0.5초, 0.99 분위수가 0.7초인 것을 나타낸다.

2. 참고