Cloud Billing 데이터 BigQuery로 내보내기를 Looker Studio와 결합하여 Google Cloud 비용을 최신 상태로 유지할 수 있습니다.
이 문서에서는 Cloud Billing 데이터를 사용하여 결제 사용량 및 비용 통계 대시보드를 설정하는 방법을 보여줍니다. 대시보드를 사용하면 Compute Engine 리소스에 얼마를 지출하는가?, 어떤 환경에 가장 많은 비용이 드는가?와 같은 Google Cloud 지출 관련 질문에 답할 수 있습니다.
이 튜토리얼을 따르거나 다음 동영상을 확인하여 대시보드를 설정할 수 있습니다.
목표
이 튜토리얼에서는 다음 작업을 완료하는 방법을 보여줍니다.
Cloud Shell을 사용하여 결제 사용량 및 비용 통계 대시보드의 자체 사본을 설정합니다.
Terraform 또는 Python을 사용하여 이 튜토리얼의 단계를 따를 수 있습니다.
Google Cloud 환경에서 사용하는 라벨을 사용하도록 대시보드의 필터를 구성합니다.
Cloud Billing 계정이 여러 개 있거나 미화 (USD) 외의 통화로 Cloud Billing 계정이 있는 경우와 같은 고급 사례의 대시보드 데이터 소스를 수정하는 방법을 알아봅니다.
비용
이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.
The cost of storing your Cloud Billing data in BigQuery is typically free or minimal. Depending on the size of the BigQuery dataset, you might incur costs for querying the data for analysis.
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
시작하기 전에
샘플 결제 사용량 및 비용 통계 대시보드에 액세스할 수 있는지 확인합니다. 샘플에 액세스할 수 없는 경우 조직에서 도메인 제한을 사용 설정했을 수 있습니다. 관리자가 내 계정의 도메인 제한을 일시적으로 사용 중지할 수 있습니다.
조직에서 표준 사용량 비용 데이터에 대해 BigQuery로 Cloud Billing 내보내기를 사용 설정했는지 확인합니다.
Cloud Billing 데이터 내보내기가 사용 설정되어 있지 않으면 BigQuery로 Cloud Billing 데이터 내보내기 사용 설정에 관해 알아보세요.
Cloud Billing 데이터 내보내기의 데이터 세트를 호스팅하는 프로젝트에 BigQuery 뷰를 만들 수 있는 권한이 있어야 합니다.
필요한 경우 BigQuery 뷰에 대한 새 데이터 세트를 만들려면 BigQuery 데이터 세트를 만들 수 있는 권한이 있어야 합니다.
Google Cloud 환경에 대한 다음 정보를 가져옵니다.
- Cloud Billing BigQuery 데이터 세트가 호스팅되는 프로젝트 ID입니다.
- 표준 및 세부 비용 데이터 내보내기의 데이터 세트 이름입니다. 일반적으로 비용 데이터 내보내기는 동일한 데이터 세트에 있습니다.
조직의 다른 사용자와 대시보드를 공유하는 경우 다음 추가 단계를 따르는 것이 좋습니다. 이를 통해 다른 사용자가 데이터에 액세스할 때 내 사용자 인증 정보 또는 자체 사용자 인증 정보를 사용하도록 요구하는 대신 BigQuery 데이터에 인증할 수 있는 Google Cloud 서비스 계정을 설정할 수 있습니다.
Looker Studio 서비스 에이전트 도움말 페이지에서 Looker Studio 서비스 에이전트의 이메일 주소를 가져옵니다.
Python 스크립트를 사용하여 대시보드를 만드는 경우 Looker Studio 서비스 에이전트의 서비스 계정을 만듭니다.
Terraform을 사용하는 경우 서비스 계정을 수동으로 만들 필요가 없습니다. Terraform 구성은 구성을 적용할 때 서비스 계정을 만듭니다.
Python 스크립트를 사용하는 경우 Cloud Shell 환경에 최신 버전의 Python 3이 있는지 확인합니다. Python 버전을 확인하려면 Cloud Shell 터미널에서
python --version
를 입력하고 Enter 키를 누릅니다.
대시보드 사본 만들기
Terraform
Terraform을 사용하여 자체 대시보드 사본을 만들려면 먼저 프로세스를 자동화하는 GitHub 저장소를 클론합니다. 이 단계에서는 브라우저에서 사용할 수 있는 Google Cloud용 대화형 셸 환경인 Cloud Shell을 사용합니다. Cloud Shell에는 Terraform이 사전 설치되어 있습니다.
저장소의 Terraform 구성은 대략적으로 다음 작업을 실행합니다.
- 표준 비용 데이터 내보내기에서 데이터를 가져오는 새 BigQuery 뷰를 만듭니다.
- 대시보드 템플릿을 복사하고 사본을 데이터의 BigQuery 뷰에 연결합니다.
- Looker Studio 대시보드에 저장할 수 있는 사본에 대한 Looker Studio 링크가 제공됩니다.
- 대시보드의 인증 방법으로 사용하는 Google Cloud 서비스 계정 ID를 제공합니다.
대시보드를 만들려면 다음 단계를 따르세요.
Cloud Shell에서 GitHub 저장소를 엽니다.
프로젝트 및 BigQuery 데이터 세트에 관한 정보가 포함된 Terraform 변수 정의 파일을 만듭니다. 다음 명령어를 사용하여
variables.tfvars
라는 파일을 만듭니다.cat << EOF > variables.tfvars project-id = "PROJECT_ID" bq-dashboard-dataset-name = "DATASET_NAME" bq-billing-export-table-id = "PROJECT_ID.DATASET_NAME.TABLE_ID" looker-studio-service-agent-name = "LOOKER_STUDIO_AGENT_NAME" EOF
여기에서 변수는 다음과 같습니다.
- PROJECT_ID: Cloud Billing 데이터 세트를 호스팅하는 프로젝트 ID입니다.
- DATASET_NAME: 표준 비용 데이터 내보내기가 포함된 BigQuery 데이터 세트입니다.
- TABLE_ID: 표준 결제 데이터 내보내기가 포함된 BigQuery 테이블의 이름입니다.
- LOOKER_STUDIO_AGENT_NAME: Looker Studio 서비스 상담사의 이메일 주소입니다. 이 주소는 Looker Studio 서비스 상담사 도움말 페이지에서 확인할 수 있습니다.
GitHub 저장소를 Terraform 작업 디렉터리로 초기화하려면 다음 명령어를 실행합니다.
terraform init
원하는 경우 Terraform 구성에서 적용할 변경사항을 미리 보려면 다음
terraform plan
명령어를 실행합니다.terraform plan -var-file=variables.tfvars
Cloud Shell이 사용자를 대신하여 API를 호출할 수 있도록 승인하라는 메시지가 표시될 수 있습니다.
Terraform 변경사항을 검토하고 변수 값을 변경해야 하는 경우
variables.tfvars
를 수정합니다. 리소스를 만들 준비가 되면 다음terraform apply
명령어를 실행합니다.terraform apply -var-file=variables.tfvars
명령어를 실행하면 인증을 위해 생성된 서비스 계정과 Looker Studio 대시보드 링크가 표시됩니다.
서비스 계정 이름을 복사합니다. Looker Studio 데이터 소스의 인증을 구성할 때 이 정보가 필요합니다.
Looker Studio 링크를 클릭하여 대시보드를 엽니다.
Looker Studio에서 수정 및 공유를 클릭하여 대시보드를 저장합니다. 데이터 액세스 설정을 검토하라는 메시지가 표시되면 확인 및 저장을 클릭합니다.
보고서에 데이터를 추가하라는 메시지가 표시되면 보고서에 추가를 클릭합니다.
이제 Looker Studio 홈페이지에서 대시보드에 액세스할 수 있습니다.
Python
Python을 사용하여 자체 대시보드 사본을 만들려면 먼저 프로세스를 자동화하는 GitHub 저장소를 클론합니다. 이 단계에서는 브라우저에서 사용할 수 있는 Google Cloud용 대화형 셸 환경인 Cloud Shell을 사용합니다.
상위 수준에서는 저장소의 설정 스크립트가 다음 작업을 수행합니다.
- 표준 비용 데이터 내보내기가 있는 데이터 세트에 새 BigQuery 뷰를 만듭니다.
- 대시보드 템플릿을 복사하고 사본을 데이터의 BigQuery 뷰에 연결합니다.
- Looker Studio 대시보드에 저장할 수 있는 사본에 대한 Looker Studio 링크가 제공됩니다.
대시보드를 만들려면 다음 단계를 따르세요.
Cloud Shell에서 GitHub 저장소를 엽니다.
billboard
디렉터리로 이동합니다.cd examples/billboard
다음 명령어를 실행하여 스크립트의 Python 환경을 설정합니다.
rm -rf bill-env python3 -m venv bill-env source bill-env/bin/activate pip install -r requirements.txt
대시보드를 만드는 스크립트를 실행합니다. 사용자를 대신하여 API를 호출하도록 Cloud Shell을 승인해야 할 수도 있습니다.
python billboard.py \ -pr 'PROJECT_ID' \ -se 'STANDARD_BILLING_EXPORT_DATASET' \ -bb 'BILLBOARD_DATASET'
여기에서 변수는 다음과 같습니다.
- PROJECT_ID: Cloud Billing 데이터 세트를 호스팅하는 프로젝트 ID입니다.
- STANDARD_BILLING_EXPORT_DATASET: 표준 사용 비용 데이터 내보내기가 포함된 BigQuery 데이터 세트입니다.
- BILLBOARD_DATASET: 대시보드의 BigQuery 뷰가 생성되는 BigQuery 데이터 세트의 이름입니다(예:
example_dashboard_view
). 뷰의 데이터 세트가 아직 없으면 스크립트가 이 이름으로 새 데이터 세트를 만듭니다.
스크립트 실행이 완료되면 대시보드에 Looker Studio 링크가 표시됩니다.
Looker Studio 링크를 클릭하여 대시보드를 엽니다.
Looker Studio에서 수정 및 공유를 클릭하여 대시보드를 저장합니다. 보고서에 데이터 소스를 추가하라는 메시지가 나타나면 보고서에 추가를 클릭합니다.
이제 Looker Studio 홈페이지에서 대시보드에 액세스할 수 있습니다.
(선택사항) 데이터 소스 사용자 인증 정보 구성
기본적으로 결제 사용량 대시보드는 사용자 인증 정보를 사용하여 BigQuery 데이터 소스에 액세스합니다. 대시보드를 다른 사용자와 공유하려면 데이터 소스가 사용자 인증 정보에 종속되지 않도록 Google Cloud 서비스 계정을 사용하여 BigQuery 데이터 세트에 인증하는 것이 좋습니다.
Terraform을 사용하여 대시보드를 복사한 경우 terraform apply
명령어를 실행하면 서비스 계정 ID가 제공됩니다. Python 스크립트를 사용한 경우 다음 단계에 따라 서비스 계정을 수동으로 만들어야 합니다.
Looker Studio 서비스 에이전트 도움말 페이지에서 Looker Studio 서비스 에이전트의 이메일 주소를 가져옵니다.
대시보드의 BigQuery 뷰가 있는 프로젝트에 서비스 계정에 다음 권한을 부여합니다.
bigquery.dataViewer
bigquery.jobUser
iam.serviceAccountTokenCreator
서비스 계정 ID가 있으면 다음 단계에 따라 서비스 계정을 인증에 사용합니다.
Looker Studio 홈페이지에서 대시보드를 엽니다.
수정을 클릭하여 대시보드를 수정합니다.
리소스 메뉴에서 추가된 데이터 소스 관리를 선택합니다. 대시보드의 데이터 소스 이름은
billing-export-view
로 시작합니다.데이터 소스의 작업 열에서 수정을 클릭합니다.
데이터 사용자 인증 정보를 클릭합니다.
데이터 사용자 인증 정보 업데이트 페이지에서 서비스 계정 사용자 인증 정보를 선택하고 서비스 계정 ID를 입력합니다.
업데이트를 클릭하여 서비스 계정 사용자 인증 정보를 사용합니다.
완료를 클릭하여 데이터 소스에 변경사항을 저장합니다.
대시보드를 보려면 보기를 클릭합니다.
조직의 라벨을 사용하도록 대시보드 업데이트
Cost Reporting: Labels
페이지의 차트와 같이 대시보드의 여러 차트는 리소스의 라벨을 기반으로 합니다. 특정 라벨별로 정확한 비용 분석을 보려면 기본 필터를 수정하여 자체 라벨을 사용해야 합니다.
Looker Studio 홈페이지에서 대시보드를 엽니다.
수정을 클릭하여 대시보드를 수정합니다.
리소스 메뉴에서 필터 관리를 선택합니다.
labels.key
및project.labels.key
를 기반으로 하는 필터를 검토하고 해당하는 경우 수정을 클릭하여 라벨 키를 조직에서 사용하는 키로 변경합니다.예를 들어 라벨 키
department
를 사용하여 비즈니스 단위별로 리소스를 정리하는 경우business_unit
필터를 수정하고project.labels.key
필터를department
로 변경합니다.닫기를 클릭하여 필터 수정을 완료합니다.
대시보드에서 데이터 분석하기
Looker Studio 대시보드의 페이지에서는 비용 데이터를 분류하여 비용 및 추세에 관한 간단한 요약을 확인하고 지출에 관한 자세한 정보를 얻을 수 있습니다.
대부분의 페이지에서 프로젝트별로 데이터를 필터링하고, 캘린더를 사용하여 비용을 분석할 기간을 선택할 수 있습니다.
비용 개요 보기
개요 페이지를 사용하면 이번 달과 이전 인보이스 대상 월의 순 비용, 주요 서비스의 비용, 지난 30일 동안의 일일 비용을 대략적으로 확인할 수 있습니다.
동향 페이지를 사용하여 이번 달과 지난달, 이번 분기와 지난 분기 등 여러 기간의 비용을 비교할 수 있습니다.
분석 페이지를 사용하여 시간 경과에 따른 비용을 분석하고 비정상적으로 높거나 낮은 지출과 같은 이상치를 파악합니다.
비용 요인 파악
다음 페이지를 사용하여 가장 많은 비용을 지출하는 위치를 찾으세요.
- 서비스별 월별 비용
- 월별 프로젝트별 비용
- 프로젝트, 서비스, SKU별 비용
- 지역별 비용
각 서비스의 비용을 자세히 알아보려면 서비스별 페이지를 사용하세요. 예를 들어 GKE 클러스터 페이지에는 GKE 클러스터 및 네임스페이스별로 분류된 비용이 표시됩니다.
약정 사용 할인으로 비용을 절감할 수 있는 기회 파악하기
약정 사용 할인 (CUD)은 지정된 기간 동안 최소 수준 이상의 리소스를 사용하거나 최소 금액을 지출하겠다는 약속 하에 할인된 가격이 제공됩니다.
대시보드의 CUD 페이지에는 CUD를 받을 수 있는 Compute Engine, Cloud SQL, Memorystore 사용량이 표시됩니다. 이미 CUD가 하나 이상 있는 경우 이러한 페이지에는 기존 CUD에 아직 적용되지 않은 사용량만 표시됩니다.
Cloud Marketplace 소프트웨어 및 추가 라이선스의 비용 보기
Marketplace 페이지를 사용하여 Cloud Marketplace에서 구매한 소프트웨어(예: Google Cloud NetApp 볼륨)의 비용을 확인할 수 있습니다.
라이선스 페이지를 사용하여 Compute Engine의 Windows Server 라이선스, Cloud Marketplace에서 구매한 서드 파티 라이선스와 같은 추가 라이선스에 지출하는 금액을 확인할 수 있습니다.
라벨별 비용 보기
조직의 라벨을 사용하도록 대시보드의 필터를 맞춤설정할 수 있습니다. 필터를 업데이트한 후 다음 페이지를 사용하여 프로젝트 및 폴더의 비용을 확인할 수 있습니다.
애플리케이션별 페이지에는 라벨 키
application
아래의 모든 리소스에 대한 비용이 표시됩니다. 예를 들어 웹 앱과 모바일 앱이 있고 리소스에 각각application:web
및application:mobile
로 라벨을 지정하면 각 애플리케이션의 비용을 별도로 확인할 수 있습니다.라벨 페이지에는 비용 센터, 비즈니스 코드와 같은 특정 라벨의 비용이 표시됩니다. 대시보드의 필터를 맞춤설정한 경우 필터를 반영하도록 차트의 제목을 변경할 수 있습니다.
(고급) 여러 Cloud Billing 계정의 데이터 수정
대시보드에 여러 Cloud Billing 계정의 데이터를 포함하려면 모든 Cloud Billing 계정의 결제 데이터 내보내기를 포함하도록 BigQuery 뷰를 수정하면 됩니다.
시작하기 전에
포함할 각 Cloud Billing 계정에 대해 튜토리얼 기본 요건의 모든 단계를 수행합니다.
추가 Cloud Billing 내보내기를 포함하도록 BigQuery 뷰 업데이트
Google Cloud Console에서 BigQuery 페이지를 엽니다.
대시보드에 만든 데이터 세트가 포함된 프로젝트를 선택합니다.
탐색기 패널에서 프로젝트를 펼친 다음 데이터 세트를 확장합니다.
결제 보드 보기를 클릭하여 세부정보를 확인합니다. 이 뷰는 표준 비용 및 사용량 데이터 내보내기를 쿼리합니다.
세부정보 탭을 클릭한 다음 쿼리 수정을 클릭합니다. 뷰에 대한 쿼리는 다음과 유사합니다.
SELECT *, COALESCE((SELECT SUM(x.amount) FROM UNNEST(s.credits) x),0) AS credits_sum_amount, COALESCE((SELECT SUM(x.amount) FROM UNNEST(s.credits) x),0) + cost as net_cost, PARSE_DATE("%Y%m", invoice.month) AS Invoice_Month, _PARTITIONDATE AS date from `PROJECT_ID.BILLING_ACCOUNT_EXPORT` s WHERE _PARTITIONDATE > DATE_SUB(CURRENT_DATE(), INTERVAL 13 MONTH)
여기서 PROJECT_ID는 Cloud Billing용 BigQuery 표준 비용 데이터 내보내기가 포함된 프로젝트이고 BILLING_ACCOUNT_EXPORT는 표준 비용 데이터가 있는 BigQuery 테이블의 이름입니다.
기존 쿼리를 복제하고
FROM
절에서 프로젝트 ID와 BigQuery 테이블을 추가 Cloud Billing 계정의 정보로 바꿉니다.데이터를 결합하려면 두 쿼리 사이에
UNION ALL
연산자를 추가합니다. 최종 쿼리는 PROJECT_ID_1 및 PROJECT_ID_2에 있는 BILLING_ACCOUNT_1 및 BILLING_ACCOUNT_2의 데이터 내보내기를 결합한 다음 예시와 비슷합니다.SELECT *, --query for BILLING_ACCOUNT_1 COALESCE((SELECT SUM(x.amount) FROM UNNEST(s.credits) x),0) AS credits_sum_amount, COALESCE((SELECT SUM(x.amount) FROM UNNEST(s.credits) x),0) + cost as net_cost, EXTRACT(DATE FROM _PARTITIONTIME) AS date FROM `PROJECT_ID_1.BILLING_ACCOUNT_1_EXPORT` s WHERE _PARTITIONTIME >"2021-01-01" UNION ALL SELECT *, --query for BILLING_ACCOUNT_2 COALESCE((SELECT SUM(x.amount) FROM UNNEST(s.credits) x),0) AS credits_sum_amount, COALESCE((SELECT SUM(x.amount) FROM UNNEST(s.credits) x),0) + cost as net_cost, PARSE_DATE("%Y%m", invoice.month) AS Invoice_Month, _PARTITIONDATE AS date from `PROJECT_ID_2.BILLING_ACCOUNT_2_EXPORT` s WHERE _PARTITIONDATE > DATE_SUB(CURRENT_DATE(), INTERVAL 13 MONTH)
세부 비용 및 사용량 데이터를 쿼리하는 billboard_detail 뷰에 대해 이 단계를 반복합니다.
계정 중 하나가 USD와 다른 통화인 경우 다음 단계를 반복하고 다음 예시와 비슷하게
currency_conversion_rate
열을 사용하여 USD로 변환합니다.select *, (COALESCE((SELECT SUM(x.amount) FROM UNNEST(s.credits) x),0))/currency_conversion_rate AS credits_sum_amount, (COALESCE((SELECT SUM(x.amount) FROM UNNEST(s.credits) x),0))/currency_conversion_rate + cost/currency_conversion_rate as net_cost, 'USD' as net_cost_currency, PARSE_DATE("%Y%m", invoice.month) AS Invoice_Month, _PARTITIONDATE AS date from `PROJECT_ID.BILLING_ACCOUNT_DATASET` s WHERE _PARTITIONDATE > DATE_SUB(CURRENT_DATE(), INTERVAL 13 MONTH)
삭제
Terraform
대시보드를 더 이상 사용하지 않으려면 Terraform 작업 디렉터리를 다시 열고 terraform apply
명령어를 사용하여 만든 리소스를 삭제합니다.
Python
대시보드를 더 이상 사용하지 않으려면 GitHub 저장소를 클론하고 -clean
옵션을 사용하여 대시보드 스크립트를 실행합니다. 스크립트는 BigQuery 뷰를 삭제하지만 BigQuery 내보내기 데이터 세트는 그대로 둡니다.
Cloud Shell에서 GitHub 저장소를 엽니다.
billboard
디렉터리로 이동합니다.cd examples/billboard
다음 명령어를 실행하여 스크립트의 Python 환경을 설정합니다.
pip install virtualenv virtualenv bill-env source bill-env/bin/activate pip install -r requirements.txt
삭제 명령어를 실행합니다.
python billboard.py \ -pr 'PROJECT_ID' \ -se 'STANDARD_BILLING_EXPORT_DATASET' \ -de 'DETAILED_BILLING_EXPORT_DATASET' \ -bb 'BILLBOARD_DATASET' \ -clean yes
여기에서 변수는 다음과 같습니다.
- PROJECT_ID: Cloud Billing 데이터 세트를 호스팅하는 프로젝트 ID입니다.
- STANDARD_BILLING_EXPORT_DATASET: 표준 사용 비용 데이터 내보내기가 포함된 BigQuery 데이터 세트입니다.
- DETAILED_BILLING_EXPORT_DATASET: 세부 사용량 비용 데이터 내보내기가 포함된 BigQuery 데이터 세트입니다.
- BILLBOARD_DATASET: 대시보드에 BigQuery 뷰를 만든 BigQuery 데이터 세트입니다.
Looker Studio 대시보드를 삭제하려면 Looker Studio를 열고 대시보드 위치를 찾은 다음 메뉴에서 삭제를 클릭합니다.