您可以结合使用将 Cloud Billing 数据导出到 BigQuery 的功能与 Looker 数据洞察,随时了解 Google Cloud 费用。
本页介绍如何使用 Cloud Billing 数据设置结算使用情况和费用数据分析信息中心。您可以使用信息中心回答有关 Google Cloud 支出的问题,例如我的 Compute Engine 资源支出是多少?
您可以按照本教程中的说明设置信息中心,也可以观看以下视频:
目标
本教程将介绍如何完成下列任务:
使用 Cloud Shell 设置您自己的结算使用情况和费用数据分析信息中心的副本。
了解如何针对高级案例修改信息中心视图,例如,如果您有多个 Cloud Billing 帐号,或者 Cloud Billing 帐号使用非美元货币。
费用
在本文档中,您将使用 Google Cloud 的以下收费组件:
将 Cloud Billing 数据存储在 BigQuery 中的费用通常是免费的,或者只需些许费用。根据 BigQuery 数据集的大小,您可能需要支付查询数据进行分析的费用。
准备工作
设置将 Cloud Billing 数据导出到 BigQuery
如需使用信息中心,您必须为标准和详细 Cloud Billing 使用情况数据启用 BigQuery 导出。
启用数据导出后,数据集大约需要一天时间才能填充 Cloud Billing 数据。您可能会先看到一些网络出站流量,之后是一些虚拟机费用,然后是 Pub/Sub 使用情况,等等。获得数据集中的数据后,您可以针对该数据集运行查询。
如果您的组织已设置 BigQuery 导出功能,则您必须在托管数据集的项目中创建 BigQuery 视图的权限。
(可选)如果要为 BigQuery 视图创建新数据集,则必须具有创建 BigQuery 数据集的权限。
获取有关 Google Cloud 环境的以下信息:
- 托管您的 Cloud Billing BigQuery 数据集的项目 ID。
- 标准和详细费用数据导出的数据集名称。通常,费用数据导出位于同一个数据集中。
创建信息中心的副本
如需创建您自己的信息中心副本,请先克隆自动执行该过程的 GitHub 代码库。此步骤使用 Cloud Shell,它是 Google Cloud 的交互式 Shell 环境,您可以通过浏览器使用。
概括来讲,该代码库中的设置脚本会执行以下任务:
- 创建一个新的 BigQuery 数据集,其中包含从标准和详细费用数据导出中提取数据的视图。
- 复制信息中心模板并将副本连接到数据的 BigQuery 视图。
- 为您提供 Looker 数据洞察的链接,该副本可保存到 Looker 数据洞察信息中心。
如需创建副本,请执行以下操作:
在 Cloud Shell 中打开 GitHub 代码库:
导航到
billboard
目录:cd examples/billboard
运行以下命令以设置脚本的 Python 环境:
pip install virtualenv virtualenv bill-env source bill-env/bin/activate pip install -r requirements.txt
运行用于创建信息中心的脚本。您可能需要授权 Cloud Shell 以代表您进行 API 调用:
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 数据洞察的链接。
点击 Looker 数据洞察链接以打开信息中心。
在 Looker 数据洞察中,点击修改和共享以保存信息中心。当系统提示您向报告添加数据源时,点击添加到报告。
现在,您可以从 Looker 数据洞察首页访问信息中心了。
(高级)修改多个 Cloud Billing 帐号的数据
如果您希望信息中心包含来自多个 Cloud Billing 帐号的数据,则可以修改 BigQuery 视图,以包含所有 Cloud Billing 帐号的结算数据导出。
准备工作
对于您要包含的每个 Cloud Billing 帐号,请按照教程前提条件中的步骤操作。
更新 BigQuery 视图以包含其他 Cloud Billing 导出
在 Google Cloud 控制台中,打开 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
运算符以组合数据。您的最终查询类似于以下示例,其中组合了 BILLING_ACCOUNT_1 和 BILLING_ACCOUNT_2 的数据导出(位于 PROJECT_ID_1 和 PROJECT_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, EXTRACT(DATE FROM _PARTITIONTIME) AS date from `PROJECT_ID_2.BILLING_ACCOUNT_2_EXPORT` s WHERE _PARTITIONTIME >"2021-01-01"
对 billboard_detail 视图重复上述步骤,以查询详细费用和使用情况数据。
如果您的某个帐号采用非美元货币,请重复上述步骤,并使用
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, 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 数据洞察信息中心,请打开 Looker 数据洞察,找到信息中心,然后从 菜单中点击移除。