Cloud Billing 데이터를 BigQuery로 내보내기

비용을 효율적으로 관리 및 보고하는 것은 수십억 달러 규모의 기업 경영이나 소규모 가계 예산에서 모두 마찬가지로 재무 관리의 핵심 부분입니다. Google Cloud 비용 및 사용량에 대한 데이터에 기반한 의사결정은 이러한 의사결정에 필요한 데이터를 수집하는 것부터 시작합니다.

Cloud Billing을 BigQuery로 내보내기를 사용하면 그날의 상세한 Google Cloud 결제 데이터(예: 사용량 및 예상 비용 데이터)를 지정한 BigQuery 데이터세트로 자동으로 내보낼 수 있습니다. 그런 다음 BigQuery에서 Cloud Billing 데이터에 액세스하여 세부 분석을 수행하거나 Google 데이터 스튜디오와 같은 도구를 사용하여 데이터를 시각화할 수 있습니다. 이 내보내기 방법을 사용하여 데이터를 JSON 파일로 내보낼 수도 있습니다.

Cloud Billing을 BigQuery로 내보내기를 사용 설정하는 방법

필수 권한

Google Cloud Billing 데이터를 BigQuery 데이터세트로 내보내기를 사용 설정하고 구성하려면 다음 권한이 있어야 합니다.

Google Cloud 권한에 대한 자세한 내용은 다음을 참조하세요.

1. BigQuery 데이터세트 만들기

Cloud Billing을 BigQuery로 내보내기를 사용 설정하기 전에 먼저 BigQuery 데이터세트를 만드는 것이 좋습니다.

데이터세트는 특정 Cloud 프로젝트에 포함됩니다. 데이터세트는 테이블에 대한 액세스를 구성하고 제어하는 데 사용하는 최상위 컨테이너입니다. 테이블이나 뷰는 반드시 데이터세트에 속해야 하므로, 사용자는 데이터를 BigQuery로 로드하기 전에 데이터세트를 최소한 하나는 만들어야 합니다.

BigQuery 데이터세트를 만들려면 다음을 수행합니다.

  1. Google Cloud Console에 로그인하고 BigQuery 페이지로 이동합니다.

    BigQuery 페이지로 이동

  2. Google Cloud Console 페이지 상단에 있는 프로젝트 드롭다운(내 프로젝트)에서 데이터세트를 포함할 프로젝트를 선택하거나 만듭니다.

    권장사항: 내보낸 Cloud Billing 데이터를 포함하여 모든 결제 관리 니즈를 포함하도록 별도의 단일 Google Cloud 프로젝트를 구성하는 것이 좋습니다. 결제 관리 Cloud 프로젝트는 Cloud Billing API 액세스, 프로그래매틱 방식의 예산 알림을 위한 Pub/Sub 채널 등의 용도로도 사용될 수 있습니다.

  3. BigQuery 탐색 패널에서 your-project-name을 클릭합니다.

  4. 데이터세트 만들기를 클릭합니다. 데이터세트 만들기 패널이 열립니다.

    1. 데이터세트 ID를 입력합니다.
    2. 데이터 위치를 선택합니다.

    3. 기본 테이블 만료 시간을 선택합니다.

    4. 암호화 옵션을 선택합니다. Cloud Billing 내보내기에서 Google 관리 키를 선택합니다.

    5. 저장하려면 데이터세트 만들기를 클릭합니다.

2. Cloud Billing을 BigQuery 데이터세트로 내보내기 사용 설정

Cloud Billing을 BigQuery로 내보내기를 사용 설정하려면 다음을 수행합니다.

  1. Google Cloud Console에 로그인합니다.

    Cloud Console에 로그인

  2. Console 탐색 메뉴 를 열고 결제를 선택합니다.

    Cloud Billing 계정이 두 개 이상 있으면 다음 중 하나를 수행합니다.

    • 현재 Cloud 프로젝트의 Cloud Billing을 관리하려면 연결된 결제 계정으로 이동을 선택합니다.
    • 다른 Cloud Billing 계정을 찾으려면 결제 계정 관리를 선택하고 Cloud Billing 데이터를 BigQuery로 내보내기를 사용 설정할 계정을 선택합니다.
  3. 결제 탐색 메뉴에서 결제 내보내기를 선택합니다.

  4. BigQuery 내보내기 탭을 선택합니다.

  5. 설정 수정을 클릭하여 내보내기를 사용 설정하고 내보내기 설정을 업데이트합니다.

  6. 프로젝트 목록에서 BigQuery 데이터세트가 저장된 프로젝트를 선택합니다.

  7. 결제 내보내기 데이터세트 목록에서 데이터를 내보낼 데이터세트를 지정합니다.

    : BigQuery 데이터세트를 아직 만들지 않았으면 만들라는 메시지가 표시됩니다. 필요한 경우 다음 단계를 따라 새 데이터세트를 만듭니다.

  8. 저장을 클릭합니다.

데이터 로드 빈도

  • BigQuery로 내보내기를 처음 사용 설정하면 Google Cloud Billing 데이터가 표시되는 데 몇 시간이 걸릴 수 있습니다.
  • Google Cloud 서비스는 다양한 간격으로 데이터를 Cloud Billing 프로세스에 보고합니다.
  • Cloud Billing 데이터는 정기적으로 BigQuery 데이터세트로 내보냅니다. BigQuery로 내보낼 때 전송 또는 지연 시간을 보장하지 않습니다.
  • Google Cloud 서비스에 따라 사용량 보고 빈도가 다르므로 최근에 사용한 모든 Google Cloud 서비스의 Cloud Billing 데이터가 바로 표시되지 않을 수 있습니다.
  • BigQuery 데이터세트에는 내보내기를 처음 사용 설정한 날짜부터 발생한 Cloud Billing 데이터만 반영됩니다. Cloud Billing 데이터는 소급해서 추가되지 않으므로 내보내기를 사용 설정하기 전에 발생한 사용량의 Cloud Billing 데이터는 표시되지 않습니다.
  • 내보낸 데이터(예: BigQuery 내보내기 레코드)를 삭제하면 삭제된 레코드를 백필할 수 없습니다.
  • BigQuery 로드는 ACID와 호환됩니다. 따라서 데이터가 로드되는 중에 BigQuery Cloud Billing 내보내기 데이터세트를 쿼리하더라도 데이터는 부분적으로 로드되지 않습니다. BigQuery 특성에 대해 자세히 알아보세요.

사용량 표

Cloud Billing을 BigQuery로 내보내기를 사용 설정하면 바로 사용량 테이블이 자동으로 생성됩니다.

Cloud Billing을 BigQuery로 내보내기의 이전 구성 또는 버전의 결제 데이터를 통합하려면 개별 테이블에 데이터를 보관하고 UNION 쿼리를 대신 사용하는 것이 좋습니다.

데이터세트 권한

Cloud Billing을 BigQuery로 내보내기는 서비스 계정을 사용하여 데이터세트 권한을 관리합니다.

Cloud Billing을 BigQuery로 내보내기를 사용 설정하면 Google에서 소유하고 관리하는 서비스 계정이 지정한 데이터세트의 소유자로 추가됩니다. 서비스 계정은 다음과 같습니다.

  • billing-export-bigquery@system.gserviceaccount.com

서비스 계정은 오프라인 프로세스에서 테이블을 만들고 Cloud Billing 레코드를 기록하는 데 필요한 권한을 제공합니다.

사용 비용

BigQuery를 사용하여 사용 데이터를 저장하면 최소 수수료가 발생합니다. BigQuery의 공유 리소스 풀을 활용하여 데이터를 일괄 로드하므로 지정된 데이터세트에 무료로 데이터를 로드할 수 있습니다. BigQuery를 사용하여 Cloud Billing 데이터를 내보내고 분석할 때 발생하는 비용은 스트리밍, 저장, 쿼리하는 데이터 양에 따라 달라집니다. 발생 가능한 비용에 대한 자세한 내용은 예상되는 스토리지 및 쿼리 비용을 참조하세요. 자세한 내용은 BigQuery 가격 책정을 참조하세요.

BigQuery의 Google Cloud 사용량 비용 데이터

다음 표에서는 BigQuery로 내보낸 Google Cloud 사용량 비용 데이터의 콘텐츠를 설명합니다.

필드 유형 설명
billing_account_id 문자열

사용량과 연결된 Cloud Billing 계정 ID입니다.

리셀러: Cloud Billing 하위 계정을 통해 사용량 비용이 생성된 경우 상위 리셀러 Cloud Billing 계정 ID가 아닌 하위 계정 ID입니다.

invoice.month 문자열

비용 항목이 포함된 인보이스의 연도 및 월(YYYYMM)입니다. 예를 들어 '201901'은 2019년 1월입니다.

이 필드를 사용하여 인보이스에 대한 총 청구 금액을 확인할 수 있습니다. BigQuery 쿼리로 Cloud Billing 내보내기 예시를 참조하세요.

cost_type 문자열

정기 비용, 세금, 조정 또는 반올림 오류 등 이 항목이 나타내는 비용 유형입니다.

service.id 문자열 사용량에 연결된 서비스의 ID입니다.
service.description 문자열 Cloud Billing 데이터를 보고한 Google Cloud 서비스입니다.
sku.id 문자열 서비스에서 사용한 리소스의 ID입니다. SKU의 전체 목록은 Google Cloud SKU를 참조하세요.
sku.description 문자열 서비스에서 사용한 리소스 유형에 대한 설명입니다. 예를 들어 Cloud Storage의 리소스 유형은 Standard Storage US입니다.
usage_start_time 타임스탬프 주어진 비용이 계산된 시간별 사용 기간의 시작 시간입니다. 모든 서비스의 사용량/비용은 시간 단위로 상세하게 표시됩니다. 즉, 장기간 실행되는 서비스 사용량은 여러 시간별 기간으로 분산됩니다.

자세한 내용은 타임스탬프 데이터 유형에 대한 BigQuery 문서를 참조하세요. 또한 아래의 내보낸 데이터와 인보이스의 차이점을 참조하세요.

usage_end_time 타임스탬프 주어진 비용이 계산된 시간별 사용 기간의 종료 시간입니다. 모든 서비스의 사용량/비용은 시간 단위로 상세하게 표시됩니다. 즉, 장기간 실행되는 서비스 사용량은 여러 시간별 기간으로 분산됩니다.

자세한 내용은 타임스탬프 데이터 유형에 대한 BigQuery 문서를 참조하세요. 또한 아래의 내보낸 데이터와 인보이스의 차이점을 참조하세요.

project.id 문자열 Cloud Billing 데이터를 생성한 Google Cloud 프로젝트의 ID입니다.
project.name 문자열 Cloud Billing 데이터를 생성한 Google Cloud 프로젝트의 이름입니다.
project.ancestry_numbers 문자열 명시된 project.id로 식별된 프로젝트에 대한 리소스 계층 구조의 상위 항목입니다(예: my-project-123).

예: /ParentOrgNumber/ParentFolderNumber/. 리소스 계층 구조에 대해 자세히 알아보세요.

project.labels.key 문자열 라벨이 있는 경우 사용량이 발생한 Google Cloud 프로젝트의 라벨을 구성하는 키:값 쌍의 부분입니다. 라벨 사용에 대한 자세한 내용은 라벨 사용을 참조하세요.
project.labels.value 문자열 라벨이 있는 경우 사용량이 발생한 Google Cloud 프로젝트의 라벨을 구성하는 키:값 쌍의 부분입니다. 라벨 사용에 대한 자세한 내용은 라벨 사용을 참조하세요.
labels.key 문자열 라벨이 있는 경우 사용량이 발생한 Google Cloud 리소스의 라벨을 구성하는 키:값 쌍의 부분입니다. 라벨 사용에 대한 자세한 내용은 라벨 사용을 참조하세요.
labels.value 문자열 라벨이 있는 경우 사용량이 발생한 Google Cloud 리소스의 라벨을 구성하는 키:값 쌍의 부분입니다. 라벨 사용에 대한 자세한 내용은 라벨 사용을 참조하세요.
system_labels.key 문자열 라벨이 있는 경우, 사용량이 발생한 리소스의 시스템 생성 라벨을 구성하는 키:값 쌍에서 부분입니다. 사용 가능한 시스템 라벨도 참조하세요.
system_labels.value 문자열 라벨이 있는 경우, 사용량이 발생한 리소스의 시스템 생성 라벨을 구성하는 키:값 쌍에서 부분입니다. 사용 가능한 시스템 라벨도 참조하세요.
location.location 문자열 국가, 리전 또는 영역 수준의 사용량이 발생한 위치이거나 특정 위치가 없는 리소스의 경우 global입니다. 자세한 내용은 리전 및 영역을 참조하세요.
location.country 문자열 location.location이 국가, 리전 또는 영역인 경우 이 필드는 사용량이 발생한 국가입니다(예: US). 자세한 내용은 리전 및 영역을 참조하세요.
location.region 문자열 location.location이 국가 또는 리전인 경우 이 필드는 사용량이 발생한 리전입니다(예: us-central1). 자세한 내용은 리전 및 영역을 참조하세요.
location.zone 문자열 location.location이 영역인 경우 이 필드는 사용량이 발생한 영역입니다(예: us-central1-a). 자세한 내용은 리전 및 영역을 참조하세요.
cost 부동 소수점 크레딧 적용 전 사용 비용입니다. 크레딧을 포함한 총 비용을 계산하려면 credits.amount를 비용에 추가해야 합니다. 자세한 내용은 이 예시 쿼리를 참조하세요.
currency 문자열 청구된 비용의 통화입니다. 자세한 내용은 현지 통화로 청구 및 결제를 참조하세요.
currency_conversion_rate 부동 소수점 미국 달러와 현지 통화의 환율입니다. 즉, cost/currency_conversion_rate는 미국 달러로 계산한 비용입니다.
usage.amount 부동 소수점 사용한 usage.unit의 양입니다.
usage.unit 문자열 리소스 사용량을 측정하는 기본 단위입니다. 예를 들어 표준 스토리지의 기본 단위는 byte-seconds입니다.
usage.amount_in_pricing_units 부동 소수점 사용한 usage.pricing_unit의 양입니다.
usage.pricing_unit 문자열 Cloud Billing Catalog API에 따른 리소스 사용량 측정 단위입니다.
credits.name 문자열 Cloud Billing 계정에 적용된 크레딧에 대한 설명입니다.
credits.amount 부동 소수점 사용량에 적용된 크레딧 금액입니다. 크레딧은 항상 마이너스 금액입니다.
export_time 타임스탬프 Cloud Billing 데이터 추가와 연결된 처리 시간입니다. 새로 내보낼 때마다 항상 증가합니다.
또한 아래의 내보낸 데이터와 인보이스의 차이점을 참조하세요.

라벨 정보

BigQuery 데이터세트에는 라벨 열이 있지만 현재 버전에서는 일부 라벨 값이 비어 있습니다. 라벨 내보내기 데이터가 입력되는 시점은 해당 서비스가 라벨을 제공하는 시점에 따라 다릅니다.

사용 가능한 시스템 라벨

시스템 라벨은 사용량을 생성한 리소스에 대한 중요 메타데이터의 키-값 쌍입니다. 다음 시스템 라벨은 적용 가능한 사용량에 자동으로 포함됩니다.

system_labels.key 예시 system_labels.value 설명
compute.googleapis.com/machine_spec n1-standard-1, custom-2-2048 가상 머신의 구성입니다. 자세한 내용은 머신 유형을 참조하세요.
compute.googleapis.com/cores n1-standard-4의 경우는 4, custom-2-2048의 경우는 2 가상 머신에 사용할 수 있는 vCPU 수입니다.
compute.googleapis.com/memory n1-standard-4의 경우는 15360(즉, 15GB * 1024MB/GB), custom-2-2048의 경우는 2048 가상 머신에 사용할 수 있는 메모리 양(MB)입니다.

내보낸 데이터와 인보이스의 차이점

Google Cloud 서비스는 다양한 간격으로 사용량 및 비용 데이터를 Cloud Billing 프로세스에 보고하므로 사용량 보고가 약간 지연될 수도 있습니다. 캘린더 월이 끝나는 막바지 시점에 보고된 사용량은 해당 월의 인보이스에 포함되지 않고 다음 달 인보이스로 이월될 수 있습니다. 단, 이 사용량에는 Cloud Billing 프로세스에 사용량이 보고된 실제 사용 날짜와 시간의 타임스탬프가 포함됩니다.

타임스탬프 필드를 사용하여 비용을 쿼리할 경우 원래 같은 사용 월에 생성된 인보이스에 포함되지 않았던 최근 보고된 사용량이 반환된 데이터에 나타날 수 있습니다. 따라서 반환된 Cloud Billing 데이터가 인보이스에 직접 매핑되지 않을 수 있습니다.

타임스탬프 필드는 다음과 같습니다.

  • usage_start_time
  • usage_end_time
  • export_time

인보이스에 직접 매핑되는 Cloud Billing 데이터를 반환하려면 타임스탬프 필드 대신 invoice.month를 쿼리합니다.

오류 및 조정

드물지만 Cloud Billing 데이터에 오류가 있거나 조정이 필요한 경우 Cloud Billing 데이터에 오류를 상쇄하는 데이터가 추가됩니다. 다음 열을 제외한 모든 열은 그대로 유지됩니다.

  • cost
  • credit
  • usage.amount
  • export_time

새 데이터를 확인해야 하는 경우 export_time을 쿼리하여 확인할 수 있습니다.