스프링 부트(핵심 원리와 활용)

Ch08. 마이크로미터, 프로메테우스, 그라파나 - 프로메테우스(기본 기능)

webmaster 2023. 5. 8. 00:20
728x90

메트릭은 크게 보면 게이지와 카운터라는 2가지로 분류할 수 있다.

게이지(Gauge)

  • 임의로 오르내일 수 있는 값
  • 예) CPU 사용량, 메모리 사용량, 사용중인 커넥션

카운터(Counter)

  • 단순하게 증가하는 단일 누적 값
  • 예) HTTP 요청 수, 로그 발생 수

쉽게 이야기해서 게이지는 오르락내리락하는 값이고, 카운터는 특정 이벤트가 발생할 때 마다 그 수를 계속 누적하는 값이다.

게이지(Gauge)

게이지는 오르고 내리고 하는 값이다. 게이지는 현재 상태를 그대로 출력하면 된다.

system_cpu_usage

  • 예를 들어서 대표적인 게이지인 CPU 사용량( system_cpu_usage )을 생각해보자.
  • CPU 사용량의 현재 상태를 계속 측정하고 그 값을 그대로 그래프에 출력하면 과거부터 지금까지의 CPU 사용량을 확인할 수 있다.
  • 게이지는 가장 단순하고 사용하기 쉬운 메트릭이다. 크게 고민하지 않고 있는 그대로를 사용하면 된다.

카운터(Counter)

카운터는 단순하게 증가하는 단일 누적 값이다. 예를 들어서 고객의 HTTP 요청수를 떠올려 보면 바로 이해가 될 것이다.
HTTP
요청을 그래프로 표현해보자.

계속 증가하는 그래프(누적되는 그래프)

) http_server_requests_seconds_count{uri="/log"}

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

increase()

increase()를 사용하면 이런 문제를 해결할 수 있다. 지정한 시간 단위별로 증가를 확인할 수 있다. 마지막에 [시간] [시간]을 사용해서 범위 벡터를 선택해야 한다.
) increase(http_server_requests_seconds_count{uri="/log"}[1m])

increase(http_server_requests_seconds_count{uri="/log"}[1m])

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

rate()

rate(http_server_requests_seconds_count{uri="/log"}[1m])

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

irate()

irate(http_server_requests_seconds_count{uri="/log"}[1m])

  • 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

 프로메테우스의 단점은 한눈에 들어오는 대시보드를 만들어보기 어렵다는 점이다. 이 부분은 그라파나를 사용하면 된다.

 

728x90