뉴렐릭은 PromQL 스타일 쿼리를 지원하며 쿼리 빌더는 PromQL 구문 쿼리를 가장 가까운 NRQL 근사치로 변환하는 PromQL 스타일 쿼리 모드를 제공합니다. 근사 방법은 소수의 엣지 케이스가 완전하게 지원되지 않는다는 것을 의미하지만, 압도적 다수의 쿼리에 대한 커버리지를 제공하여, 780만 개의 상위 Grafana 대시보드 다운로드에서 쿼리의 99.5% 이상을 지원합니다.
다음은 PromQL 쿼리로 작업하는 방법, 그리고 표준 PromQL과 PromQL과 유사한 쿼리 언어 간의 차이점에 대해 자세히 살펴봅니다.
중요
Prometheus 쿼리 및 연산자에 대한 일반적인 정보는 Prometheus.io 문서를 참조하십시오.
지원되는 기능
다음과 같은 집계, 산술, 수학 및 비율 유사 함수를 지원합니다. Prometheus 및 PromQL에 대한 지원을 계속 확장함에 따라 이 목록은 지속적으로 업데이트될 것입니다.
PromQL 문제 해결
이 섹션에서는 PromQL과 PromQL 스타일 쿼리 간의 동작 차이점과 이러한 차이점을 해결하는 방법에 대해 설명합니다. 이는 쿼리 빌더에서 고급 쿼리와 PromQL 스타일 모드를 사용하려는 경우와 특히 관련성이 높습니다.
메트릭 유형
Prometheus 권장 사항에 따르면 게이지에는 delta() 같은 일부 함수만 사용해야 하고 카운터에는 rate() 및 increase() 같은 다른 함수만 사용해야 하지만, 그렇지 않더라도 Prometheus의 쿼리는 대부분 잘 작동합니다.
그러나 NRDB는 PromQL 스타일 누적 카운터를 delta
카운터로 변환하기 때문에 이러한 함수를 잘못된 데이터 유형에 사용하는 것은 허용되지 않으며, 다르거나 잘못된 답변이 생성됩니다.
그 때문에 Prometheus에서는 이러한 권장 사항을 따르지 않더라도, PromQL 스타일 쿼리로 작업할 때는 모든 Prometheus 권장 사항을 따르는 것이 좋습니다.
제한
- 모든 사용자들을 위해 시스템의 안정성과 성능을 보장하기 위해, 뉴렐릭은 실행할 수 있는 쿼리에 몇 가지 제한을 둡니다. 모든 경우에서, 범위 쿼리에는 366단계 제한이 적용됩니다. 또한 쿼리에서 100개의 시계열만 반환하도록 기본 설정되어 있습니다.
- 더 많이(또는 더 적게) 보려면 쿼리에
topk()
를 명시적으로 추가해야 합니다. (PromQL 스타일 쿼리의topk()
구현은 Prometheus의 구현과 다르다는 사실에 주의하십시오.) - 뉴렐릭은 쿼리가 사용할 수 있는 총 메모리를 제한합니다. 이는 많은 수의 시간 단계 또는 많은 수의 시계열에 대한 요청이 거부될 수 있음을 의미하며, 특히 단순 산술 집계보다 계산하는 데 훨씬 더 많은 메모리가 필요한 고유한
count
또는quantile
같은 집계와 결합된 경우에는 더욱 그렇습니다.
범위 벡터 선택기(슬라이딩 윈도우 및 스무딩 동작)
뉴렐릭은 슬라이딩 윈도우 시계열 집계를 지원합니다. 보다 자세한 내용은 NRQL 참조 및 슬라이딩 윈도우 심층 분석을 참조하십시오.
NRQL과 PromQL 스타일 언어 간의 변환에 대한 자세한 내용은 PromQL 쿼리를 NRQL로 변환하는 방법을 참조하십시오.
쿼리 범위 및 데이터 스크래핑 간격
- PromQL의 쿼리 범위는 "
TIMESERIES
버킷 크기가 현재 기간보다 큽니다."라는 오류가 야기되는 것을 방지하기 위해 쿼리의 단계 사이즈 기간보다 커야 합니다. - 즉각적인 쿼리를 제공할 때 최대 1분 이전의 데이터를 검사합니다. 스크랩 간격이 1분보다 길면 일부 쿼리에서 No data found(데이터를 찾을 수 없음)가 표시될 수 있습니다. 최소한 분당 한 번 데이터를 전송하여 이를 방지하십시오.
- NRQL 쿼리의 시계열 단위가 애플리케이션의 스크랩 간격보다 작은 경우 일부 기간에 데이터가 부족하고 결과 그래프가 들쭉날쭉하거나 최고점과 최저점이 포함될 수 있습니다. 일반적으로 단계 사이즈를 스크랩 간격 이상으로 설정합니다.