PromQL 사용

PromQL(Prometheus Query Language)을 사용하여 Prometheus에 대한 시계열 메트릭 데이터를 선택하고 집계할 수 있습니다.

PromQL에 대한 자세한 정보는 오픈 소스 문서를 참조하십시오.

PromQL 조회 작성

기존 대시보드에서 메트릭에서 PromQL 조회를 작성하십시오.

  1. 모니터링 대시보드에서 서비스 인스턴스에 대한 대시보드 열기 를 클릭하십시오.
  2. 대시보드에서 조회할 메트릭이 포함된 대시보드를 선택하십시오.
  3. 대시보드의 한 패널에 대해 편집 아이콘을 클릭하십시오.
  4. PromQL 조회 유형을 선택하십시오.
  5. 조회 양식에서 조회 이름 및 시계열 이름과 같은 디스플레이 데이터를 입력하십시오.
  6. PromQL _조회_를 입력하십시오(예: avg(avg_over_time(host_cpu_used_percent[$__interval])) by(kubernetes_cluster_name)). 조회에 다음 필드를 지정하십시오.
    • 메트릭: 조회할 메트릭을 지정하십시오(예: host_cpu_used_percent). 참고: 테이블에 생성된 값은 최신 메트릭입니다.
    • 시간 범위: 시간 범위 또는 시간 간격을 지정하십시오(예: 5m). UI에서 선택된 시간 범위를 사용하려면 $__range를 사용하십시오. UI에서 선택된 시간 범위를 기반으로 하는 시간 간격을 사용하려면 $__interval을 지정하십시오. UI에서 시간 범위가 변경되면 이 조회의 $__range$__interval 변수가 자동으로 업데이트됩니다. 자세한 정보는 PromQL 조회에 대시보드 범위 적용을 참조하십시오.
    • 분석 방식: 집계된 PromQL 데이터를 세그먼트화하기 위한 값을 선택하십시오(예: kubernetes_cluster_name).
  7. 조회 실행을 클릭하십시오.
  8. 데이터가 리턴되는 단위 및 데이터가 표시되는 방법과 같은 추가 _옵션_을 구성하여 결과를 미세 조정하십시오.

대시보드 범위 적용

PromQL 조회에서 빌드된 패널의 범위를 지정하려면 조회 내에서 범위 변수를 사용해야 합니다.

조회에서 지정할 수 있는 시간 기반 범위에 대한 두 개의 사전 정의된 변수가 있습니다. UI에서 대시보드의 시간 범위가 변경되면 이러한 변수가 자동으로 변경됩니다.

  • $__range: 대시보드 UI에서 선택된 시간 범위를 나타냅니다. 예를 들어, 이 변수를 사용하여 선택한 시간 범위에 대한 평균을 계산할 수 있습니다.
  • $__interval: 대시보드 UI에서 선택된 시간 범위를 기반으로 하는 간격을 나타냅니다. 예를 들어, 이 변수를 사용하여 시간 경과에 따른 비율 또는 평균과 같은 다양한 오퍼레이션에 대한 시간 범위를 조정할 수 있습니다.

예를 들어, 다음 조회를 사용하여 모든 호스트의 CPU 사용 백분율을 리턴한다고 가정하십시오.

avg_over_time(host_cpu_used_percent[$__interval])

이 조회에서는 대시보드 UI에서 선택된 시간 범위를 기반으로 데이터의 범위를 동적 시간 간격으로 지정하는 $__interval 변수를 사용합니다.

출력 범위를 지정하기 위해 조회에 고유한 변수를 지정할 수도 있습니다. 예를 들어, 이전 조회의 범위를 특정 레이블 (예: hostname) 로 추가로 지정하려면 먼저 대시보드 레벨에서 범위 변수를 정의해야 합니다. 그런 다음 조회에서 해당 변수를 지정할 수 있습니다.

avg_over_time(host_cpu_used_percent{host_name=$hostname}[$__interval])

레이블 사용

PromQL 조회를 실행하면 데이터가 최소 레이블 세트와 함께 리턴됩니다. 클러스터 이름과 같은 레이블을 더 추가하려면 벡터 일치 오퍼레이션을 사용하십시오.

Prometheus는 여러 레이블이 있는 값이 1인 정보 메트릭을 리턴합니다. 비정보 메트릭과 정보 메트릭의 레이블을 결합하면 애플리케이션 전체의 메트릭 값과 같은 유용한 통찰을 제공할 수 있습니다. SQL 조인과 유사한 벡터 일치 오퍼레이션을 사용하여 메트릭 데이터에 정보 레이블을 추가할 수 있습니다.

예: 클러스터별로 애플리케이션 메트릭 필터링

이 예에서는 애플리케이션에서 리턴된 메트릭이 클러스터별로 필터링됩니다. PromQL은 범위에서 하나의 클러스터만 선택하여 클러스터에 대한 해당 메트릭의 값을 집계합니다.

sum (myapp_metric * on (container_id) kube_pod_container_info{cluster=$cluster})

이 조회는 다음을 수행합니다.

  • kube_pod_container_info 레이블을 기반으로 하는 특정 클러스터(대시보드 변수로 설정된 $cluster) 및 특정 시계열에 대해서만 cluster 정보 메트릭을 필터링합니다.
  • myapp_metric 레이블의 값이 동일한 경우 kube_pod_container_info 비정보 메트릭을 필터링된 container_id 정보 메트릭과 일치시킵니다. 값을 곱하지만 정보 메트릭의 값이 1이기 때문에 결과는 변경되지 않습니다. 클러스터 레이블이 결과 데이터에 추가됩니다.
  • myapp_metric 함수를 사용하여 sum 값의 시계열을 집계하고 결과를 리턴합니다.

예: 계정 및 지역별로 사용된 평균 CPU 필터링

이 예에서는 특정 IBM Cloud 계정 및 지역에 대한 사용된 평균 CPU(백분율)가 계산됩니다.

avg by(region,account_id) (host_cpu_used_percent * on (host_mac) group_left(region,account_id) sysdig_cloud_provider_info{account_id=~$account, region=~$region})

이 조회는 다음을 수행합니다.

  • sysdig_cloud_provider_info$region 레이블을 기반으로 대시보드 변수로 설정된 특정 지역($account) 및 계정(region)에 대해서만 account_id 정보 메트릭을 필터링합니다.
  • host_cpu_used_percent 레이블의 값이 동일한 경우 sysdig_cloud_provider_info 비정보 메트릭을 필터링된 host_mac 정보 메트릭과 일치시킵니다. 값을 곱하지만 정보 메트릭의 값이 1이기 때문에 결과는 변경되지 않습니다. 지역 및 계정 레이블이 결과 데이터에 추가됩니다.
  • 계정 및 지역별로 새 메트릭의 평균을 계산합니다.

최신 메트릭을 추출하기 위한 cURL 샘플

메트릭의 최신 값을 가져오려면 메트릭 이름만 지정하십시오. 5분 이내에 생성된 가장 최근 값이 리턴됩니다.

예를 들어, host_cpu_used_percent의 최신 값을 가져오려면 다음을 수행하십시오.

curl <SYSDIG_REST_API_ENDPOINT>/prometheus/api/v1/query?query=sysdig_host_cpu_used_percent -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: $TEAM_ID" -H "content-type: application/json"

여기서,

  • <SYSDIG_REST_API_ENDPOINT>은(는) REST API 호출이 대상으로 하는 엔드포인트를 표시합니다. 자세한 정보는 REST API 엔드포인트 모니터링을 참조하십시오. 예를 들어, 미국에서 사용 가능한 인스턴스에 대한 공용 엔드포인트는 다음과 같습니다. https://us-south.monitoring.cloud.ibm.com/api

  • -H를 사용하여 여러 헤더를 전달할 수 있습니다.

    AuthorizationIBMInstanceID는 인증에 필요한 헤더입니다.

    SysdigTeamID는 선택사항입니다. 이 헤더를 지정하면 지정된 팀에 사용 가능한 데이터 및 리소스로 요청이 제한됩니다.

    AUTH_TOKENGUID를 가져오려면 IAM 토큰에 대한 헤더를 참조하십시오.

모든 대시보드가 전체 PromQL API를 지원합니다. PromQL로 가능한 사항에 대한 자세한 정보는 Prometheus 문서를 참조하십시오.