如何计算单个 Cloud Run 服务的每月费用?

ran*_*ist 3 google-cloud-platform google-cloud-billing google-cloud-run

我已将大约 30 个不同的微服务部署到 Google Cloud Run。有没有办法(API/仪表板/等)来确定每项服务的 30 天成本?或者,更好的是,有一种方法可以查看每个容器随时间变化的成本(成本/天)?

Billable container instance time尝试:从每个服务手动下载 30 天图表的 .csv,https://console.cloud.google.com/run/detail/myregion/myservice/metrics这是不切实际的。还不清楚使用什么采样/平均方案来生成该数据,因此准确性不明确。

小智 6

这种方法有两种方法:

第一种方法使用第三方成本计算工具,例如:Harness CCM:https://developer.harness.io/docs/cloud-cost-management/use-cloud-cost-management/ccm-cost-categories/use-ccm-cost -categories/ 或 Apptio:https://www.apptio.com/products/cloudability/totalcost/

第二种方法是使用 Google 云原生服务,例如 Billing Sink 到 Bigquery,实现此目标的方法如下:

启用 BigQuery 导出功能 > 转到“结算”页面并选择您的结算帐户 > 点击“将结算数据导出到 BigQuery”。> 按照提示创建新数据集或选择现有数据集 > 启用 BigQuery 导出后,账单数据将自动导出到指定数据集。

以下是显示每个 Cloud Run 服务的总成本的示例查询:


SELECT
  labels."run.googleapis.com/service_name" AS service_name,
  SUM(cost) AS total_cost
FROM
  `billing_project.billing_dataset.gcp_billing_export_v1_XXXXXX_XXXXXX` -- replace with your dataset name and table suffix
WHERE
  service.id = "Cloud Run"
GROUP BY
  service.labels."run.googleapis.com/service_name"

Run Code Online (Sandbox Code Playgroud)

此查询按 Cloud Run 服务名称对账单数据进行分组,然后对每项服务的成本进行求和

您可以通过添加基于时间的筛选器或聚合来修改查询以获取更详细的信息,例如每天或每小时的成本。例如,要查看过去 7 天内每个 Cloud Run 服务的每日费用:

SELECT
  labels."run.googleapis.com/service_name" AS service_name,
  DATE_TRUNC(date, DAY) AS date,
  SUM(cost) AS daily_cost
FROM
  `billing_project.billing_dataset.gcp_billing_export_v1_XXXXXX_XXXXXX` -- replace with your dataset name and table suffix
WHERE
  service.id = "Cloud Run"
  AND date >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
GROUP BY
  service.labels."run.googleapis.com/service_name",
  DATE_TRUNC(date, DAY)

Run Code Online (Sandbox Code Playgroud)

此查询按服务名称和日期对计费数据进行分组,然后对每个服务和日期的费用进行求和。

生成账单数据和导出到 BigQuery 之间可能存在一些延迟,因此结果可能不是实时的,有关这方面的更多背景信息,您还可以关注文档: https: //cloud.google.com /billing/docs/how-to/export-data-bigquery