监控和控制费用

Last reviewed 2023-09-08 UTC

Google Cloud 架构框架中的本文档介绍了最佳实践、工具和技术,可帮助您跟踪和控制 Google Cloud 中的资源费用。

本部分中的指导适用于预配或管理云资源的用户。

费用管理重点领域

Google Cloud 中的资源费用取决于您使用的资源数量以及结算资源所采用的费率。

如需管理云资源的费用,我们建议您重点关注以下几个方面:

  • 费用可见性
  • 资源优化
  • 费率优化

费用可见性

跟踪您的支出金额以及资源和服务的费用结算方式,以便分析费用对业务成果的影响。我们建议您遵循 FinOps 操作模型,该模型建议您执行以下操作以在整个组织中公开费用信息:

  • 分配:为每个费用项分配一个所有者。
  • 报告:将费用数据设置为可用、可使用、可操作。
  • 预测:估算和跟踪未来的支出。

资源优化

根据工作负载的要求调整云资源的数量和大小。在可能的情况下,请考虑使用代管式服务或重新设计应用架构。通常,各个工程团队比中央团队在优化资源部署的机会和技术方面拥有的背景信息多于中央 FinOps(财务运营)团队。我们建议 FinOps 团队与各个工程团队合作,以发现可应用于整个组织的资源优化机会。

费率优化

FinOps 团队经常集中制定费率优化决策。我们建议各个工程团队与中央 FinOps 团队合作,以充分利用预订的大幅度折扣、承诺使用折扣、Spot 虚拟机、固定费率价格、数量和合同折扣。

设计建议

本部分推荐可用于监控和控制费用的各种方法。

合并结算与资源管理

为了高效地管理 Google Cloud 中的结算和资源,我们建议您为组织使用单个结算账号,并使用内部退款机制分配费用。针对结构松散并且各实体不会相互影响的综合性大企业和组织,使用多个结算账号。例如,转销商可能需要为每个客户使用不同的账号。使用单独的结算账号还可以帮助您遵守特定于国家/地区的税务法规。

另一个建议的最佳实践是将您管理的所有项目都迁移到您的组织中。我们建议您使用 Resource Manager 来构建有助于实现以下目标的资源层次结构

  • 根据每个资源与其直接父级的关系建立资源所有权的层次结构。
  • 控制如何将访问权限政策和费用分配标记或标签附加到组织中的资源以及资源如何继承这些政策和标记或标签。

此外,我们还建议您根据使用量按比例分配共享服务的费用。根据业务目标和优先级的变化,定期查看并调整费用分配参数。

使用标记或标签跟踪和分配费用

标记和标签是可用于为 Google Cloud 资源添加注解的两种不同方法。标记比标签提供更多功能。例如,如需实现对资源的精细控制,您可以创建根据支持的资源是否附加了标记而有条件实施的 Identity and Access Management (IAM) 政策。此外,层次结构中的所有子资源都会继承与资源关联的标记。如需详细了解标记和标签之间的区别,请参阅标记概览

如果要构建新的费用分配和跟踪框架,我们建议您使用标记。

如需按照所需的粒度对费用数据进行分类,请建立一个适合您组织的退款机制并且可帮助您适当分配费用的标记或标签架构。您可以在组织或项目级层定义标记。您可以在项目级层分配标签,并定义一组默认情况下可应用于所有项目的标签。

定义一个流程来检测和纠正标记和标签异常,以及未加标签的项目。例如,从 Cloud Asset Inventory 中,您可以下载项目中所有资源的清单(CSV 文件),并分析清单以确定未分配任何标记或标签的资源。

如需跟踪共享资源和服务(例如,公用数据存储区、多租户集群和支持订阅)的费用,请考虑使用特殊标记或标签来标识包含共享资源的项目。

配置结算账号权限控制

如需控制对 Cloud Billing 的访问权限,我们建议您仅向管理结算联系人信息的用户分配 Billing Account Administrator 角色。例如,财务、会计和运营部门的员工可能需要此角色。

为避免结算支持出现单点故障,请将 Billing Account Administrator 角色分配给多个用户或某个群组。只有拥有 Billing Account Administrator 角色的用户才能联系支持团队。如需查看详细指导,请参阅 Cloud Billing 访问权限控制示例重要角色

进行以下配置以管理对结算的访问权限:

  • 如需将结算账号与项目相关联,成员需要拥有结算账号的 Billing Account User 角色以及项目的 Project Billing Manager 角色。
  • 为了让团队能够手动将结算账号与项目相关联,您可以分配组织级层的 Project Billing Manager 角色和结算账号的 Billing Account User 角色。您可以通过将 Project Billing Manager 和 Billing Account User 角色分配给服务账号,在项目创建期间自动关联结算账号。我们建议您限制 Billing Account Creator 角色或移除此角色的所有分配。
  • 为了防止因意外更改项目的结算状态而导致服务中断,您可以锁定项目与其结算账号之间的关联性。如需了解详情,请参阅保护项目与其结算账号之间的关联性

配置结算报告

设置结算报告,为您需要跟踪的关键指标提供数据。我们建议您跟踪以下指标:

  • 费用趋势
  • 消费最高的用户(按项目和产品)
  • 支出不规则的区域
  • 整个公司的关键数据洞见,如下所示:
    • 异常值检测
    • 特定时间段内的趋势
    • 在一组模式下(例如按月)发生的趋势
    • 内部和外部工作负载之间的费用比较和基准分析
    • 业务案例跟踪和价值实现(例如,云费用与类似本地资源的费用的对比)
    • 验证 Google Cloud 账单是否与预期一致且准确无误

使用 BigQuery 账单导出功能自定义并分析费用报告,并使用 Looker 数据洞察直观呈现费用数据。使用预测工具评估实际费用的趋势以及您可能需要支出的费用。

优化资源用量和费用

本部分推荐了最佳实践,可帮助您优化资源在 Google Cloud 服务中的用量和费用。

为防止超支,请考虑为所有项目配置具有高阈值的默认预算和提醒。为了将预算保持在特定范围内,我们建议您执行以下操作:

  • 为需要绝对使用限制的项目(例如培训项目或沙盒项目)配置预算和提醒

  • 根据您需要跟踪的财务预算定义预算。例如,如果部门具有总体云预算,请设置 Google Cloud 预算范围,以包含您需要跟踪的特定项目。

  • 为确保预算得以维持,请将配置预算和提醒的责任委派给拥有工作负载的团队。

为了优化费用,我们还建议您执行以下操作:

  • 限制 API 用量(如果它对业务的影响最小或没有影响)。设置上限功能非常适合沙盒项目或训练项目以及具有固定预算的项目(例如 BigQuery 中的临时分析)。设置上限功能并不会移除关联项目中的所有资源和数据。
  • 使用配额设置硬性限制以限制资源部署。配额可帮助您控制费用并防止恶意使用或滥用资源。配额按项目级层资源类型和位置应用。
  • Recommendation Hub 中查看并实施费用优化建议。
  • 购买承诺使用折扣 (CUD),以节省处理具有可预测资源需求的工作负载的资源费用。

工具和方法

云中的按需预配和按用量付费特性可帮助您优化 IT 支出。本部分介绍 Google Cloud 提供的工具,以及可用于跟踪和控制云资源费用的方法。在使用这些工具和方法之前,请先查看 Cloud Billing 基本概念

FinOps 中心

通过 Google Cloud 控制台中的 FinOps hub,您可以监控当前的成本优化情况并探索进一步优化 Cloud Billing 账号成本的机会。FinOps hub 根据 Cloud Billing 和 Active Assist 收集的历史用量指标(包括最近的用量和当前承诺)生成数据。您还可以查看 FinOps 得分,了解您使用 Google Cloud 工具和 FinOps 实践来优化费用的效果。如需了解详情,请参阅使用 FinOps Hub 优化费用

结算报告

Google Cloud 在 Google Cloud 控制台中提供结算报告,以帮助您查看当前和预测的支出。通过结算报告,您可以查看单个页面上的费用数据、发现和分析趋势、预测期末费用,并在必要时采取更正措施。

结算报告提供以下数据:

  • 给定时段的费用和费用趋势,按以下方式进行整理:
    • 按结算账号
    • 按项目
    • 按产品(例如 Compute Engine)
    • SKU(例如静态 IP 地址)
  • 在不使用折扣或赠送金额后可能产生的费用
  • 预测支出

将数据导出至 BigQuery

您可以将结算报告导出至 BigQuery,并使用精细的历史数据视图(包括通过标签或标记分类的数据)来分析费用。您可以使用 BigQuery 机器学习执行更高级的分析。我们建议您在创建 Cloud Billing 账号时启用将结算报告导出至 BigQuery 的功能。您的 BigQuery 数据集包含自设置 Cloud Billing 导出之日起产生的结算数据。该数据集不包含在启用导出之前的时间段内产生的数据。

如需直观呈现费用数据,您可以创建与 BigQuery 集成的自定义信息中心(示例模板:Looker Studio)。

您可以使用标记和标签作为过滤导出的结算数据的条件。结算数据导出中包含的标签数量有限。在一小时内,系统最多保留 1000 个标签映射。标签不会显示在账单 PDF 或 CSV 中。请考虑使用指示业务部门、内部退款部门和其他相关元数据的标记或标签来为资源添加注解。

结算账号权限控制

您可以为特定资源定义 Identity and Access Management (IAM) 政策,以便控制对这些资源的 Cloud Billing 账号的访问权限。要授予或限制对 Cloud Billing 的访问权限,您可以在组织级层、结算账号级层或项目级层设置 IAM 政策。

结算和资源管理的访问权限控制遵循职责分离原则。每个用户仅拥有其业务角色所需的权限。Organization Administrator 和 Billing Administrator 角色拥有的权限并不相同。

您可以在结算账号级层或组织级层设置与结算相关的权限。常见角色为 Billing Account Administrator、Billing Account User 和 Billing Account Viewer。

我们建议您使用账单结算或配置备用付款方式。维护与结算和付款有关的联系人和通知设置

预算、提醒和配额

预算可帮助您根据计划支出跟踪实际的 Google Cloud 费用。创建预算时,您可以配置提醒规则,以便在实际或预测的支出超过定义的阈值时触发电子邮件通知。您还可以使用预算来自动执行费用控制响应。

预算可以触发提醒,让您了解资源用量和费用的趋势,并提示您采取费用优化操作。但是,当实际费用达到或超出预算或阈值时,预算不会阻止您使用或结算服务。如需自动控制费用,您可以使用预算通知以编程方式停用项目的 Cloud Billing。您还可以限制 API 用量,以便在定义的用量阈值后停止产生费用。

您可以为结算账号和项目配置提醒。请为账号至少配置一个预算。

为防止在预配资源时超出预定级层或者为限制特定操作的数量,您可以在资源级层或 API 级层设置配额。以下示例说明了如何使用配额:

  • 控制每秒的 API 调用次数。
  • 限制创建的虚拟机数量。
  • 限制 BigQuery 中每天查询的数据量。

项目所有者可以使用 Service Usage API 将使用方替换值应用于特定配额限制,以减少可根据配额限制收费的配额量。如需了解详情,请参阅创建使用方配额替换值

改进工作负载效率

建议使用以下策略来帮助您在 Google Cloud 中以经济实惠的方式运行工作负载:

  • 通过提高产品效率来优化资源用量。
  • 降低资源的结算费率。
  • 控制和限制资源用量和支出。

在选择减少费用的方法和 Google Cloud 功能时,请考虑所需的工作量和预期节省的费用,如下图所示:

费用优化策略:工作量与节省费用的映射

下面是上图所示的方法摘要:

  • 使用以下方法,进行少量工作可以节省大量费用:
    • 承诺使用折扣
    • 自动扩缩
    • BigQuery 槽
  • 使用以下方法,进行适量或大量工作可以节省大量费用:
    • Spot 虚拟机
    • 重新设计架构以将应用设计为无服务器应用或容器化应用
    • 更换平台以使用代管式服务
  • 使用以下方法,进行适量工作可以节省适量费用:
    • 自定义机器类型
    • Cloud Storage 生命周期管理
    • 合理调整容量
    • 收回空闲资源

以下各部分介绍的方法可帮助您提高工作负载的效率。

重构或重新设计架构

您可以通过重构工作量或重新设计工作量架构来使用 Google Cloud 产品,从而大幅节省费用。例如,迁移到支持缩减至零的无服务器服务(如 Cloud Storage、Cloud Run、BigQuery 和 Cloud Run functions)有助于提高效率。如需评估和比较这些产品的费用,您可以使用价格计算器

合理调整容量

此方法可帮助您确保基础架构的规模与预期用途相匹配。此策略主要与基础架构即服务 (IaaS) 解决方案相关,您可以在其中为底层基础架构付费。例如,您已部署 50 个虚拟机,但虚拟机并未充分利用,因此您认为工作负载可以在更少(或更小)的虚拟机上高效运行。在这种情况下,您可以移除一些虚拟机或调整其容量。Google Cloud 提供了合理调整容量建议,可帮助您通过预配较小的虚拟机,来检测既不影响性能又能节省费用的机会。与将资源部署到生产环境后再合理调整容量相比,在设计阶段进行所需的工作量要少一些。

自动扩缩

如果您使用的产品支持动态自动扩缩,请考虑将工作负载设计为可以利用自动扩缩来优化费用和性能。例如,对于计算密集型工作负载,您可以在 Compute Engine 中使用代管实例组,也可以将应用容器化并将其部署到 Google Kubernetes Engine 集群。

Active Assist 建议

Active Assist 利用数据、智能方法和机器学习技术降低云复杂性并减少管理工作量。Active Assist 可帮助您优化云拓扑的安全性、性能和费用。它提供了优化费用和用量的智能建议。您可以采用这些建议,实现立竿见影的成本节约和更高的效率。

以下示例演示了 Active Assist 提供的建议:

  • Compute Engine 资源调整:根据用量来调整虚拟机实例的容量,以优化费用和性能。识别并删除或备份空闲的虚拟机永久性磁盘,以便优化基础架构费用。
  • 承诺使用折扣 (CUD):Google Cloud 会分析您的历史用量,找到最适合您工作负载的承诺量,以及提供易于理解且切实可行的建议来帮助您节省费用。 如需了解详情,请参阅承诺使用折扣 Recommender
  • 无人使用的项目:发现组织中无人使用的项目,并移除或回收它们。如需了解详情,请参阅无人使用的项目 Recommender

如需查看完整列表,请参阅 Recommender

后续步骤