使用 Looker 数据洞察直观呈现您的费用


您可以结合使用将 Cloud Billing 数据导出到 BigQuery 的功能与 Looker 数据洞察,随时了解 Google Cloud 费用。

本文档介绍了如何使用 Cloud Billing 数据设置结算使用量和费用数据分析信息中心。您可以使用信息中心回答有关 Google Cloud 支出的问题,例如“我的 Compute Engine 资源支出是多少?”和“哪些环境的费用最高?”

Looker Studio 中的可视化示例

您可以按照本教程中的说明设置信息中心,也可以观看以下视频:

目标

本教程介绍如何完成以下任务:

  • 使用 Cloud Shell 设置您自己的结算使用情况和费用数据分析信息中心的副本。

    您可以使用 Terraform 或 Python 按照本教程中的步骤操作。

  • 配置信息中心的过滤条件,以使用您在 Google Cloud 环境中使用的标签。

  • 了解如何针对高级案例修改信息中心的数据源,例如,如果您有多个 Cloud Billing 账号,或者 Cloud Billing 账号使用非美元 (USD) 货币。

费用

在本文档中,您将使用 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.

您可使用价格计算器根据您的预计使用情况来估算费用。 Google Cloud 新用户可能有资格申请免费试用

准备工作

  1. 确保您可以访问结算使用量和费用数据分析信息中心示例。如果您无法访问该示例,则可能是贵组织启用了网域限制。您的管理员可以暂时为您的账号关闭网域限制。

    了解网域限制

  2. 验证您的组织是否已为标准使用费数据启用将 Cloud Billing 数据导出到 BigQuery 的功能。

    如果 Cloud Billing 数据导出功能未启用,请了解如何启用将 Cloud Billing 数据导出到 BigQuery 的功能

  3. 您必须有权在托管 Cloud Billing 数据导出数据集的项目中创建 BigQuery 视图

    (可选)如果您要为 BigQuery 视图创建新数据集,则必须有权创建 BigQuery 数据集

  4. 获取有关 Google Cloud 环境的以下信息:

    • 托管您的 Cloud Billing BigQuery 数据集的项目 ID。
    • 标准和详细费用数据导出的数据集名称。通常,费用数据导出位于同一个数据集中。
  5. 如果您要与组织中的其他人共享信息中心,我们建议您执行以下其他步骤。这些步骤可帮助您设置 Google Cloud 服务账号,该账号可以对 BigQuery 数据进行身份验证,而无需其他人使用您的凭据或他们自己的凭据来访问数据。

    1. Looker Studio 服务代理帮助页面获取 Looker Studio 服务代理的电子邮件地址。

    2. 如果您使用 Python 脚本创建信息中心,请为 Looker Studio 服务代理创建服务账号

      如果您使用的是 Terraform,则无需手动创建服务账号。Terraform 配置会在您应用配置时创建服务账号。

  6. 如果您使用的是 Python 脚本,请确保您的 Cloud Shell 环境具有最新版本的 Python 3。如需检查 Python 版本,请在 Cloud Shell 终端中输入 python --version,然后按 Enter 键。

创建信息中心的副本

Terraform

如需使用 Terraform 创建您自己的信息中心副本,请先克隆自动执行该过程的 GitHub 代码库。此步骤使用 Cloud Shell,它是 Google Cloud 的一个交互式 shell 环境,您可以通过浏览器使用。Cloud Shell 预安装了 Terraform。

概括来讲,该代码库中的 Terraform 配置会执行以下任务:

  • 创建一个新的 BigQuery 视图,以从标准费用数据导出中提取数据。
  • 复制信息中心模板并将副本关联到数据的 BigQuery 视图。
  • 为您提供副本的 Looker Studio 链接,您可以将该链接保存到 Looker Studio 信息中心。
  • 为您提供 Google Cloud 服务账号 ID,您可以将其用作信息中心的身份验证方法。

请按照以下步骤创建信息中心:

  1. 在 Cloud Shell 中打开 GitHub 代码库:

    在 Cloud Shell 中打开

  2. 创建一个 Terraform 变量定义文件,其中包含有关项目和 BigQuery 数据集的信息。使用以下命令创建名为 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 服务代理帮助页面获得
  3. 如需将 GitHub 代码库初始化为 Terraform 工作目录,请运行以下命令:

    terraform init
    
  4. (可选)如需预览 Terraform 配置所做的更改,请运行以下 terraform plan 命令:

    terraform plan -var-file=variables.tfvars
    

    系统可能会提示您授权 Cloud Shell 代表您进行 API 调用。

  5. 查看 Terraform 更改,如果您需要更改任何变量值,请修改 variables.tfvars。准备好创建资源后,请运行以下 terraform apply 命令:

    terraform apply -var-file=variables.tfvars
    

    该命令运行后,您会获得为进行身份验证而创建的服务账号,以及 Looker Studio 信息中心的链接。

  6. 复制服务账号名称。您在为 Looker Studio 数据源配置身份验证时需要此信息。

  7. 点击 Looker 数据洞察链接以打开信息中心。

  8. 在 Looker 数据洞察中,点击修改和共享以保存信息中心。当系统提示您查看数据访问权限设置时,请点击确认并保存

  9. 如果系统提示您向报告添加数据,请点击添加到报告

现在,您可以从 Looker Studio 首页访问信息中心了。

Python

如需使用 Python 创建您自己的信息中心副本,请先克隆自动执行该过程的 GitHub 代码库。此步骤使用 Cloud Shell,它是 Google Cloud 的一个交互式 shell 环境,您可以通过浏览器使用。

概括来讲,该代码库中的设置脚本会执行以下任务:

  • 在包含标准费用数据导出的数据集中创建一个新的 BigQuery 视图。
  • 复制信息中心模板并将副本关联到数据的 BigQuery 视图。
  • 为您提供副本的 Looker Studio 链接,您可以将该链接保存到 Looker Studio 信息中心。

请按照以下步骤创建信息中心:

  1. 在 Cloud Shell 中打开 GitHub 代码库:

    在 Cloud Shell 中打开

  2. 导航到 billboard 目录:

    cd examples/billboard
    
  3. 运行以下命令以设置脚本的 Python 环境:

    rm -rf bill-env
    python3 -m venv bill-env
    source bill-env/bin/activate
    pip install -r requirements.txt
    
  4. 运行用于创建信息中心的脚本。您可能需要授权 Cloud Shell 以代表您进行 API 调用:

    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 数据洞察的链接。

  5. 点击 Looker 数据洞察链接以打开信息中心。

  6. 在 Looker 数据洞察中,点击修改和共享以保存信息中心。当系统提示您向报告添加数据源时,点击添加到报告

现在,您可以从 Looker Studio 首页访问信息中心了。

(可选)配置数据源凭据

默认情况下,结算使用量信息中心会使用您的凭据访问 BigQuery 数据源。如果您想与他人共享信息中心,我们建议您使用 Google Cloud 服务账号对 BigQuery 数据集进行身份验证,以便数据源不依赖于您的凭据。

如果您使用 Terraform 复制信息中心,则会在运行 terraform apply 命令时获取服务账号 ID。如果您使用的是 Python 脚本,则必须按照以下步骤手动创建服务账号:

  1. Looker Studio 服务代理帮助页面获取 Looker Studio 服务代理的电子邮件地址。

  2. 为 Looker Studio 服务代理创建服务账号

  3. 为该服务账号授予对包含信息中心 BigQuery 视图的项目的以下权限:

    • bigquery.dataViewer
    • bigquery.jobUser
    • iam.serviceAccountTokenCreator

获取服务账号 ID 后,请按照以下步骤使用该服务账号进行身份验证:

  1. Looker Studio 首页上,打开信息中心。

  2. 点击修改以修改信息中心。

  3. 资源菜单中,选择管理添加的数据源。信息中心的数据源名称以 billing-export-view 开头。

  4. 在数据源的操作列中,点击修改

  5. 点击数据凭据

  6. 更新数据凭据页面中,选择服务账号凭据,然后输入服务账号 ID。

  7. 点击更新以使用服务账号凭据。

  8. 点击完成以保存对数据源的更改。

  9. 如需查看信息中心,请点击查看

更新信息中心以使用组织的标签

信息中心中的多个图表(例如 Cost Reporting: Labels 页面中的图表)都是根据资源的标签生成的。如需按特定标签查看费用的准确明细,您必须修改默认过滤条件,以使用您自己的标签。

  1. Looker Studio 首页上,打开信息中心。

  2. 点击修改以修改信息中心。

  3. 资源菜单中,选择管理过滤条件

  4. 查看基于 labels.keyproject.labels.key 的过滤条件,并在适用的情况下点击修改,以将标签键更改为组织使用的标签键。

    例如,如果您使用标签键 department 按业务部门整理资源,请修改 business_unit 过滤条件,并将 project.labels.key 过滤条件更改为 department

  5. 点击关闭以完成过滤条件的修改。

在信息中心内分析数据

Looker Studio 信息中心内的页面会细分费用数据,以便您可以快速查看费用和趋势的摘要,并获取有关支出的详细信息。

在大多数页面中,您可以按项目过滤数据,还可以使用日历选择要分析其费用的时间段。

大致了解您的费用

使用概览页面可以大致了解当前和过去账单月份的净费用、热门服务的费用以及过去 30 天内的每日费用。

使用趋势页面可以比较不同时间段的费用,例如当月和上月的费用,或当前季度和上一季度的费用。

使用分析页面可以分析一段时间内的费用,并找出异常情况,例如支出异常偏高或偏低。

确定费用驱动因素

使用以下页面可以了解您在哪些方面支出最多:

  • 每月按服务划分的费用
  • 每月按项目划分的费用
  • 按项目、服务和 SKU 划分的费用
  • 按区域划分的费用

如需详细了解每项服务的费用,请使用特定于服务的页面。例如,GKE 集群页面会显示按 GKE 集群和命名空间细分的费用。

发现利用承诺使用折扣节省资金的机会

承诺使用折扣 (CUD) 提供折扣价格,以换取您承诺在指定期限最少使用的资源水平。

信息中心内的 CUD 页面会显示您可能符合条件获得 CUD 的 Compute Engine、Cloud SQL 和 Memorystore 用量。如果您已经有一个或多个 CUD,则这些页面仅会显示现有 CUD 尚未涵盖的用量。

查看 Cloud Marketplace 软件和其他许可的费用

使用 Marketplace 页面可以查看您从 Cloud Marketplace 购买的软件(例如 Google Cloud NetApp Volumes)的费用。

使用许可页面可以查看您在其他许可(例如 Compute Engine 上的 Windows Server 许可)以及您从 Cloud Marketplace 购买的第三方许可的支出。

按标签查看费用

您可以自定义信息中心的过滤条件,以使用组织的标签。更新过滤条件后,您可以使用以下页面查看各项目和文件夹的费用:

  • 按应用页面会显示标签键 application 下的所有资源的费用。例如,如果您有 Web 应用和移动应用,并分别为其资源添加标签 application:webapplication:mobile,则可以单独查看每个应用的费用。

  • 标签页面显示特定标签(例如成本中心和商家代码)的费用。如果您自定义了信息中心的过滤条件,则可以更改图表上的标题,以反映您的过滤条件。

(高级)修改多个 Cloud Billing 账号的数据

如果您希望信息中心包含来自多个 Cloud Billing 账号的数据,则可以修改 BigQuery 视图,以包含所有 Cloud Billing 账号的结算数据导出。

准备工作

对于您要包含的每个 Cloud Billing 账号,请按照教程前提条件中的所有步骤操作。

更新 BigQuery 视图以包含其他 Cloud Billing 导出

  1. 在 Google Cloud 控制台中,打开 BigQuery 页面。

    转到 BigQuery

  2. 选择包含您为信息中心创建的数据集的项目。

  3. 浏览器面板中,展开您的项目,然后展开数据集。

  4. 点击布告栏视图以查看其详细信息。此视图查询您的标准费用和使用情况数据导出。

  5. 点击详细信息标签页,然后点击修改查询。该视图的查询类似于以下内容:

    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 表的名称。

  6. 复制现有查询,然后在 FROM 子句中,将项目 ID 和 BigQuery 表替换为其他 Cloud Billing 账号的信息。

  7. 在两个查询之间添加 UNION ALL 运算符以组合数据。最终查询类似于以下示例,该示例组合了 BILLING_ACCOUNT_1BILLING_ACCOUNT_2 的数据导出(分别位于 PROJECT_ID_1PROJECT_ID_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)
    
  8. billboard_detail 视图重复上述步骤,以查询详细费用和使用情况数据。

  9. 如果您的某个账号采用非美元货币,请重复上述步骤,并使用 currency_conversion_rate 列转换为美元,如以下示例所示:

    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 命令删除您创建的资源。

  1. 在 Cloud Shell 中打开您的 Terraform 工作目录。如果您在本教程中使用了 GitHub 代码库,请使用以下链接打开该代码库:

    在 Cloud Shell 中打开

  2. (可选)如需预览要删除的资源,请运行以下 terraform plan 命令:

    terraform plan -destroy
    
  3. 查看 Terraform 更改。准备好删除资源后,请运行以下 terraform apply 命令:

    terraform apply -destroy
    

Python

如果您不想继续使用信息中心,请克隆 GitHub 代码库,然后使用 -clean 选项运行信息中心脚本。该脚本会删除 BigQuery 视图,但您的 BigQuery 导出数据集保持不变。

  1. 在 Cloud Shell 中打开 GitHub 代码库:

    在 Cloud Shell 中打开

  2. 导航到 billboard 目录:

    cd examples/billboard
    
  3. 运行以下命令以设置脚本的 Python 环境:

    pip install virtualenv
    virtualenv bill-env
    source bill-env/bin/activate
    pip install -r requirements.txt
    
  4. 运行清理命令:

    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 数据集。
  5. 如需删除 Looker Studio 信息中心,请打开 Looker Studio,找到信息中心,然后从菜单 中点击移除

后续步骤