Prometheus rate()와 irate()의 차이, increase()는 언제 쓰나
조회 1 · 댓글 0
카운터(counter) 메트릭에서 초당 증가율을 뽑을 때 rate()와 irate() 중 뭘 쓸지 헷갈립니다. 공식 문서 기준으로 정리하면, rate()는 range vector 구간의 초당 평균 증가율입니다. 구간의 처음과 끝을 보고 계산하며 구간 끝까지 외삽(extrapolate)하고, 카운터 리셋(재시작 등)도 자동 보정합니다. 문서는 알림(alerting)과 느리게 증가하는 카운터 그래프에 rate()가 적합하다고 명시합니다.
irate()는 마지막 두 데이터 포인트만으로 순간 증가율을 계산합니다. 반응이 빠른 대신 튀는 값이 그대로 드러나서, 변동이 크고 빠른 카운터를 그래프로 볼 때만 쓰라고 안내합니다. 알림에 irate()를 쓰면 순간적인 변화가 FOR 절을 리셋시킬 수 있고, 드문 스파이크만 남은 그래프는 읽기 어렵다는 주의가 붙어 있습니다.
increase()는 구간 동안의 총 증가량으로, rate()에 구간 초를 곱한 것과 같은 문법 설탕(syntactic sugar)입니다. 셋 다 카운터에만 써야 합니다. 한 가지 실무 주의점: rate()를 sum() 등 집계나 _over_time 함수와 같이 쓸 때는 항상 rate()를 먼저 계산하고 그다음 집계해야 합니다.
# 5분 구간의 초당 평균 요청률 (알림, 대시보드에 무난)
rate(http_requests_total[5m])
# 변동 큰 카운터를 짧은 구간으로 순간율 관찰 (그래프용)
irate(http_requests_total[1m])
# 지난 1시간 총 증가량
increase(http_requests_total[1h])
# 집계는 rate를 먼저, 그다음 sum
sum by (job) (rate(http_requests_total[5m]))🔗 https://prometheus.io/docs/prometheus/latest/querying/functions/
로그인 후 답글을 남길 수 있습니다.