Cloud Billing 데이터 BigQuery로 내보내기를 Looker Studio와 결합하여 Google Cloud 비용을 최신 상태로 유지할 수 있습니다.
이 페이지에서는 Cloud Billing 데이터를 사용하여 결제 사용량 및 비용 통계 대시보드를 설정하는 방법을 보여줍니다. 대시보드를 사용하면 Compute Engine 리소스에 얼마를 지출하는가?와 같은 Google Cloud 지출 관련 질문에 답할 수 있습니다.
이 튜토리얼을 따르거나 다음 동영상을 확인하여 대시보드를 설정합니다.
목표
이 튜토리얼에서는 다음 작업을 완료하는 방법을 보여줍니다.
Cloud Shell을 사용하여 결제 사용량 및 비용 통계 대시보드의 자체 사본을 설정합니다.
Cloud Billing 계정이 여러 개 있거나 USD 외의 통화로 Cloud Billing 계정이 있는 경우와 같은 고급 사례의 대시보드 뷰를 수정하는 방법을 알아봅니다.
비용
이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.
BigQuery에 Cloud Billing 데이터를 저장하는 비용은 일반적으로 무료 또는 저렴합니다. BigQuery 데이터 세트의 크기에 따라 분석을 위해 데이터를 쿼리하는 비용이 발생할 수 있습니다.
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
시작하기 전에
BigQuery로 Cloud Billing 데이터 내보내기 설정
대시보드를 사용하려면 표준 및 세부 Cloud Billing 사용량 데이터에 대해 BigQuery 내보내기를 사용 설정해야 합니다.
데이터 내보내기를 사용 설정한 후 Cloud Billing 데이터가 데이터 세트에 채워지는 데 하루가 걸립니다. 네트워크 이그레스, VM 요금, Pub/Sub 사용량 등이 차례로 표시될 수 있습니다. 데이터 세트에 데이터가 있으면 데이터 세트에 대한 쿼리를 실행할 수 있습니다.
조직에 이미 BigQuery 내보내기가 설정되어 있는 경우 데이터 세트를 호스팅하는 프로젝트에 BigQuery 뷰를 만들 수 있는 권한이 있어야 합니다.
필요한 경우 BigQuery 뷰에 대한 새 데이터 세트를 만들려면 BigQuery 데이터 세트를 만들 수 있는 권한이 있어야 합니다.
Google Cloud 환경에 대한 다음 정보를 가져옵니다.
- Cloud Billing BigQuery 데이터 세트가 호스팅되는 프로젝트 ID입니다.
- 표준 및 세부 비용 데이터 내보내기의 데이터 세트 이름입니다. 일반적으로 비용 데이터 내보내기는 동일한 데이터 세트에 있습니다.
대시보드 사본 만들기
자체 대시보드 사본을 만들려면 먼저 프로세스를 자동화하는 GitHub 저장소를 클론합니다. 이 단계에서는 브라우저에서 사용할 수 있는 Google Cloud용 대화형 셸 환경인 Cloud Shell을 사용합니다.
상위 수준에서는 저장소의 설정 스크립트가 다음 작업을 수행합니다.
- 새 BigQuery 데이터 세트를 만듭니다. 여기에는 표준 및 세부 비용 데이터 내보내기에서 데이터를 가져오는 뷰가 포함됩니다.
- 대시보드 템플릿을 복사하고 사본을 데이터의 BigQuery 뷰에 연결합니다.
- Looker Studio 대시보드에 저장할 수 있는 사본에 대한 Looker Studio 링크가 제공됩니다.
사본을 만들려면 다음 안내를 따르세요.
Cloud Shell에서 GitHub 저장소를 엽니다.
billboard
디렉터리로 이동합니다.cd examples/billboard
다음 명령어를 실행하여 스크립트의 Python 환경을 설정합니다.
pip install virtualenv virtualenv 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 \ -de DETAILED_BILLING_EXPORT_DATASET \ -bb BILLBOARD_DATASET
여기에서 변수는 다음과 같습니다.
- PROJECT_ID: Cloud Billing 데이터 세트를 호스팅하는 프로젝트 ID입니다.
- STANDARD_BILLING_EXPORT_DATASET: 표준 비용 데이터 내보내기가 포함된 BigQuery 데이터 세트입니다.
- DETAILED_BILLING_EXPORT_DATASET: 세부 사용량 비용 데이터 내보내기가 포함된 BigQuery 데이터 세트입니다.
- BILLBOARD_DATASET: 대시보드의 BigQuery 뷰가 생성되는 BigQuery 데이터 세트의 이름입니다(예:
example_dashboard_views
). 뷰의 데이터 세트가 아직 없으면 스크립트가 이 이름으로 새 데이터 세트를 만듭니다.
스크립트 실행이 완료되면 대시보드에 Looker Studio 링크가 표시됩니다.
Looker Studio 링크를 클릭하여 대시보드를 엽니다.
Looker Studio에서 수정 및 공유를 클릭하여 대시보드를 저장합니다. 보고서에 데이터 소스를 추가하라는 메시지가 나타나면 보고서에 추가를 클릭합니다.
이제 Looker Studio 홈페이지에서 대시보드에 액세스할 수 있습니다.
(고급) 여러 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, EXTRACT(DATE FROM _PARTITIONTIME) AS date from `PROJECT_ID.BILLING_ACCOUNT_EXPORT` s WHERE _PARTITIONTIME >"2021-01-01"
여기서 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, EXTRACT(DATE FROM _PARTITIONTIME) AS date from `PROJECT_ID_2.BILLING_ACCOUNT_2_EXPORT` s WHERE _PARTITIONTIME >"2021-01-01"
세부 비용 및 사용량 데이터를 쿼리하는 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, EXTRACT(DATE FROM _PARTITIONTIME) AS date from `PROJECT_ID.BILLING_ACCOUNT_DATASET` s WHERE _PARTITIONTIME >"2021-01-01"
삭제
대시보드를 더 이상 사용하지 않으려면 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를 열고, 대시보드를 찾고, 메뉴에서 삭제를 클릭합니다.