PromQL
Data Model
# 주석
<metric_name>[{<label>="<label_value>"[,<label>="<label_value>"]}] <value>
<metric_name>
:[a-zA-Z_:][a-zA-Z0-9_:]*
정규식을 만족해야합니다<label>
:[a-zA-Z_][a-zA-Z0-9_]*
정규식을 만족해야합니다instance
: 데이터를 수집할 타겟의host:port
로, Prometheus가 데이터를 수집할 때 자동으로 추가합니다job
: 같은 목적을 가진 인스턴스 집합의 이름으로, Prometheus가 데이터를 수집할 때 자동으로 추가합니다
<label_value>
: 모든 문자열을 허용하며, 빈 문자열인 경우 해당 레이블을 사용하지 않은 것으로 간주합니다- 메트릭 이름과 레이블의 조합은 시계열 데이터의 키가 됩니다
경고
메트릭 이름에서 :
은 사용자 정의 recording rule에서 사용되고, __
로 시작하는 레이블은 내부 사용을 위해 예약되어 있습니다.
PromQL
Instant Vector
여러 시계열 데이터에서 같은 timestamp를 갖는 샘플을 한 개씩 모아서 만든 집합입니다.
[<metric_name>][{<label><match_operator>"<string|regex>"[,<label><match_operator>"<string|regex>"]}]
- 메트릭 이름 또는 레이블만으로 쿼리할 수 있습니다
__name__
레이블의 값으로 메트릭 이름을 지정할 수 있습니다<match_operator>
:=
,!=
,=~
,!~
중 하나입니다=
: 레이블의 값이 주어진문자열
과 일치!=
: 레이블의 값이 주어진문자열
과 불일치=~
: 레이블의 값이 주어진정규식
과 일치!~
: 레이블의 값이 주어진정규식
과 불일치
Range Vector
여러 시계열 데이터에서 주어진 범위의 timestamp를 갖는 샘플들을 모아서 만든 집합입니다.
# duration에 사용되는 []는 옵션의 의미가 아닙니다
# Ex) http_requests_total[5m]
<instant_vector_expr>[<duration>[:<resolution>]] [offset <duration>] [@ <unix_timestamp>|start()|end()]
<duration>
: 숫자 + 단위로 구성된 값을 사용합니다.- 단위:
ms
,s
,m
,h
,d
,w
,y
- 단위:
Operators
Aggregation Operators
<operator> [without|by (<label>[,<label>])] ([parameter,] <instantVector>)
또는
<operator> ([parameter,] <instantVector>) [without|by (<label>[,<label>])]
sum (<instantVector>)
: 메트릭의 총합을 구합니다.sum by (<label>[,<label>]) (<instantVector>)
:<label>[,<label>]
이 같은 메트릭의 총합을 구합니다.sum without (<label>[,<label>]) (<instantVector>)
:<label>[,<label>]
이 다른 메트릭의 총합을 구합니다.
Functions
rate(<rangeVector>)
: x축을 timestamp로하는 그래프의 평균 변화율을 계산합니다.