메트릭은 크게 보면 게이지와 카운터라는 2가지로 분류할 수 있다.
게이지(Gauge)
- 임의로 오르내일 수 있는 값
- 예) CPU 사용량, 메모리 사용량, 사용중인 커넥션
카운터(Counter)
- 단순하게 증가하는 단일 누적 값
- 예) HTTP 요청 수, 로그 발생 수
쉽게 이야기해서 게이지는 오르락내리락하는 값이고, 카운터는 특정 이벤트가 발생할 때 마다 그 수를 계속 누적하는 값이다.
게이지(Gauge)
게이지는 오르고 내리고 하는 값이다. 게이지는 현재 상태를 그대로 출력하면 된다.

- 예를 들어서 대표적인 게이지인 CPU 사용량( system_cpu_usage )을 생각해보자.
- CPU 사용량의 현재 상태를 계속 측정하고 그 값을 그대로 그래프에 출력하면 과거부터 지금까지의 CPU 사용량을 확인할 수 있다.
- 게이지는 가장 단순하고 사용하기 쉬운 메트릭이다. 크게 고민하지 않고 있는 그대로를 사용하면 된다.
카운터(Counter)
카운터는 단순하게 증가하는 단일 누적 값이다. 예를 들어서 고객의 HTTP 요청수를 떠올려 보면 바로 이해가 될 것이다.
HTTP 요청을 그래프로 표현해보자.
계속 증가하는 그래프(누적되는 그래프)
예) http_server_requests_seconds_count{uri="/log"}

- HTTP 요청 메트릭을 그래프로 표현해 보자.. 카운터는 계속 누적해서 증가하는 값이다.
- 따라서 계속 증가하는 그래프만 보게 될 것이다. 이렇게 증가만 하는 그래프에서는 특정 시간에 얼마나 고객의 요청이 들어왔는지 한눈에 확인하기 매우 어렵다.
- 이런 문제를 해결하기 위해 increase() , rate() 같은 함수를 지원한다.
increase()
increase()를 사용하면 이런 문제를 해결할 수 있다. 지정한 시간 단위별로 증가를 확인할 수 있다. 마지막에 [시간] [시간]을 사용해서 범위 벡터를 선택해야 한다.
예) increase(http_server_requests_seconds_count{uri="/log"}[1m])

- 분당 얼마나 고객의 요청이 어느정도 증가했는지 한눈에 파악할 수 있다.
rate()

- 범위 백터에서 초당 평균 증가율을 계산한다.
- increase()가 숫자를 직접 카운트한다면, rate()는 여기에 초당 평균을 나누어서 계산한다. increase(data [1m]) 에서 [1m]이라고 하면 60초가 기준이 되므로 60을 나눈 수이다. increase(data [2m]) 에서 [2m]이라고 하면 120초가 기준이 되므로 120을 나눈 수이다.
- 너무 복잡하게 생각하기보다는 초당 얼마나 증가하는지 나타내는 지표로 보면 된다.
irate()

- rate 와 유사한데, 범위 벡터에서 초당 순간 증가율을 계산한다. 급격하게 증가한 내용을 확인하기 좋다.
- 자세한 계산 공식은 공식 매뉴얼을 참고하자.
정리
게이지: 값이 계속 변하는 게이지는 현재 값을 그대로 그래프로 표현하면 된다.
카운터: 값이 단조롭게 증가하는 카운터는 increase() , rate() 등을 사용해서 표현하면 된다. 이렇게 하면 카운터에서 특정 시간에 얼마나 고객의 요청이 들어왔는지 확인할 수 있다.
참고
더 자세한 내용은 다음 프로메테우스 공식 메뉴얼을 참고하자
기본기능: https://prometheus.io/docs/prometheus/latest/querying/basics/
Querying basics | Prometheus
An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.
prometheus.io
연산자: https://prometheus.io/docs/prometheus/latest/querying/operators/
Operators | Prometheus
An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.
prometheus.io
함수: https://prometheus.io/docs/prometheus/latest/querying/functions/
Query functions | Prometheus
An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.
prometheus.io
프로메테우스의 단점은 한눈에 들어오는 대시보드를 만들어보기 어렵다는 점이다. 이 부분은 그라파나를 사용하면 된다.
'스프링 부트(핵심 원리와 활용)' 카테고리의 다른 글
| Ch08. 마이크로미터, 프로메테우스, 그라파나 - 그라파나(대시보드 만들기) (0) | 2023.05.08 |
|---|---|
| Ch08. 마이크로미터, 프로메테우스, 그라파나 - 그라파나(설치, 연동) (0) | 2023.05.08 |
| Ch08. 마이크로미터, 프로메테우스, 그라파나 - 프로메테우스(기본 기능) (0) | 2023.05.05 |
| Ch08. 마이크로미터, 프로메테우스, 그라파나 - 프로메테우스(수집 설정) (0) | 2023.04.30 |
| Ch08. 마이크로미터, 프로메테우스, 그라파나 - 프로메테우스(애플리케이션 설정) (0) | 2023.04.30 |