프롬쿼리를 공부중인데
카운터, 게이지, 히스토그램등 메트릭타입은 이해를 했다. 쿼리를 레이블로 필터링하거나 혹은 정규표현식으로 필터링하는것까지도 이해를했다.
다만
instant vector
range vector
rate함수
서브쿼리가 잘 이해가지 않아, 이해하기 위해 끄적인다.
사용 메트릭
promhttp_metric_handler_requests_total{code="200"}
메트릭 설명 :
프로메테우스 메트릭 수집관련 http 응답코드중 200(정상)반환한 요청의 수
쿼리1. instant Vector
promhttp_metric_handler_requests_total{code="200"}
결과값
결과값 설명 :promhttp_metric_handler_requests_total 결과값
그래프 결과 :
쿼리2. Range Vector
promhttp_metric_handler_requests_total{code="200"}[5m]
결과값:
결과값 설명: 지난 5분간의 반환값. 갯수는 총 20개다. 현재 프로메테우스에서 메트릭 수집하는게 15초간격으로 하니까 5분이면 20개가 맞다.
그래프결과: 결과값 자체가 타임스탬프별 결과값을 테이블 형식으로 가지고 있기 때문에 그래프 출력 못함.
쿼리3. rate(promhttp_metric_handler_requests_total{code="200"}[5m])
결과값:
결과값 설명: rate함수(초당 평균 증가율을 계산하는 함수)를 사용하여 5분(300초)동안 초당 평균 요청 증가율을 출력한것.
앞서 5m일때의 값이 약 20개이다. 즉 rate함수가 초당 평균증가율을 계산하는거니까 300초([5m])동안 약 20개 가량이 증가했으니까 20 / 300 하면 대략 0.066666667이 나온다.
그래프결과:
06시 9분에 처음 메트릭 수집이 시작됐고 5분뒤인 14분에 약 20개 가량의 결과값이 쌓였다.
그래서 위와같이 약 14분가량에 밸류값이 0.06666667에 가까운것을 알수있다.
레인지 백터로 5m을 줬을 때 최근 5분동안의 결과값을 타임스탬프 형식으로 가져오는것은 맞다. 여기서 오해하면 안되는게 rate 함수를 사용했을 때 최근 5분동안의 증가율만 결과값으로 반환하지만 이를 그래프로 표현했을때는 수집 시점부터의 수집값을 가지고 그래프를 그린다는것
쿼리4-1.
rate(promhttp_metric_handler_requests_total{code="200"}[5m])[10m:1m]
결과값:
쿼리4-2.
rate(promhttp_metric_handler_requests_total{code="200"}[5m])[20m:1m]
결과값:
쿼리4-3.
rate(promhttp_metric_handler_requests_total{code="200"}[5m])[20m:10m]
결과값:
쿼리4-4.
rate(promhttp_metric_handler_requests_total{code="200"}[5m])[180m:10m]
결과값:
마지막으로 서브 쿼리에 대한 설명이다. [180m:10m]180분동안 10분간격으로 데이터를 가져온다는 뜻이다.