Cloud Monitoring의 PromQL

이 문서에서는 Cloud Monitoring에서 Prometheus Query Language(PromQL)를 사용하는 방법을 설명합니다. PromQL은 차트와 대시보드를 만들 수 있도록 측정항목 탐색기 메뉴 기반 인터페이스와 Monitoring 쿼리 언어(MQL) 인터페이스의 대안을 제공합니다.

PromQL을 사용하여 다음 소스에서 Cloud Monitoring 데이터를 쿼리하고 차트로 작성할 수 있습니다.

Grafana와 같은 도구를 사용하여 Cloud Monitoring에 수집된 측정항목 데이터를 차트로 표시할 수도 있습니다. 사용 가능한 측정항목에는 측정항목 목록에 설명된 Prometheus용 관리형 서비스 및 Cloud Monitoring 측정항목의 측정항목이 포함됩니다. Prometheus API를 기반으로 Grafana 및 기타 도구를 설정하는 방법은 Grafana에 대한 Prometheus용 관리형 서비스를 참조하세요.

또한 Grafana 대시보드를 Cloud Monitoring에 가져올 수 있습니다.

이름 지정 규칙

Prometheus 측정항목 모델과 이름 지정 규칙은 Cloud Monitoring에서 사용하는 것과 다릅니다. PromQL을 사용하여 Monitoring 측정항목 데이터를 쿼리하려면 Cloud Monitoring 이름을 PromQL 호환 이름으로 변환해야 합니다. 이름 지정 규칙은 Cloud Monitoring 측정항목을 PromQL에 매핑을 참조하세요.

Cloud Monitoring에서 PromQL에 액세스

Google Cloud 콘솔의 다음 페이지에 있는 코드 탭에서 PromQL을 사용할 수 있습니다.

  • 측정항목 탐색기
  • 커스텀 대시보드를 만들 때 차트 추가

편집기 액세스 및 사용 방법은 PromQL 편집기 사용을 참조하세요.

Prometheus 규칙 및 알림

PromQL을 사용하여 Cloud Monitoring에서 Prometheus 스타일 알림을 사용하여 Cloud Monitoring의 모든 측정항목에 대한 기록 및 알림 규칙을 만들 수 있습니다. 자세한 내용은 관리형 규칙 평가 및 알림 또는 자체 배포 규칙 평가 및 알림을 참조하세요.

PromQL 학습

PromQL 사용에 대한 기본사항을 학습하려면 오픈소스 문서를 참조하는 것이 좋습니다. 다음은 시작하는 데 도움이 되는 리소스입니다.

PromQL 차이점

Cloud Monitoring용 PromQL은 업스트림 PromQL과 약간 다르게 작동할 수 있습니다.

Cloud Monitoring의 PromQL 쿼리는 내부 쿼리 언어를 사용하여 Monarch 백엔드에서 부분적으로 평가되며 쿼리 결과에는 몇 가지 알려진 차이점이 있습니다. 이 섹션에 나열된 차이점 외에도 Cloud Monitoring의 PromQL은 Prometheus 버전 2.44에서 사용 가능한 PromQL과 동일합니다.

Prometheus 버전 2.44 이후에 추가된 PromQL 함수는 지원되지 않을 수 있습니다.

측정항목 이름 일치

측정항목 이름의 정확한 일치만 지원됩니다. 쿼리에 측정항목 이름의 정확한 일치를 포함해야 합니다.

__name__ 라벨에서 정규 표현식 일치자를 사용하는 일반적인 시나리오에 다음 해결 방법을 사용하는 것이 좋습니다.

  • Prometheus 어댑터 구성은 여러 측정항목 이름에 일치시키기 위해 =~ 연산자를 사용하는 경우가 많습니다. 이 방법을 수정하려면 각 측정항목에 별도의 정책을 사용하도록 구성을 확장하고 각 측정항목의 이름을 명시적으로 지정합니다. 이렇게 하면 예상치 못한 측정항목을 실수로 자동 확장하는 것도 방지할 수 있습니다.
  • 정규 표현식은 동일한 차트에 여러 무차원 측정항목을 그래프로 표시하는 데 자주 사용됩니다. 예를 들어 cpu_servicename_usage와 같은 측정항목이 있는 경우 와일드 카드를 사용하여 모든 서비스를 함께 그래프로 표시할 수 있습니다. 이와 같은 무차원 측정항목을 사용하는 것은 Cloud Monitoring에서 명시적으로 좋지 않은 방법으로, 이로 인해 쿼리 성능이 크게 저하됩니다. 이 방법을 수정하려면 측정항목 이름에 차원을 삽입하는 대신 모든 차원을 측정항목 라벨로 이동합니다.
  • 여러 측정항목을 쿼리하는 것은 쿼리할 수 있는 측정항목을 확인하는 데 자주 사용됩니다. 대신 /labels/__name__/values 호출을 사용하여 측정항목을 검색하는 것이 좋습니다. Cloud Monitoring UI를 사용하여 측정항목을 검색할 수도 있습니다.
  • 여러 측정항목을 일치시키면 측정항목별로 스크래핑 및 수집되고 요금이 청구된 샘플 수를 확인하는 데 유용합니다. Cloud Monitoring은 측정항목 관리 페이지에서 이 정보를 제공합니다. 수집된 샘플 측정항목 또는 기여 분석 ID로 작성된 샘플 측정항목을 사용하여 이 정보에 측정항목 데이터로 액세스할 수도 있습니다.

비활성

비활성은 Monarch 백엔드에서 지원되지 않습니다.

irate 계산

irate 함수의 전환 확인 기간이 단계 크기보다 작으면 기간을 단계 크기로 늘립니다. Monarch에서 이러한 변경은 출력에서 어떠한 입력 데이터도 완전히 무시되지 않도록 보장하기 위해 필요합니다. 이 차이점은 rate 계산에도 적용됩니다.

rateincrease 계산

rate 함수의 전환 확인 기간이 단계 크기보다 작으면 기간을 단계 크기로 늘립니다. Monarch에서 이러한 변경은 출력에서 어떠한 입력 데이터도 완전히 무시되지 않도록 보장하기 위해 필요합니다. 이 차이점은 irate 계산에도 적용됩니다.

내삽 및 외삽 계산에 차이점이 있습니다. Monarch는 Prometheus와 다른 내삽 알고리즘을 사용하며, 이러한 차이로 인해 약간 다른 결과로 이어질 수 있습니다. 예를 들어 Monarch 카운터 샘플은 Prometheus에 사용되는 단일 타임스탬프가 아닌 시간 범위로 저장됩니다. 따라서 Monarch의 카운터 샘플은 Prometheus 타임스탬프가 이를 제외하더라도 비율 계산에 포함될 수 있습니다. 특히 기본 시계열의 시작 또는 끝 부분에서 쿼리할 때 일반적으로 더 정확한 비율 결과가 제공됩니다.

histogram_quantile 계산

샘플이 없는 히스토그램의 PromQL histogram_quantile 계산은 NaN 값을 생성합니다. 내부 쿼리 언어의 계산은 값을 생성하지 않습니다. 대신 타임스탬프의 지점이 삭제됩니다.

비율 계산 차이는 histogram_quantile 쿼리에 대한 입력에도 영향을 줄 수 있습니다.

유형이 다른 측정항목에 대한 유형별 함수

업스트림 Prometheus는 약한 유형이지만 Monarch는 강력한 유형입니다. 즉, 이러한 함수가 업스트림 Prometheus에서 작동하더라도 다른 유형의 측정항목(예: GAUGE 측정항목에서 rate() 실행 또는 COUNTER 또는 유형이 지정되지 않은 측정항목에서 histogram_quantile() 실행)에서 단일 유형에 대한 함수 실행은 Cloud Monitoring에서 작동하지 않습니다.