设置将 Cloud Billing 数据导出到 BigQuery 的功能

本文档介绍了设置将 Cloud Billing 数据导出到 BigQuery 的功能所需的所有设置步骤。

如需将 Cloud Billing 数据导出到 BigQuery,请执行以下步骤:

  • 创建一个项目来存储 Cloud Billing 数据,并对项目启用结算功能(如果您尚未这样做)。
  • 配置对项目和 Cloud Billing 账号的权限。
  • 启用 BigQuery Data Transfer Service API(导出价格数据时需要用到)。
  • 创建一个 BigQuery 数据集来存储数据。
  • 启用将要写入的 Cloud Billing 费用数据和价格数据导出到数据集的功能。

本文档将逐步介绍每个步骤的详细信息。

Google Cloud 控制台简介

Google Cloud 控制台(访问文档打开控制台)是一个网页界面,用于预配、配置、管理和监控使用 Google Cloud 产品的系统。您可以使用 Google Cloud 控制台设置和管理 Google Cloud 和 Cloud Billing 资源。

执行此任务所需的权限

如需启用和配置将 Google Cloud 结算使用费用数据导出到 BigQuery 数据集的功能,您需要以下权限:

  • 对于 Cloud Billing,您需要在目标 Cloud Billing 账号上具有 Billing Account Costs Manager 角色或 Billing Account Administrator 角色。
  • 对于 BigQuery,您需要相应 Google Cloud 项目的 BigQuery User 角色,该项目包含要用于存储 Cloud Billing 数据的 BigQuery 数据集。

如需启用和配置 Cloud Billing 价格数据导出功能,您需要以下权限:

  • 对于 Cloud Billing,您需要目标 Cloud Billing 账号的 Billing Account Administrator 角色。
  • 对于 BigQuery,您需要相应 Google Cloud 项目的 BigQuery Admin 角色,该项目包含要用于存储 Cloud Billing 价格数据的 BigQuery 数据集。
  • 对于包含目标数据集的 Google Cloud 项目,您需要拥有 resourcemanager.projects.update 权限。roles/editor 角色拥有此权限。

您可能还需要其他项目权限。如果您是 Google Cloud 组织的成员,则需要拥有组织或文件夹的 Project Creator 角色才能创建新项目。具体而言,如需创建新项目,您需要拥有以下权限:

  • resourcemanager.organizations.get
  • resourcemanager.projects.create

如需详细了解 Google Cloud 权限,请参阅:

启用将 Cloud Billing 数据导出到 BigQuery 的功能

完成本部分中的五个步骤,以启用将 Cloud Billing 数据导出到 BigQuery 的功能。

如需快速了解如何启用结算数据导出功能以及在 BigQuery 中运行 Cloud Billing 数据的示例查询,请按照此结算数据导出互动教程操作。

如果您是转销商,则可以使用 Partner Sales Console 设置渠道服务结算数据的特定于转销商的导出。为此,请按照本页面上的第 1-4 步创建您的项目和 BigQuery 数据集。然后,在第 5 步中,参阅将渠道服务数据导出到 BigQuery 以启用导出功能。

1. 选择或创建项目

导出到 BigQuery 的 Cloud Billing 数据包含在 BigQuery 数据集中。数据集包含在您指定的 Google Cloud 项目中。

我们建议您创建并使用一个单独的 Google Cloud 项目,以包含您的 Cloud Billing 账号的所有 FinOps 和结算管理需求,包括导出的 Cloud Billing 数据。详细了解使用以 FinOps 为重点的项目来实现结算管理用例的好处。

In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

Go to project selector

详细了解如何创建和管理项目

2. 验证是否已启用结算功能

必须确保您选择用来包含数据集的 Google Cloud 项目已启用结算功能,并且该 Google Cloud 项目关联到您计划导出到 BigQuery 数据集的数据所在的 Cloud Billing 账号

3. 启用 BigQuery Data Transfer Service API

如果您计划将 Cloud Billing 价格数据导出到 BigQuery,则需要启用 BigQuery Data Transfer Service API。如果您不打算导出 Cloud Billing 价格数据,则可以跳到 第 4 步。创建 BigQuery 数据集

BigQuery Data Transfer Service API 应该在您打算用于包含 BigQuery 数据集的 Google Cloud 项目中启用。如果您遵循了项目部分中的建议,那么这是您的FinOps 或结算管理 Google Cloud 项目。

要启用 BigQuery Data Transfer Service API,请按如下所述操作:

  1. 登录 Google Cloud 控制台,然后前往 API 页面。

    前往 BigQuery Data Transfer Service API 页面

  2. 在页面的左上角,选择一个项目。您必须在您用来包含 BigQuery 数据集的项目中启用 BigQuery Data Transfer Service API。如果您遵循了项目部分中的建议,那么这是您的FinOps 或结算管理 Google Cloud 项目。

  3. BigQuery Data Transfer Service API 页面上,点击启用以在所选项目中启用 API。

如需详细了解如何启用 API,请参阅 Service Usage 文档

4. 创建 BigQuery 数据集

在启用将 Cloud Billing 数据导出至 BigQuery 之前,您必须至少创建一个 BigQuery 数据集以管理导出的数据。您可以使用同一数据集来包含标准使用费数据、详细使用费数据和价格数据。

数据集包含在您指定的 Google Cloud 项目中。数据集是用来组织和控制视图访问权限的顶级容器。表或视图必须属于数据集,因此需要创建至少一个数据集,才能将数据加载到 BigQuery 中。

如果您使用现有数据集,请查看可能会影响将结算数据导出到 BigQuery 的限制,例如无法将数据导出到配置为使用客户管理的密钥加密的数据集,或无法使用配置了不受支持的单区域位置的数据集。

如需创建 BigQuery 数据集,请执行以下操作:

  1. 登录 Google Cloud 控制台,然后前往 BigQuery 页面。

    转到 BigQuery 页面

  2. 在 Google Cloud 控制台页面顶部的项目下拉列表(我的项目 )中,选择您设置用来包含数据集的项目。请记下项目 ID,以便在后续步骤中使用。

  3. 在“探索器”面板的“置顶项目”部分,点击 您的项目 ID 以展开项目来查看任何现有数据集和保存的查询。

  4. 在项目 ID 旁边,点击查看操作菜单 (),然后点击创建数据集。随即会打开“创建数据集”面板。

    1. 输入数据集 ID。 我们建议使用跨项目的 ID(例如 all_billing_data),而不是项目特定的 ID。
    2. 选择数据位置。 数据位置指定了存储数据的多区域或单区域。此数据集内的所有表均共用此位置。

      我们建议选择多区域位置(欧盟或美国)**。对于标准使用费用详细使用费用数据导出,您选择的位置可能会影响上个月的数据是否以追溯方式添加到数据集中。如需详细了解数据集位置和数据可用性,请查看限制

      Cloud Billing 导出支持所有 多区域位置(欧盟或美国)。但是,只有部分数据集单区域位置支持将 Cloud Billing 数据导出到 BigQuery。如需详细了解数据集位置,请查看限制

      创建数据集后,该位置无法更改详细了解位置。

    3. 确保启用表过期时间选项已清除

      如果您启用表过期时间并输入天数,则在此数据集内创建的任何新表都将在创建指定天数后自动删除。

    4. 高级选项部分中,确保所选的加密设置是 Google 管理的加密密钥

      请勿使用客户管理的加密密钥 (CMEK) 选项。不支持使用 CMEK 加密将 Cloud Billing 数据记录导出到 BigQuery。

    5. 点击创建数据集进行保存。

请查看可能会影响将结算数据导出到 BigQuery 的限制

如果您是转销商*,则可以重复使用刚刚启用特定于转销商的渠道服务结算数据导出时创建的同一项目和数据集。

5. 启用将 Cloud Billing 数据导出到 BigQuery 数据集的功能

您可以在 Google Cloud 控制台的 Cloud Billing 部分启用 Cloud Billing 数据导出功能。您可以导出以下类型的数据:

  • 标准使用费数据 - 包含标准 Cloud Billing 账号使用费信息,例如账号 ID、账单日期、服务、SKU、项目、标签、位置、费用、用量、赠金、调整项和货币。

    请使用标准用量导出来分析费用数据中的各种趋势。

  • 详细使用费数据 - 包含详细的 Cloud Billing 账号使用费信息。包括标准使用费数据中的所有内容,外加资源级费用数据,例如产生服务用量的虚拟机或 SSD。

    使用“详细导出”可在资源级层分析费用,并识别可能会提升费用的特定资源。

    详细导出会自动包含有关 Compute Engine 的资源级信息。如需在详细的数据导出中查看 Google Kubernetes Engine (GKE) 集群费用的明细,您还必须为 GKE 启用费用分配

  • 价格数据 - 包含 Cloud Billing 账号价格信息,例如账号 ID、服务、SKU、产品、地理位置元数据、价格单位、货币、汇总和层级。

要启用将 Cloud Billing 使用费价格数据导出到 BigQuery 的功能,请执行以下操作:

  1. 在 Google Cloud 控制台中,进入账单导出页面。

    进入“账单导出”页面

  2. 在系统提示时,选择要为其导出结算数据的 Cloud Billing 账号。此时会打开所选结算账号的“结算导出”页面。

  3. BigQuery 导出标签页上,对于要导出的每种数据,点击修改设置。每种类型的数据都是单独配置的。

  4. 项目列表中,选择您设置用来包含 BigQuery 数据集项目

    您选定的项目将用于在 BigQuery 数据集内存储导出的 Cloud Billing 数据。

    对于标准和详细使用费数据导出,Cloud Billing 数据包括通过同一 Cloud Billing 账号支付费用的所有 Google Cloud 项目的使用情况和费用数据。

    对于价格数据导出,Cloud Billing 数据仅包括特定于与所选数据集项目关联的 Cloud Billing 账号的价格数据。

  5. 数据集 ID 字段中,选择您设置用来包含导出的 Cloud Billing 数据的数据集

    对于导出到 BigQuery 的所有类型的 Cloud Billing 数据,以下内容均适用:

    • 必须要有 BigQuery API 才能将数据导出到 BigQuery。如果您选择的项目未启用 BigQuery API,系统会提示您启用该 API。点击启用 BigQuery API 以启用该 API。
    • 如果您选择的项目不包含任何 BigQuery 数据集,则系统会提示您创建一个数据集。如有必要,请按照以下步骤创建新的数据集
    • 如果您使用现有的数据集,请查看可能会影响将结算数据导出到 BigQuery 的限制,例如无法将数据导出到配置为使用 CMEK 的数据集,或者无法使用配置为使用不受支持的区域位置的数据集。

    对于价格数据导出,需要使用 BigQuery Data Transfer Service API 将数据导出到 BigQuery。如果您选择的项目未启用 BigQuery Data Transfer Service API,系统会提示您启用该 API。如有必要,请按照以下步骤启用 API

  6. 点击保存

更新要导出的 Cloud Billing 数据

启用要导出到 BigQuery 的 Cloud Billing 数据后,您可以通过停用或启用不同的类型来更改要导出的数据。

在停用任何数据导出之前,请先查看限制数据可用性准则,了解它们可能会如何影响导出到 BigQuery 的结算数据。

如需停用导出到 BigQuery 的 Cloud Billing 类型,请执行以下操作:

  1. 相应地选择停用标准导出功能停用详细导出功能停用价格导出功能
  2. 选择确认保存您的选择。

如需启用当前被停用的导出到 BigQuery 的 Cloud Billing 类型,请参阅启用要导出到 BigQuery 的 Cloud Billing 数据

关于数据集权限

将 Cloud Billing 数据导出到 BigQuery 的功能使用服务账号来管理数据集权限。

启用将 Cloud Billing 数据导出到 BigQuery 的功能之后,Google 会自动将服务账号添加为您指定的数据集的所有者。服务账号如下所示:

  • 对于“标准”和“详细”使用费用数据集:billing-export-bigquery@system.gserviceaccount.com
  • 对于“价格”数据集:cloud-account-pricing@cloud-account-pricing.iam.gserviceaccount.com

该服务账号由 Google 拥有和管理,并提供离线过程所需的权限,以创建表以及在表中写入 Cloud Billing 记录。

请查看可能会影响将结算数据导出到 BigQuery 的限制

结算数据表

启用将 Cloud Billing 数据导出到 BigQuery 的功能后,系统会立即在 BigQuery 数据集中自动创建结算数据表。如需详细了解这些 BigQuery 表和表架构,请参阅了解 BigQuery 中自动创建的数据表

数据加载频率

  • 在首次启用将标准详细使用费导出到 BigQuery 的功能后,可能需要几个小时才能开始看到 Google Cloud 费用数据传播到 BigQuery 数据集。数据按时间顺序导出。如果导出配置为以追溯方式包含当月和上月的数据,则导出的数据最多可能需要 5 天才能完全与当前的使用情况数据同步。
  • 首次启用将价格导出到 BigQuery 的功能后,最多可能需要 48 小时才能看到您的 Google Cloud 价格数据。

详细了解数据加载到 BigQuery 表的频率

限制

将 Cloud Billing 数据导出到 BigQuery 时存在以下限制。

  • 支持与 Cloud Billing 数据搭配使用的 BigQuery 数据集位置

    BigQuery 数据集配置为使用位置(多区域位置[欧盟或美国]或单区域位置)。数据集位置是在创建时设置的。创建数据集后,就无法再更改其位置。

    Cloud Billing 数据导出支持所有多区域位置(欧盟或美国),但仅支持部分单区域位置。配置 Cloud Billing 导出设置时,如果您创建或选择配置为使用不受支持的单区域位置的数据集,则在尝试保存导出设置时,您会看到数据集区域无效错误。

    下表列出了支持与包含 Cloud Billing 数据的 BigQuery 数据集搭配使用的多区域位置单区域位置

    美洲 亚太地区 欧洲

    多区域:美国

    区域

    • northamerica-northeast1(蒙特利尔)
    • southamerica-east1(圣保罗)
    • us-central1(爱荷华)
    • us-east1(南卡罗来纳)
    • us-east4(北弗吉尼亚)
    • us-west1(俄勒冈)
    • us-west2(洛杉矶)
    • us-west3(盐湖城)
    • us-west4(拉斯维加斯)

    区域

    • asia-east1(台湾)
    • asia-east2(香港)
    • asia-northeast1(东京)
    • asia-northeast2(大阪)
    • asia-northeast3(首尔)
    • asia-south1(孟买)
    • asia-southeast1(新加坡)
    • asia-southeast2(雅加达)
    • australia-southeast1(悉尼)

    多区域:欧盟

    区域

    • europe-central2(华沙)
    • europe-north1(芬兰)
    • europe-west1(比利时)
    • europe-west2(伦敦)
    • europe-west3(法兰克福)
    • europe-west4(荷兰)
    • europe-west6(苏黎世)

  • 对于包含标准使用费用数据或详细使用费用数据BigQuery 数据集,您为数据集配置的位置类型会影响 Google Cloud 结算数据导出到数据集的时间:

    • 如果您将数据集配置为使用多区域位置,则数据集会包含您首次启用导出时的上月初开始产生的 Google Cloud 结算数据,除非您重新启用导出。也就是说,系统会以追溯方式添加当月和上月的 Google Cloud 结算数据。对于导出数据的初始回填,追溯性 Cloud Billing 数据最多可能需要 5 天完成导出,然后您才能开始看到当前的使用情况数据。
    • 如果数据集配置为使用受支持的单区域位置,则标准使用费用数据和详细使用费用数据仅反映自启用 Cloud Billing 导出之日起产生的 Google Cloud 结算数据。也就是说,系统不会针对非多区域数据集位置以追溯方式添加 Google Cloud 结算数据,因此您不会看到启用导出之前的 Cloud Billing 数据。

    • 如需了解详情,请参阅数据可用性

  • 包含价格数据BigQuery 数据集仅收集自设置 Cloud Billing 导出之日起产生的 Google Cloud 结算数据。也就是说,系统不会以追溯方式添加 Google Cloud 价格数据,因此您不会看到启用导出之前的 Cloud Billing 价格数据。如需了解详情,请参阅数据可用性

  • 导出详细使用费用数据时,详细导出会自动包含有关 Compute Engine 的资源级信息。如需在详细的数据导出中查看 Google Kubernetes Engine (GKE) 集群费用的明细,您还必须为 GKE 启用费用分配

  • 数据集加密:将结算数据导出到 BigQuery 时,系统不支持客户管理的加密密钥 (CMEK)。如果您为结算数据数据集启用了 CMEK 加密,则此类加密会阻止 Cloud Billing 将结算数据写入该数据集中的相应表。相反,您需要启用数据集以使用 Google 拥有和 Google 管理的密钥。

  • 如果您要对包含导出数据的表使用 BigQuery 行级安全性,则必须使用 BigQuery TRUE 过滤条件向 Cloud Billing 导出服务账号 billing-export-bigquery@system.gserviceaccount.com 授予表的完整访问权限。以下命令会向 Cloud Billing 服务账号授予访问权限:

    CREATE ROW ACCESS POLICY cloud_billing_export_policy
    ON `__project_id__.__dataset_id__.__table_id__`
    GRANT TO ('serviceAccount:billing-export-bigquery@system.gserviceaccount.com')
    FILTER USING (TRUE);
    
  • 资源级标记最多可能需要一个小时才能传播到 BigQuery 导出结果中。如果标记是在一个小时内添加或移除的,或者资源存在的时间不超过一个小时,则该标记可能不会显示在导出结果中。

    资源级标记适用于以下资源:

    • Compute Engine 实例
    • Spanner 实例
    • Cloud Run 服务
    • Artifact Registry 制品库
  • 如果您使用 VPC Service Controls,则您的 BigQuery 导出可能会被阻止。如需解决此问题,您需要手动豁免 VPC。

Google Cloud 控制台中提供的费用和价格报告