作者:MeshCloud脉时云公有云架构师 周宽

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

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

一、费用管理重点领域

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

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

1.1 费用可见性

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

1.2 资源优化

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

1.3 费率优化

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

二、设计建议

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

2.1 合并结算与资源管理

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

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

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

2.2 使用标签跟踪和分配费用

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

我们还建议您定义一个流程来检测和更正标签异常和未加标签的项目。使用 Forseti Config Validator 和强制执行标记等 Cloud Security Posture Management (CSPM) 工具,定期扫描环境以查找是否存在标签违规情况。

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

2.3 配置结算帐号权限控制

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

为避免结算支持出现单点故障,请将 Billing Account Administrator 角色分配给多个用户或某个群组。只有拥有 Billing Account Administrator 角色的用户才能联系支持团队。

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

2.4 配置结算报告

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

2.5 分析趋势并预测费用

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

2.6 优化资源用量和费用

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

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

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

三、工具和方法

云中的按需预配和按用量付费特性可帮助您优化 IT 支出。本部分介绍 Google Cloud 提供的工具,以及可用于跟踪和控制云资源费用的方法。

3.1 结算报告

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

结算报告提供以下数据:

3.2 将数据导出至 BigQuery

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

注意:由于延迟报告的数据、时间戳变体、错误、调整和税费,导出的结算数据可能与结算帐单中的数据不同。

如需直观呈现费用数据,您可以创建与 BigQuery 集成的自定义信息中心。

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

3.3 结算帐号权限控制

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

注意:虽然结算帐号与项目相关联,但结算帐号不是 IAM 中的项目的父级。项目不会从其关联的结算帐号继承权限。

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

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

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

3.4 预算、提醒和配额

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

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

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

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

项目所有者可以使用 Service Usage API 将使用方替换值应用于特定配额限制,以减少可根据配额限制收费的配额量。

3.5 改进工作负载效率

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

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

谷歌云服务免费搭建:GoogleCloud费用优化(1)

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

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

3.5.1 重构或重新设计架构

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

3.5.2 合理调整容量

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

3.5.3 自动扩缩

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

3.6 Active Assist 建议

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

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

,