이 페이지에서는 Cloud Monitoring 측정항목을 쿼리하는 그래프를 추가하여 Dataflow 프로젝트 모니터링 대시보드를 맞춤설정하는 방법을 보여줍니다.
프로젝트 모니터링 대시보드를 사용하면 작업 모음을 모니터링하고 전반적인 상태와 성능을 확인할 수 있습니다. 대시보드에는 대부분의 워크로드에 유용한 기본 차트 세트가 포함되어 있습니다. 대시보드를 맞춤설정하면 비즈니스 요구사항에 맞는 차트를 추가할 수 있습니다.
예시 시나리오
대시보드를 맞춤설정하는 방법을 보여주기 위해 조직에서 프로젝트의 상위 25개 작업의 예상 비용을 추적한다고 가정해 보겠습니다.
이 시나리오에서는 작업에 다음과 같은 특성이 있다고 가정합니다.
- 모든 작업이 스트리밍 작업입니다.
- 작업에서 데이터 처리 결제 모델을 사용합니다.
- 작업은 표준(HDD) 및 SSD 모두 영구 디스크에 파일을 저장합니다.
- 작업에서 GPU를 사용하지 않습니다.
측정항목 선택
이전 섹션에 나열된 가정을 고려할 때 작업 비용을 추정하는 데 필요한 측정항목은 다음과 같습니다.
리소스 | 관련 측정항목 |
---|---|
CPU (vCPU/시간) |
job/total_vcpu_time
|
메모리 (GB/시간) |
job/total_memory_usage_time
|
셔플 중에 처리된 데이터 (GB) |
job/total_streaming_data_processed
|
영구 디스크 사용량 (시간당 GB, 표준 및 SSD) |
job/total_pd_usage_time
|
자세한 내용은 Dataflow 가격 책정을 참고하세요.
Monitoring에서 사용할 수 있는 리소스를 알아보려면 모니터링 리소스 유형을 참고하세요.
PromQL 쿼리 작성
Cloud Monitoring의 측정항목을 쿼리하려면 Prometheus 쿼리 언어 (PromQL)을 사용하세요. 이 섹션에서는 더 작은 절부터 시작하여 시나리오에 맞는 PromQL 쿼리를 작성하는 방법을 보여줍니다. 이 섹션에서는 PromQL에 대한 사전 지식이 없다고 가정합니다. 자세한 내용은 Cloud Monitoring의 PromQL을 참고하세요.
측정항목 이름을 PromQL 문자열에 매핑
PromQL 쿼리에서 Monitoring 측정항목을 사용하려면 다음과 같이 측정항목 이름을 PromQL 문자열에 매핑해야 합니다.
측정항목 이름 | PromQL 문자열 |
---|---|
job/total_vcpu_time |
dataflow_googleapis_com:job_total_vcpu_time |
job/total_memory_usage_time |
dataflow_googleapis_com:job_total_memory_usage_time |
job/total_streaming_data_processed |
dataflow_googleapis_com:job_total_streaming_data_processed
|
job/total_pd_usage_time |
dataflow_googleapis_com:job_total_pd_usage_time |
자세한 내용은 Cloud Monitoring 측정항목을 PromQL에 매핑을 참고하세요.
쿼리 빌드
예상 비용을 확인하려면 각 측정항목의 최신 값을 기준으로 각 구성요소의 가격을 계산하세요. 측정항목은 60초마다 샘플링되므로 최신 값을 가져오려면 1분 기간 함수를 사용하고 각 기간 내의 최댓값을 가져옵니다.
예상 CPU 비용을 확인하려면 먼저
job/total_vcpu_time
을 초에서 시간으로 변환합니다. 시간당 vCPU당 CPU 가격을 곱합니다.# ((vCPU time)[Bucket 1m] / Seconds per hour * vCPU Price) max_over_time(dataflow_googleapis_com:job_total_vcpu_time[1m]) / 3600 * CPU_PRICE
이 수식은 프로젝트의 모든 작업에 대한 예상 CPU 비용을 제공합니다. 작업당 예상 CPU 비용을 확인하려면
sum
집계 연산자를 사용하고 작업 ID별로 그룹화합니다.sum( max_over_time(dataflow_googleapis_com:job_total_vcpu_time[1m]) / 3600 * CPU_PRICE ) by (job_id)
예상 메모리 비용을 확인하려면
job/total_memory_usage_time
을 초에서 시간으로 변환합니다. GB당 시간별 메모리 가격을 곱하고 작업 ID별로 그룹화합니다.#((Memory time)[Bucket 1m] / Seconds per hour) * Memory Price sum( max_over_time(dataflow_googleapis_com:job_total_memory_usage_time[1m]) / 3600 * MEMORY_PRICE ) by (job_id)
예상 셔플 비용을 확인하려면
job/total_streaming_data_processed
을 바이트에서 GB로 변환합니다. 셔플 중에 처리된 데이터의 GB당 가격을 곱하고 작업 ID별로 그룹화합니다.# Shuffle Billing. Reported once every 60 seconds, measured in bytes. # Formula: (Shuffle Data)[Bucket 1m] / (Bytes in GB) * (Shuffle Price) sum( max_over_time( dataflow_googleapis_com:job_total_streaming_data_processed[1m] ) / 1000000000 * SHUFFLE_PRICE ) by (job_id)
예상 영구 디스크 사용 비용을 확인하려면
storage_type
라벨을 기준으로 색인을 생성하여 디스크 유형 (표준 또는 SSD)별로 구분합니다. 각 값을 GB초에서 GB시간으로 변환하고 작업 ID별로 그룹화합니다.# Formula: ((Standard PD time)[Bucket 1m] / Seconds per hour) * Standard PD price sum( max_over_time( dataflow_googleapis_com:job_total_pd_usage_time{storage_type="HDD"}[1m] ) / 3600 * STANDARD_PD_PRICE ) by (job_id) # Formula: ((SSD PD time)[Bucket 1m] / Seconds per hour) * SSD PD price sum( max_over_time( dataflow_googleapis_com:job_total_pd_usage_time{storage_type="SSD"}[1m] ) / 3600 * SSD_PD_PRICE ) by (job_id)
이전 값을 합하면 작업당 예상 비용이 됩니다. 상위 25개 작업을 가져오려면 상위 K 필터를 사용하세요.
topk(25, # Sum the individual values. )
전체 쿼리 작성
전체 쿼리는 다음과 같습니다.
topk(25,
sum(
max_over_time(
dataflow_googleapis_com:job_total_vcpu_time[1m]) / 3600 * CPU_PRICE
)
by (job_id) +
sum(
max_over_time(
dataflow_googleapis_com:job_total_memory_usage_time[1m]) / 3600 * MEMORY_PRICE
)
by (job_id) +
sum(
max_over_time(
dataflow_googleapis_com:job_total_streaming_data_processed[1m]) / 1000000000 * SHUFFLE_PRICE
)
by (job_id) +
sum(
max_over_time(
dataflow_googleapis_com:job_total_pd_usage_time{storage_type="HDD"}[1m]) / 3600 * STANDARD_PD_PRICE
)
by (job_id) +
sum(
max_over_time(
dataflow_googleapis_com:job_total_pd_usage_time{storage_type="SSD"}[1m]) / 3600 * SSD_PD_PRICE
)
by (job_id)
)
다음 변수를 해당 지역의 Dataflow 가격 책정 페이지 값으로 바꿉니다.
- CPU_PRICE: CPU 가격(vCPU별 시간당)
- MEMORY_PRICE: 메모리 가격(GB당 시간당)
- SHUFFLE_PRICE: 셔플 가격(GB당)
- STANDARD_PD_PRICE: 표준 영구 디스크 가격(GB당 시간당)
- SSD_PD_PRICE: SSD 영구 디스크 가격(GB당 시간당)
대시보드 수정
이 프로젝트에서 이전에 Dataflow용 맞춤 대시보드를 만들지 않은 경우 다음과 같이 만듭니다.
Google Cloud 콘솔에서 Dataflow > Monitoring 페이지로 이동합니다.
사전 정의됨 드롭다운에서 대시보드 맞춤설정을 클릭합니다.
선택사항: 맞춤 뷰 이름 상자에 대시보드의 이름을 입력합니다.
이전에 맞춤 대시보드를 만든 경우 다음 단계에 따라 대시보드를 수정하세요.
Google Cloud 콘솔에서 Dataflow > Monitoring 페이지로 이동합니다.
사전 정의됨 드롭다운에서 맞춤 대시보드를 선택합니다.
대시보드 수정을 클릭합니다.
측정항목 차트 추가
대시보드에 측정항목 차트를 추가하려면 다음 단계를 따르세요.
- 위젯 추가를 클릭합니다.
- 위젯 추가 창에서 측정항목을 선택합니다.
- 위젯 제목 상자에 차트 제목(예:
Estimated cost (top 25)
)을 입력합니다. - PROMQL을 클릭합니다.
- 이전에 표시된 PromQL 쿼리를 붙여넣습니다.
- 쿼리 실행을 클릭합니다.
- 적용을 클릭합니다.
- 선택사항: 차트를 드래그하여 대시보드에 배치합니다.
다음 단계
- 참조선 추가를 통해 측정항목이 사전 정의된 기준을 초과하는 시점을 확인할 수 있습니다.
- PromQL 학습
- 대시보드에 대해 자세히 알아보기