Prometheus API 또는 UI를 사용하여 쿼리

Google Cloud Managed Service for Prometheus를 배포한 후 관리형 서비스에 전송된 데이터를 쿼리하고 결과를 차트 및 대시보드로 표시할 수 있습니다.

이 문서에서는 쿼리 가능한 데이터, 수집한 데이터의 검색 및 프로메테우스 기반 사용 방법을 결정하는 측정항목 범위에 대해 설명합니다.

  • Prometheus HTTP API
  • Prometheus UI

Managed Service for Prometheus의 모든 쿼리 인터페이스는 Cloud Monitoring API를 사용하여 Monarch에서 데이터를 검색하도록 구성됩니다. 로컬 Prometheus 서버에서 데이터를 쿼리하는 대신 Monarch를 쿼리하면 규모에 맞게 전역 모니터링을 수행할 수 있습니다.

시작하기 전에

관리형 서비스를 아직 배포하지 않았으면 관리 컬렉션 또는 자체 배포 컬렉션을 설정합니다. PromQL을 사용하여 Cloud Monitoring 측정항목 쿼리에만 관심이 있는 경우 이 단계를 건너뛸 수 있습니다.

환경 구성

프로젝트 ID 또는 클러스터 이름을 반복해서 입력하지 않으려면 다음 구성을 수행합니다.

  • 다음과 같이 명령줄 도구를 구성합니다.

    • Google Cloud 프로젝트의 ID를 참조하도록 gcloud CLI를 구성합니다.

      gcloud config set project PROJECT_ID
      
    • 클러스터를 사용하도록 kubectl CLI를 구성합니다.

      kubectl config set-cluster CLUSTER_NAME
      

    이러한 도구에 대한 자세한 내용은 다음을 참조하세요.

네임스페이스 설정

예시 애플리케이션의 일부로 만드는 리소스에 대해 NAMESPACE_NAME Kubernetes 네임스페이스를 만듭니다.

kubectl create ns NAMESPACE_NAME

서비스 계정 사용자 인증 정보 확인

Kubernetes 클러스터에 워크로드 아이덴티티가 사용 설정되어 있으면 이 섹션을 건너뛸 수 있습니다.

GKE에서 실행될 때 Managed Service for Prometheus는 Compute Engine 기본 서비스 계정을 기반으로 환경에서 사용자 인증 정보를 자동으로 검색합니다. 기본적으로 기본 서비스 계정에는 필요한 권한 monitoring.metricWritermonitoring.viewer가 있습니다. 워크로드 아이덴티티를 사용하지 않고 이전에 기본 노드 서비스 계정에서 이러한 역할 중 하나를 삭제한 경우 계속하기 전에 누락된 권한을 다시 추가해야 합니다.

GKE에서 실행하지 않는 경우 명시적으로 사용자 인증 정보 제공을 참조하세요.

워크로드 아이덴티티에 대한 서비스 계정 구성

Kubernetes 클러스터에 워크로드 아이덴티티가 사용 설정되어 있지 않으면 이 섹션을 건너뛰어도 됩니다.

Managed Service for Prometheus는 Cloud Monitoring API를 사용하여 측정항목 데이터를 캡처합니다. 클러스터가 워크로드 아이덴티티를 사용하는 경우 Kubernetes 서비스 계정에 Monitoring API에 대한 권한을 부여할 수 있습니다. 이 섹션에서는 다음을 설명합니다.

서비스 계정 만들기 및 바인딩

이 단계는 Managed Service for Prometheus 문서의 여러 위치에 표시됩니다. 이미 이전 태스크를 수행하는 동안 이 단계를 수행했으면 이를 반복할 필요가 없습니다. 서비스 계정 승인으로 건너뛰세요.

다음 명령어 시퀀스는 gmp-test-sa 서비스 계정을 만들고 NAMESPACE_NAME 네임스페이스의 기본 Kubernetes 서비스 계정에 바인딩합니다.

gcloud config set project PROJECT_ID \
&&
gcloud iam service-accounts create gmp-test-sa \
&&
gcloud iam service-accounts add-iam-policy-binding \
  --role roles/iam.workloadIdentityUser \
  --member "serviceAccount:PROJECT_ID.svc.id.goog[NAMESPACE_NAME/default]" \
  gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \
&&
kubectl annotate serviceaccount \
  --namespace NAMESPACE_NAME \
  default \
  iam.gke.io/gcp-service-account=gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com

다른 GKE 네임스페이스 또는 서비스 계정을 사용하는 경우 적절하게 명령어를 조정합니다.

서비스 계정 승인

관련 권한 그룹이 역할에 수집되고 주 구성원(이 예시에서는 Google Cloud 서비스 계정)에 역할을 부여합니다. Monitoring 역할에 대한 자세한 내용은 액세스 제어를 참조하세요.

다음 명령어는 Google Cloud 서비스 계정 gmp-test-sa에 측정항목 데이터 읽기에 필요한 Monitoring API 역할을 부여합니다.

이미 이전 태스크를 수행하는 동안 Google Cloud 서비스 계정에 특정 역할을 부여한 경우 이를 다시 수행할 필요가 없습니다.

멀티 프로젝트 측정항목 범위에서 읽을 수 있도록 서비스 계정에 권한을 부여하려면 다음 안내를 따른 후 쿼리된 프로젝트 변경을 참조하세요.

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \
  --role=roles/monitoring.viewer

워크로드 아이덴티티 구성 디버그

워크로드 아이덴티티 작동에 문제가 있으면 워크로드 아이덴티티 설정 확인워크로드 아이덴티티 문제 해결 가이드 문서를 참조하세요.

워크로드 아이덴티티를 구성할 때 오타 및 부분 복사-붙여넣기가 가장 일반적인 오류 소스이므로 이 안내의 코드 샘플에 삽입된 수정 가능한 변수 및 클릭 가능한 복사-붙여넣기 아이콘을 사용하는 것이 좋습니다.

프로덕션 환경의 워크로드 아이덴티티

이 문서에 설명된 예시에서는 Google Cloud 서비스 계정을 기본 Kubernetes 서비스 계정에 바인딩하고 Google Cloud 서비스 계정에 Monitoring API를 사용하기 위해 필요한 모든 권한을 부여합니다.

프로덕션 환경에서는 각 구성요소에 대해 서비스 계정이 있고, 각각 최소 권한이 포함된 세분화된 방법을 사용해야 할 수 있습니다. 워크로드 아이덴티티 관리를 위한 서비스 계정 구성에 대한 자세한 내용은 워크로드 아이덴티티 사용을 참조하세요.

쿼리 및 측정항목 범위

쿼리 가능한 데이터는 데이터 쿼리에 사용되는 방법에 관계없이 Cloud Monitoring 구문 측정항목 범위에 따라 결정됩니다. 예를 들어 Grafana를 사용하여 Managed Service for Prometheus 데이터를 쿼리할 경우 각 측정항목 범위를 개별 데이터 소스로 구성해야 합니다.

Monitoring 측정항목 범위는 여러 Google Cloud 프로젝트에 속하는 측정항목 데이터를 쿼리할 수 있게 해주는 읽기 전용 구문입니다. 모든 측정항목 범위는 범위 지정 프로젝트라고 부르는 지정된 Google Cloud 프로젝트에서 호스팅됩니다.

기본적으로 프로젝트는 자체 측정항목 범위에 대한 범위 지정 프로젝트이고, 측정항목 범위에는 해당 프로젝트에 대한 측정항목 및 구성이 포함되어 있습니다. 범위 지정 프로젝트는 측정항목 범위에 모니터링 프로젝트를 두 개 이상 가질 수 있으며 측정항목 범위에 있는 모든 모니터링 프로젝트의 측정항목과 구성은 범위 지정 프로젝트에 표시됩니다. 또한 모니터링 프로젝트는 측정항목 범위 두 개 이상에 포함될 수 있습니다.

범위 지정 프로젝트에서 측정항목을 쿼리하고 해당 범위 지정 프로젝트가 멀티 프로젝트 측정항목 범위를 호스팅하는 여러 프로젝트에서 데이터를 검색할 수 있습니다. 측정항목 범위에 모든 프로젝트가 포함되면 쿼리와 규칙이 전역적으로 평가됩니다.

범위 지정 프로젝트 및 측정항목 범위에 대한 자세한 내용은 측정항목 범위를 참조하세요. 다중 프로젝트 측정항목 범위 구성에 대한 자세한 내용은 다중 프로젝트의 측정항목 보기를 참조하세요.

Cloud Monitoring의 Managed Service for Prometheus 데이터

Prometheus 데이터 내보내기가 수행되는지 확인하는 가장 간단한 방법은 PromQL을 지원하는 Google Cloud 콘솔에서 Cloud Monitoring 측정항목 탐색기 페이지를 사용하는 것입니다. 자세한 내용은 Cloud Monitoring에서 PromQL을 사용하여 쿼리를 참조하세요.

독립형 Prometheus 프런트엔드 UI

독립형 Prometheus 프런트엔드 UI를 사용하여 수집된 데이터에 액세스하고 시각화할 수 있습니다. 이 UI는 프로젝트와 연관된 측정항목 범위에 따라 확인된 대로 Google Cloud 프로젝트에서 모든 데이터에 대해 PromQL 쿼리를 실행합니다.

또한 이 프런트엔드 UI는 수집된 데이터에 액세스하기 위한 인증 프록시로 작동합니다. 이 기능은 Grafana 또는 prometheus-adapter 라이브러리를 사용하는 수평형 포드 자동 확장을 포함하여 OAuth2를 지원하지 않는 클라이언트 도구에 사용될 수 있습니다.

데이터 소스 동기화를 사용하여 Managed Service for Prometheus의 데이터를 시각화하도록 Grafana를 구성하는 것이 좋습니다. 독립형 Prometheus 프런트엔드 UI를 사용하여 Grafana를 구성하는 방법은 이전에 이 방법을 사용하여 Grafana를 구성한 사용자를 위한 참조로 포함되어 있습니다.

프런트엔드 UI 배포

Managed Service for Prometheus용 독립형 Prometheus 프런트엔드 UI를 배포하려면 다음 명령어를 실행합니다.

  1. frontend 서비스를 배포하고 원하는 측정항목 범위의 범위 지정 프로젝트를 쿼리하도록 구성합니다.

    curl https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.8.2/examples/frontend.yaml |
    sed 's/\$PROJECT_ID/PROJECT_ID/' |
    kubectl apply -n NAMESPACE_NAME -f -
    
  2. frontend 서비스를 로컬 머신으로 포트 전달합니다. 다음 예시에서는 서비스를 포트 9090으로 전달합니다.

    kubectl -n NAMESPACE_NAME port-forward svc/frontend 9090
    

    이 명령어는 결과를 반환하지 않고, 실행되는 동안 URL에 대한 액세스를 보고합니다.

kube-prometheus에 의해 설치된 Grafana 배포를 계속 사용하려면 대신 monitoring 네임스페이스에 독립형 Prometheus 프런트엔드 UI를 배포합니다.

브라우저의 URL http://localhost:9090에서 독립형 Prometheus 프런트엔드 UI에 액세스할 수 있습니다. 이 단계에서 Cloud Shell을 사용하는 경우 웹 미리보기 버튼을 사용하여 액세스할 수 있습니다.

다음 스크린샷은 up 측정항목을 표시하는 독립형 Prometheus 프런트엔드 UI의 테이블을 보여줍니다.

Prometheus 인터페이스에서 측정항목 보기

또한 IAP(Identity Aware Proxy) 등을 사용하여 frontend 서비스에서 적절한 인증 및 승인을 설정할 수 있습니다. 서비스 노출에 대한 자세한 내용은 서비스를 사용하여 애플리케이션 노출을 참조하세요.

다중 프로젝트 모니터링을 가져오도록 쿼리된 프로젝트 변경

frontend 배포는 구성된 Google Cloud 프로젝트를 범위 지정 프로젝트로 사용합니다. 이 프로젝트가 다중 프로젝트 측정항목 범위의 범위 지정 프로젝트인 경우 측정항목 범위의 모든 프로젝트에서 측정항목을 읽을 수 있습니다.

--query.project-id 플래그를 사용하여 다중 프로젝트 측정항목 범위로 프로젝트를 지정할 수 있습니다.

일반적으로 전용 프로젝트를 범위 지정 프로젝트로 사용하며, 이 프로젝트는 frontend 배포가 실행되는 프로젝트와 동일한 프로젝트가 아닙니다. 배포가 다른 대상 프로젝트를 읽도록 하려면 다음을 수행해야 합니다.

  • frontend 배포에 대상 프로젝트를 지정합니다.
  • 대상 프로젝트 읽기 권한을 서비스 계정에 부여합니다. Compute Engine default 서비스 계정을 사용한 경우 다음 중 하나를 수행할 수 있습니다.

다른 Google Cloud 프로젝트에 액세스하는 데 필요한 권한을 부여하려면 다음을 수행합니다.

  1. 쿼리하려는 대상 프로젝트에서 읽기 권한을 서비스 계정에 부여합니다.

    gcloud projects add-iam-policy-binding SCOPING_PROJECT_ID \
      --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \
      --role=roles/monitoring.viewer
    
  2. 이전에 만든 frontend 배포를 수정하기 위해 엽니다.

    kubectl -n NAMESPACE_NAME edit deploy frontend
    
  3. --query.project-id 플래그를 사용하여 대상 프로젝트를 지정합니다.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      namespace: NAMESPACE_NAME
      name: frontend
    spec:
      template
        containers:
        - name: frontend
          args:
          - --query.project-id=SCOPING_PROJECT_ID
    ...
    

    파일을 저장하고 편집기를 닫습니다. 변경사항이 적용되고 프런트엔드 포드가 다시 시작된 후 새 범위 지정 프로젝트를 쿼리합니다.

프런트엔드 UI 인증

frontend 배포에서는 버전 0.5.0 이상에서 인증된 액세스에 대한 기본 액세스 인증을 지원합니다. 인증을 사용 설정하려면 AUTH_USERNAMEAUTH_PASSWORD 환경 변수를 배포에 추가합니다.

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: NAMESPACE_NAME
  name: frontend
spec:
  template
    containers:
    - name: frontend
      env:
      - name: AUTH_USERNAME
        value: USERNAME
      - name: AUTH_PASSWORD
        value: PASSWORD
...

명시적으로 사용자 인증 정보 제공

Google Kubernetes Engine 클러스터에서 frontend 컨테이너를 실행하는 경우 이 섹션을 건너뛰어도 됩니다. GKE에 인증 문제가 있으면 서비스 계정 사용자 인증 정보 확인을 참조하세요.

GKE에서 실행할 때 프런트엔드는 노드의 서비스 계정 또는 워크로드 아이덴티티 설정을 기반으로 환경에서 사용자 인증 정보를 자동으로 검색합니다. 비GKE Kubernetes 클러스터에서는 플래그 또는 GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 사용하여 프런트엔드에 사용자 인증 정보를 명시적으로 제공해야 합니다.

  1. 컨텍스트를 대상 프로젝트에 설정합니다.

    gcloud config set project PROJECT_ID
    
  2. 서비스 계정을 만듭니다.

    gcloud iam service-accounts create gmp-test-sa
    

    이 단계에서는 워크로드 아이덴티티 안내에 따라 이미 생성되었을 수 있는 서비스 계정을 만듭니다.

  3. 서비스 계정에 필요한 권한을 부여합니다.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \
      --role=roles/monitoring.viewer
    

  4. 서비스 계정에 대해 키를 만들고 다운로드합니다.

    gcloud iam service-accounts keys create gmp-test-sa-key.json \
      --iam-account=gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com
    
  5. 키 파일을 GKE 클러스터 외의 클러스터에 보안 비밀로 추가합니다.

    kubectl -n NAMESPACE_NAME create secret generic gmp-test-sa \
      --from-file=key.json=gmp-test-sa-key.json
    

  6. 수정할 프런트엔드 배포 리소스를 엽니다.

    kubectl -n NAMESPACE_NAME edit deploy frontend
    
    1. 굵게 표시된 텍스트를 리소스에 추가합니다.

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        namespace: NAMESPACE_NAME
        name: frontend
      spec:
        template
          containers:
          - name: frontend
            args:
            - --query.credentials-file=/gmp/key.json
      ...
            volumeMounts:
            - name: gmp-sa
              mountPath: /gmp
              readOnly: true
      ...
          volumes:
          - name: gmp-sa
            secret:
              secretName: gmp-test-sa
      ...
      

    2. 파일을 저장하고 편집기를 닫습니다. 변경사항이 적용되고 포드가 다시 생성된 후 제공된 서비스 계정을 사용하여 측정항목 백엔드에 대해 인증을 시작합니다.

    또는 이 예시에 설정된 플래그를 사용하는 대신 GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 사용하여 키-파일 경로를 설정할 수 있습니다.

    프런트엔드 프록시를 통해 Grafana 사용

    Managed Service for Prometheus는 Grafana용으로 기본 제공되는 Prometheus 데이터 소스를 사용하므로 커뮤니티에서 만든 대시보드나 개인 Grafana 대시보드를 변경 없이 계속 사용할 수 있습니다. 또한 Grafana 대시보드를 Cloud Monitoring에 가져올 수 있습니다.

    Google Cloud API 인증

    Google Cloud API는 모두 OAuth2를 사용하여 인증해야 합니다. 하지만 Grafana는 Prometheus 데이터 소스에 대한 OAuth2 인증을 지원하지 않습니다. Managed Service for Prometheus와 함께 Grafana를 사용하려면 인증 프록시로 독립형 Prometheus 프런트엔드 UI를 사용합니다.

    데이터를 전역적으로 쿼리하려면 독립형 프런트엔드 UI 프록시에서 Grafana를 가리켜야 합니다. 이러한 단계를 따르지 않으면 Grafana는 로컬 Prometheus 서버의 데이터에 대해서만 쿼리를 실행합니다.

    아직 Prometheus UI frontend 서비스를 프록시로 배포하지 않았다면 다음 명령어를 실행하여 배포합니다.

    curl https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.8.2/examples/frontend.yaml |
    sed 's/\$PROJECT_ID/PROJECT_ID/' |
    kubectl apply -n NAMESPACE_NAME -f -
    

    Anthos 클러스터와 같은 비GKE Kubernetes 클러스터의 경우 frontend 서비스에 측정항목을 쿼리하는 데 필요한 권한을 부여하기 위해 명시적으로 사용자 인증 정보를 제공합니다.

    여러 프로젝트에 걸쳐 쿼리하기 위해 frontend 서비스에서 사용하는 측정항목 범위를 구성하는 방법에 대한 지침은 쿼리된 프로젝트 변경을 참조하세요.

    kube-prometheus 라이브러리에 의해 설치되거나 Helm 차트를 사용하여 설치된 것과 같은 기존 Grafana 배포가 있는 경우 Managed Service for Prometheus와 함께 계속 사용할 수 있습니다. 이러한 경우에는 다음 단계에 대해 데이터 소스 구성을 참조하세요. 그렇지 않으면 먼저 Grafana를 배포해야 합니다.

    Grafana 배포

    클러스터에 실행 중인 Grafana 배포가 없으면 임시 테스트 배포를 만들어 실험해볼 수 있습니다.

    임시 Grafana 배포를 만들려면 Managed Service for Prometheus grafana.yaml 매니페스트를 클러스터에 적용하고 grafana 서비스를 로컬 머신에 포트 전달합니다. 다음 예시에서는 서비스를 포트 3000으로 전달합니다.

    1. grafana.yaml 매니페스트를 적용합니다.

      kubectl -n NAMESPACE_NAME apply -f  https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/beb779d32f4dd531a3faad9f2916617b8d9baefd/examples/grafana.yaml
      
    2. grafana 서비스를 로컬 머신으로 포트 전달합니다. 이 예시에서는 서비스를 포트 3000으로 전달합니다.

      kubectl -n NAMESPACE_NAME port-forward svc/grafana 3000
      

      이 명령어는 결과를 반환하지 않고, 실행되는 동안 URL에 대한 액세스를 보고합니다.

      사용자 이름:암호 admin:admin를 사용하여 URL http://localhost:3000의 브라우저에서 Grafana에 액세스할 수 있습니다.

    데이터 소스 구성하기

    Prometheus UI를 인증 프록시로 사용하여 Grafana에서 Managed Service for Prometheus를 쿼리하려면 새 데이터 소스를 Grafana에 추가해야 합니다. 관리형 서비스에 대해 데이터 소스를 추가하려면 다음을 수행합니다.

    1. 예를 들어 URL http://localhost:3000을 사용해서 Grafana 배포로 이동하여 Grafana 시작 페이지에 연결합니다.

    2. 기본 Grafana 메뉴에서 구성을 선택한 후 데이터 소스를 선택합니다.

      Grafana에서 데이터 소스를 추가합니다.

    3. 데이터 소스 추가를 선택하고 시계열 데이터베이스로 Prometheus를 선택합니다.

      Prometheus 데이터 소스를 추가합니다.

    4. HTTP 창의 URL 필드에 Managed Service for Prometheus frontend의 URL을 입력합니다. 포트 9090으로 실행되도록 Prometheus 프런트엔드 UI를 구성한 경우 이 필드의 서비스 URL은 http://frontend.NAMESPACE_NAME.svc:9090입니다.

      HTTP 창의 제한 시간 필드에서 값을 120으로 설정합니다.

      기본 인증을 사용하여 프런트엔드 UI 프록시를 구성한 경우 인증 창에서 기본 인증 스위치를 사용 설정하고 사용자 이름과 비밀번호를 입력합니다.

      쿼리 제한 시간 필드에서 값을 2m로 설정합니다.

      HTTP 메서드 필드에서 GET을 선택합니다.

      Prometheus 유형 필드에서 Prometheus를 선택합니다.

      Prometheus 버전 필드에서 2.40.x 이상을 선택합니다.

      Prometheus 데이터 소스가 여러 개 있으면 여기에 '관리형 Prometheus 서비스'와 같은 이름을 지정할 수 있습니다. 다른 필드는 기본값 그대로 둘 수 있습니다.

      Managed Service for Prometheus 데이터 소스를 구성합니다.

    5. 저장 및 테스트를 클릭하고 '데이터 소스 작동 중' 메시지를 찾습니다.

      Managed Service for Prometheus 데이터 소스를 테스트합니다.

    새 데이터 소스 사용

    이제 새 데이터 소스를 사용하여 Grafana 대시보드를 만들 수 있습니다. 또한 기존 대시보드를 새 데이터 소스로 리디렉션할 수 있습니다. 다음 스크린샷은 up 측정항목을 표시하는 Grafana 차트를 보여줍니다.

    Managed Service for Prometheus up 측정항목의 Grafana 차트입니다.

    Managed Service for Prometheus를 Thanos에 연결

    오픈소스 thanos-promql-connector를 사용하여 Managed Service for Prometheus를 자체 배포된 Thanos 스택에 제휴할 수 있습니다. Google Cloud는 이 통합을 지원하지 않습니다.

    Prometheus HTTP API

    Managed Service for Prometheus는 https://monitoring.googleapis.com/v1/projects/PROJECT_ID/location/global/prometheus/api/v1/ 프리픽스가 지정된 URL에서 업스트림 Prometheus HTTP API를 지원합니다. 지원되는 엔드포인트에 대한 자세한 내용은 API 호환성을 참조하세요.

    이 API는 표준 Prometheus 서버와 상호작용할 수 있는 모든 도구로 액세스될 수 있습니다. 이것은 API 엔드포인트 전용이고 UI를 제공하지 않습니다. 이 API는 Google Cloud API로서 OAuth2 인증을 사용하며, Cloud Monitoring API로서 PROJECT_ID의 값은 측정항목 범위의 범위지정 프로젝트입니다. 따라서 측정항목 범위의 모든 프로젝트에서 데이터를 검색할 수 있습니다. 범위 지정에 대한 자세한 내용은 측정항목 범위를 참조하세요.

    이 엔드포인트를 사용하려면 PromQL 표현식을 제공합니다. 예를 들어 다음 인스턴트 쿼리는 측정항목 이름이 up인 모든 시계열을 쿼리합니다.

    curl https://monitoring.googleapis.com/v1/projects/PROJECT_ID/location/global/prometheus/api/v1/query \
      -d "query=up" \
      -H "Authorization: Bearer $(gcloud auth print-access-token)"
    

    요청이 성공하면 쿼리가 다음과 같은 결과를 반환합니다. 이 결과는 읽기 쉽도록 서식이 지정되어 있습니다.

    {
      "status":"success",
      "data":{
        "resultType":"vector",
        "result":[{
          "metric": {
            "__name__":"up",
            "cluster":"gmp-test",
            "instance":"prom-example-84c6f547f5-g4ljn:web",
            "job":"prometheus",
            "location":"us-central1-a",
            "project_id":"a-gcp-project"
          },
          "value": [1634873239.971,"1"]
        }]
      }
    }
    

    PromQL을 사용하여 Google Cloud 시스템 측정항목을 쿼리하는 방법에 대한 자세한 내용은 Cloud Monitoring 측정항목용 PromQL을 참조하세요.

    API 호환성

    다음 Prometheus HTTP API 엔드포인트는 https://monitoring.googleapis.com/v1/projects/PROJECT_ID/location/global/prometheus/api/v1/ 프리픽스가 포함된 URL로 Managed Service for Prometheus에서 지원됩니다.

    자세한 내용은 Cloud Monitoring API 참조 문서를 확인하세요.

    PromQL 호환성에 대한 자세한 내용은 PromQL 지원을 참조하세요.

    • 다음 엔드포인트는 완전히 지원됩니다.

      • /api/v1/query
      • /api/v1/query_range
      • /api/v1/metadata
      • /api/v1/labels
      • /api/v1/query_exemplars
    • /api/v1/label/<label_name>/values 엔드포인트는 <label_name> 값으로 사용하거나 계열 선택기를 사용하여 정확히 일치를 수행하여 __name__ 값이 제공된 경우에만 작동합니다. 예를 들어 다음 호출은 완전히 지원됩니다.

      • /api/v1/label/__name__/values
      • /api/v1/label/__name__/values?match[]={__name__=~".*metricname.*"}
      • /api/v1/label/labelname/values?match[]={__name__="metricname"}

      이 제한으로 인해 Grafana에서 label_values($label) 변수 쿼리가 실패합니다. 대신 label_values($metric, $label)을 사용할 수 있습니다. 이러한 쿼리 유형은 지정된 대시보드와 관련이 없는 측정항목에서 라벨 값을 가져올 필요가 없기 때문에 권장됩니다.

    • /api/v1/series 엔드포인트는 GET에 지원되지만 POST 요청은 지원되지 않습니다. 데이터 소스 동기화 또는 프런트엔드 프록시를 사용하는 경우 이 제한이 자동으로 관리됩니다. 또한 GET 요청만 수행하도록 Grafana에서 Prometheus 데이터 소스를 구성할 수 있습니다.