Google Cloud Monitoring 쿼리 에디터

Google Cloud Monitoring 쿼리 에디터 (Google Cloud Monitoring query editor)

이 문서는 Google Cloud Monitoring 데이터 소스에 특화된 쿼리 방법을 설명해요. Grafana에서 데이터 소스를 쿼리하는 일반 문서는 "쿼리 및 데이터 변환"을 참고하세요.

출처: 문서

본문

쿼리 유형

Google Cloud Monitoring 쿼리 에디터는 다음 쿼리 유형을 지원해요.

쿼리 유형 설명
Builder 서비스, 메트릭, 필터, 집계 옵션을 선택해 메트릭 쿼리를 시각적으로 구성
MQL 고급 사용 사례를 위해 Monitoring Query Language로 쿼리 작성
Service Level Objectives (SLO) 서비스 안정성과 오류 예산을 추적하기 위한 SLO 데이터 쿼리
PromQL Google Cloud Monitoring 메트릭에 Prometheus 스타일 쿼리 작성

메트릭 쿼리

메트릭 쿼리 에디터는 메트릭을 선택하고, 라벨과 시간으로 그룹화·집계하며, 필터로 쿼리할 타임시리즈를 지정하는 데 도움을 줘요.

메트릭 쿼리를 만들려면 프로젝트, 서비스, 메트릭을 선택하고 원하는 집계·필터를 적용하면 돼요. Google Cloud Monitoring은 GAUGE, DELTA, CUMULATIVE 같은 여러 메트릭 유형을 지원하며, 각각 리듀서·얼라이너 같은 다른 집계 옵션을 지원해요. 메트릭의 값 유형은 스칼라 또는 분포(distribution)일 수 있어요. 에디터는 선택한 메트릭에 사용 가능한 집계 방법을 나열하고, 메트릭을 선택하면 기본 집계·리듀서·얼라이너를 설정해요. 값 유형이 분포인 메트릭은 기본적으로 평균(mean)으로 집계되고, 스칼라 값 유형은 기본 집계가 없어요.

참고: 분포 메트릭은 보통 히트맵이나 히스토그램으로 시각화하는 것이 가장 좋아요. 이런 방식으로 시각화할 때는 집계가 필요 없어요. 그러나 다른 시각화 유형에서는 반환될 수 있는 잠재적 버킷 수 때문에 집계되지 않은 분포 메트릭 쿼리 시 성능 저하가 발생할 수 있어요.

필터 적용

필터를 추가·적용하려면 원하는 라벨·값을 선택하면 돼요. 휴지통 아이콘으로 필터를 제거해요.

단순 와일드카드 사용

연산자를 =!=로 설정하면 필터 값 필드에 와일드카드를 추가할 수 있어요. 예를 들어 us-*는 "us-"로 시작하는 모든 값을, *central-a는 "central-a"로 끝나는 모든 값을, *-central-*는 "-central-" 부분 문자열을 가진 모든 값을 캡처해요. 단순 와일드카드는 정규식보다 성능이 좋아요.

정규식 사용

연산자를 =~!=~로 설정하면 필터 값 필드에 정규식을 추가할 수 있어요. 예를 들어 us-central[1-3]-[af]는 "us-central"로 시작하고 1~3 범위의 숫자, 대시, 그다음 "a" 또는 "f"가 오는 모든 값을 매칭해요. 정규식을 만들 때 앞뒤 슬래시는 필요 없어요.

전처리 옵션 구성

선택한 메트릭이 DELTA나 CUMULATIVE 메트릭 유형이면 에디터가 전처리 옵션을 표시해요.

타임시리즈 그룹화

여러 타임시리즈를 결합하고 메트릭에 반환되는 데이터 양을 줄이려면 그룹화와 함수를 지정하세요.

Group by

Group By 세그먼트로 리소스 또는 메트릭 라벨을 그룹화하면 타임시리즈 수가 줄고 결과가 그룹별로 집계돼요. 예를 들어 instance_name으로 그룹화하면 지정된 Compute 인스턴스에 대한 집계 메트릭을 표시해요.

메타데이터 라벨

리소스 메타데이터 라벨에는 Google Cloud에서 리소스를 고유하게 식별할 수 있는 정보가 포함돼요. 타임시리즈 응답은 메타데이터 라벨이 타임시리즈 요청의 Group By 세그먼트에 있을 때만 반환해요. 메타데이터 라벨을 검색하는 API가 없으므로 Group By 목록을 선택한 서비스·메트릭에 사용 가능한 메타데이터 라벨로 채울 수 없어요. 하지만 Group By 필드 목록에는 공통 시스템 라벨의 사전 정의된 집합이 와요. 사용자 라벨은 사전 정의할 수 없지만 Group By 필드에 수동으로 입력할 수 있어요. Group By 세그먼트에 메타데이터·사용자·시스템 라벨을 포함하면 이를 기반으로 필터를 만들고 Alias 필드에서 값을 확장할 수 있어요.

Group by 함수

그룹의 타임시리즈를 단일 타임시리즈로 결합하려면 그룹화 함수를 선택하세요.

데이터 정렬 (Align)

정렬 함수를 적용해 고정 길이의 시간 동안 받은 모든 데이터 포인트를 결합하고 결과에 타임스탬프를 할당해 데이터를 정렬할 수 있어요. 정렬 중 모든 데이터 포인트는 고정 간격으로 수신되고, alignment period로 정의된 각 간격 내에서 각 타임시리즈에 대해 데이터가 단일 포인트로 집계돼요. 그 값은 사용하는 정렬 함수 유형에 따라 결정돼요.

정렬 기간 정의

집계를 선택했다면 Alignment Period 필드로 메트릭을 시간별로 그룹화할 수 있어요. "cloud monitoring auto"라는 기본값은 GCP Google Cloud Monitoring의 기본 그룹화를 사용해 Grafana의 그래프와 Google Cloud Monitoring UI의 그래프를 비교할 수 있게 해줘요. "grafana auto"라는 다른 자동 옵션은 선택한 시간 범위와 타임시리즈 패널 너비에 따라 Group By 시간을 자동 설정해요. 1h1d 같은 고정 시간 간격으로 그룹화할 수도 있어요.

별칭 패턴 설정

Alias By는 범례 키 형식을 제어하는 데 도움을 줘요. 기본적으로 Grafana는 메트릭 이름과 라벨을 보여주는데 길고 읽기 어려울 수 있어요. 별칭 필드에 패턴을 사용해 범례 키 형식을 커스터마이즈할 수 있어요.

별칭 패턴 설명 별칭 패턴 예시 예시 결과
{{metric.label.xxx}} 메트릭 라벨 값 반환 {{metric.label.instance_name}} grafana-1-prod
{{metric.type}} 전체 메트릭 유형 반환 {{metric.type}} compute.googleapis.com/instance/cpu/utilization
{{metric.name}} 메트릭 이름 부분 반환 {{metric.name}} instance/cpu/utilization
{{metric.service}} 서비스 부분 반환 {{metric.service}} compute
{{resource.label.xxx}} 리소스 라벨 값 반환 {{resource.label.zone}} us-east1-b
{{resource.type}} 모니터링 리소스 유형 이름 반환 {{resource.type}} gce_instance
{{metadata.system_labels.xxx}} 메타데이터 시스템 라벨 값 반환 {{metadata.system_labels.name}} grafana
{{metadata.user_labels.xxx}} 메타데이터 사용자 라벨 값 반환 {{metadata.user_labels.tag}} production

Group By 드롭다운에서 메트릭·리소스 라벨 목록을 선택할 수 있고, 별칭 패턴으로 범례 키에 포함시킬 수 있어요. 예를 들어 {{metric.type}} - {{metric.label.instance_name}}compute.googleapis.com/instance/cpu/usage_time - server1-prod가 돼요. {{resource.type}} - {{metric.type}}gce_instance - compute.googleapis.com/instance/cpu/usage_time이 돼요.

Grafana 패널에서 Google Cloud Console Metrics Explorer로 딥링크

패널의 타임시리즈를 클릭하면 컨텍스트 메뉴에 Google Cloud Console의 View in Metrics Explorer 링크가 있어요. 링크를 클릭하면 Google Account Chooser에서 계정을 선택한 뒤 Metrics Explorer로 이동하며, 링크는 유효하지만 쿼리의 GCP 프로젝트에 접근 권한이 있는 계정만 쿼리를 표시해요.

자동 단위 감지 이해

Grafana는 쿼리 에디터 행당 Cloud Monitoring API에 하나의 쿼리를 보내고, 각 API 응답에는 단위가 포함돼요. Grafana는 반환된 단위를 타임시리즈 패널과 호환되는 단위로 변환하려 하며, 성공하면 패널의 Y축에 단위를 표시해요. 쿼리 에디터 행이 다른 단위를 반환하면 Grafana는 마지막 행의 단위를 사용해요.

Monitoring Query Language 사용

MQL 쿼리 빌더는 MQL 결과를 타임시리즈 형식으로 쿼리·표시하는 데 도움을 줘요. Shift+Enter를 눌러 쿼리를 실행해요.

MQL 옵션:

  • Alias by: 범례 키 형식 제어.
  • Graph period: 기본 시간 기간을 재정의하는 토글. 드롭다운에서 기간을 선택해 반환되는 타임시리즈 데이터의 세분도를 제어.

MQL 쿼리는 메트릭 쿼리와 같은 별칭 패턴을 사용하지만, {{metric.service}}는 지원되지 않고 {{metric.type}}{{metric.name}}은 응답의 타임시리즈 키를 보여줘요.

Service Level Objectives 쿼리

SLO 쿼리 빌더는 SLO 데이터를 타임시리즈 형식으로 시각화하는 데 도움을 줘요. Grafana의 타임시리즈 선택기는 Google이 Service Monitoring 문서에서 쓰는 시스템 이름에 매핑되는 설명적 이름을 사용해요.

선택기 드롭다운 값 해당 타임시리즈 선택기
SLI Value select_slo_health
SLO Compliance select_slo_compliance
SLO Error Budget Remaining select_slo_budget_fraction
SLO Burn Rate select_slo_burn_rate

SLO 쿼리 별칭 패턴:

별칭 패턴 설명 예시 결과
{{project}} GCP 프로젝트 이름 반환 myProject
{{service}} 서비스 이름 반환 myService
{{slo}} SLO 반환 latency-slo
{{selector}} 선택기 반환 select_slo_health

SLO 쿼리는 메트릭 쿼리와 같은 정렬 기간 기능을 사용해요.

PromQL로 쿼리

PromQL 쿼리 유형은 Prometheus Query Language(PromQL) 구문으로 Google Cloud Monitoring 메트릭을 쿼리하게 해줘요. Prometheus나 Grafana Mimir에서 PromQL에 익숙하다면 같은 구문을 Google Cloud Monitoring 데이터에 사용할 수 있어요.

PromQL 옵션:

  • Min step: 데이터 포인트 사이 간격의 하한을 정의해요. 1h로 설정하면 측정이 1시간마다 이루어짐을 암시해요. $__interval$__rate_interval 매크로를 지원해요.

PromQL 쿼리 예시:

Compute Engine 인스턴스의 CPU 사용량 쿼리:

compute_googleapis_com:instance_cpu_utilization

라벨로 필터:

compute_googleapis_com:instance_cpu_utilization{instance_name="my-instance"}

카운터 메트릭의 rate 계산:

rate(logging_googleapis_com:log_entry_count[5m])

더 알아보기 (Learn more)