이것이 점프 투 공작소

프로메테우스의 집계 연산자 본문

모니터링

프로메테우스의 집계 연산자

겅겅겅 2023. 8. 28. 15:51

프로메테우스의 집계 연산자

프로메테우스의 promQL은 총 11개의 집계연산자와 2개의 선택적 구문 without, by를 제공합니다.

without

특정 값을 제외한 메트릭을 선택하는데 사용 할 수 있습니다.

metric_name이나 label_name을 사용하여 메트릭을 선택합니다.

by

메트릭을 그룹화하는 데 사용됩니다. by 구문은 label_name을 사용하여 메트릭을 그룹화합니다. 

표현식 by (레이블) 명령어를 통해 그룹화를 진행 할 수 있습니다.

동일한 집계에 by와 without을 동시에 사용 할 수 없습니다.

expression by (label_name1, label_name2, ...)

sum

가장 많이 사용되는 연산자 중 하나이며, 메트릭의 값을 합산하는데 사용됩니다.

rate()와 함께 사용하여 요청이 시간내에 얼마나 많이 발생했는지 확인하는 용도로 많이 사용됩니다.

아래와 같은 문법으로 사용되며 위 by구문예시 처럼 그룹화 또한 가능합니다.

sum(expression)

count

메트릭의 값의 수를 계산합니다.

by구문을 사용해서 고유한 count또한 확인 가능합니다.

count(expression)

avg

메트릭의 평균을 계산합니다.

sum(expression) / count(expression) 의 결과와 일치합니다.

avg(expression)

아래는 5분동안의 cpu 사용률을 계산하는 avg예시 코드입니다.

without (cpu)를 하는 이유는 cpu수에 관계없이 노드의 값을 비교하고자 위함입니다.

stddev & stdvar

표준편차와 표준분산을 계산합니다.

모니터링에서 이상수치를 확인할 떄 주로 사용됩니다.

정규분포 데이터에서는 평균을 기준으로 표준편차 1배 이내에 68%의 샘플이 2배 이내에 95%의 샘플이 있을것으로 기대합니다.

즉 작업에 포함된 데이터가 표준편차와 몇배 이상 떨어져있다면 뭔가 이상하다는걸 인지 할 수 있습니다.

stddev(expression)
stdvar(expression)

stddev를 이용해 노드 cpu사용량의 표준편차를 구할 수 있습니다.

min & max

최소값과 최대값을 계산합니다.

min(expression)
max(expression)

topk & bottomk

메트릭 값을 기준으로 상위, 하위 n번째까지의 메트릭을 추출합니다.

topk(숫자,expression)
bottomk(숫자,expression)

quantile

분포 내 특정 분위수를 반환홥니다.

예를들어 0.5 quantile은 분포의 중간값을 나타냅니다.

qunantile(숫자, expression)

지난 10분간 노드의 CPU사용량의 90번째에 해당하는 값을 반환합니다.

count_values

시계열 값에 대한 빈도 히스토그램을 의미합니다.

input은 계산할 시계열의 이름입니다.

count_values(input, expression)