PromQL 쿼리¶
차트에 PromQL 쿼리를 적용하면 Prometheus 데이터 소스에서 시계열 데이터를 추출하고 분석하여 결과를 차트에 직관적으로 시각화할 수 있습니다.
간단한 정의
PromQL은 Prometheus의 쿼리 언어로, Prometheus 데이터 소스에서 시계열 데이터를 쿼리하고 조작하는 데 사용됩니다. 풍부한 함수와 연산자를 제공하여 데이터 집계, 필터링, 계산 및 비교를 지원하며, 사용자가 데이터를 빠르게 추출하고 분석할 수 있도록 돕습니다.
쿼리 시작¶
- PromQL 쿼리 추가를 클릭합니다.
- 쿼리 방식을 선택합니다.
- 쿼리를 시작합니다.
쿼리 방식¶
자세한 내용은 DQL과 다른 쿼리 언어 비교를 참조하거나 PromQL을 직접 방문하세요.
범위 쿼리¶
일정 시간 범위 내의 모니터링 데이터를 쿼리하여 범위 벡터(Range Vector)를 반환합니다. 즉, 지정된 시간 범위 내 각 시계열의 여러 샘플 값을 반환합니다. 구문에 시간 범위를 추가해야 합니다.
예시:
이는 지난 5분 동안 각 시점의 총 요청 수를 반환함을 의미합니다.
즉시 쿼리¶
특정 시점의 모니터링 데이터를 쿼리하여 즉시 벡터(Instant Vector)를 반환합니다. 즉, 해당 시점 각 시계열의 최신 샘플 값을 반환합니다.
예시:
이는 현재 시점에서 레이블 조건을 만족하는 모든 요청의 총 수를 반환함을 의미합니다.
시간 설명
즉시 쿼리(Instant Query)의 경우, 즉시 벡터 로직을 기반으로 하며 쿼리 시 종료 시간(endtime)의 타임스탬프만 사용합니다. Guance의 다양한 사용 사례에 적응하기 위해 쿼리 엔진은 수신된 데이터를 기반으로 지능적으로 처리합니다.
-
즉시 쿼리로 식별되면 엔진은 시간 범위(timerange)의 종료 시간을 최종 쿼리 타임스탬프로 사용합니다.
-
PromQL 쿼리의 시간 창(
step)을 결정할 때 다음 우선순위를 따릅니다.- PromQL에 시간 창이 지정된 경우(예: [5m]) 해당 창 값을
step으로 사용합니다. - 창이 지정되지 않은 경우 시간 간격(
interval) 매개변수가 있는지 확인하고, 있으면interval을step으로 사용합니다. interval이 없으면 시간 범위(timerange)를step으로 사용합니다.- 위의 어느 것도 해당하지 않으면 엔진은 기본적으로 5분(5m)을
step으로 사용합니다.
- PromQL에 시간 창이 지정된 경우(예: [5m]) 해당 창 값을
추가 설명: 범위 쿼리(Range Query)의 step 기본값은 max(interval, max-point-window)로, interval과 max-point-window 중 더 큰 값을 사용합니다.
쿼리 예시¶
예를 들어, 특정 영역의 동시성 제한기가 트리거되었는지 모니터링하여 잠재적인 성능 문제나 리소스 병목 현상을 신속하게 감지하려는 경우를 가정해 보겠습니다.
위 쿼리문을 입력하면 system_concurrent_limiter_current 메트릭 값이 0보다 큰 모든 데이터 포인트를 필터링하며, 이러한 데이터 포인트의 region 레이블 값이 #{region}입니다.
region 값이 us-west-1이라고 가정하면 실제 쿼리문은 다음과 같이 변환됩니다.
이 쿼리는 region이 us-west-1이고 system_concurrent_limiter_current 메트릭 값이 0보다 큰 모든 시계열 데이터를 반환합니다.
문 형식
레이블 값의 동적 대체: #{region}은 플레이스홀더로, 실제 쿼리에서는 특정 값으로 대체되어야 합니다.
필터 조건¶
PromQL 모드에서 필터 조건은 레이블 문자열 매칭만 지원하며, 시스템은 자동으로 조건에 맞는 필터를 PromQL 레이블 매처로 변환합니다.
지원되는 변환 규칙¶
| 필터 조건 | 변환 결과 | 설명 |
|---|---|---|
| 여러 AND 조건 | 쉼표 연결 | 예: a="1" AND b="2" -> a="1", b="2" |
| 동일 레이블 다중 값 OR | 정규식 매칭 | 예: a="1" OR a="2" -> a=~"1\|2" |
| 등가 매칭 | =、!= |
PromQL 등가 매칭으로 직접 변환 |
| 정규식 매칭 | =~、!~ |
PromQL 정규식 매칭으로 직접 변환 |
지원되지 않는 필터¶
다음 필터 조건은 현재 지원되지 않습니다.
-
서로 다른 레이블 간의 OR
-
숫자 비교(>、<、>=、<=)
-
함수형 필터
사용 사례¶
PromQL 쿼리 인터페이스 정의에는 쿼리 데이터 처리 동작을 제어하는 3개의 매개변수 interval, timerange, align_time이 있으며, 그 의미는 다음과 같습니다.
필드 |
설명 |
|---|---|
timerange |
쿼리 데이터의 시간 범위 |
interval |
데이터 포인트 간의 시간 간격 |
align_time |
값: true, false.interval, timerange 매개변수와 연동되며, 값이 true이면 interval 시간 간격에 따라 timerange 범위를 재조정합니다. 일반적인 로직은 앞으로 오프셋하는 것입니다. |
