管理程序化预算提醒通知

概览

预算的默认行为是在预算提醒阈值规则触发电子邮件通知时,向目标 Cloud Billing 帐号的 Billing Account Administrator 和 Billing Account User 发送电子邮件。

预算提醒通知示意图
图 1:说明了针对预算提醒通知的默认电子邮件功能,以及使用用于程序化通知的 Pub/Sub 自动处理费用控制响应的可选方法。

但是,如果您的预算非常重要且具有高时效性,则电子邮件可能不是您及时了解 Google Cloud 费用的最佳方式。除了电子邮件之外,您还可以使用程序化通知自动处理费用控制响应。费用控制响应示例包括:

  • 通过自动停用结算或终止资源来限制 Google Cloud 支出上限。
  • 将预算消息转发给其他媒介(例如 Slack)。
  • 通过调整配额限制资源使用情况。

如需了解详情,请参阅程序化预算通知示例

执行此任务所需的权限

如需设置 Pub/Sub 主题并将其与 Cloud Billing 预算关联,您需要以下角色:

如需详细了解 Google Cloud 权限,请参阅:

如何设置和启用 Pub/Sub 程序化通知

要使程序化通知接收与预算的当前状态相关的 Pub/Sub 消息,请将 Pub/Sub 主题关联到您的 Cloud Billing 预算。

要关联、修改或移除与您的预算关联的 Pub/Sub 主题,请执行以下操作:

1.创建 Pub/Sub 主题

为 Cloud Billing 配置 Pub/Sub 主题,向该主题发布您的预算提醒。如果您已配置预算 Cloud Billing Pub/Sub 主题,则可以将其重复用于所有预算,或者您可以为每个预算创建唯一主题。

  1. 转到 Google Cloud Console Pub/Sub 页面。

    登录 Cloud Console Pub/Sub

  2. 选择一个项目。

  3. 点击 创建主题

  4. 主题 ID 字段中,提供主题名称,然后点击创建主题

2.将 Cloud Billing 预算关联到 Pub/Sub 主题

要将 Cloud Billing 预算与 Pub/Sub 主题相关联,请执行以下操作:

  1. 登录 Google Cloud Console。

    登录 Cloud Console

  2. 打开控制台导航菜单 ,然后选择结算

    如果您有多个 Cloud Billing 帐号,请执行以下操作之一:

    • 如需管理当前项目的 Cloud Billing,请选择转至关联的结算帐号
    • 如需查找其他 Cloud Billing 帐号,请选择管理结算帐号,然后选择要管理其预算的帐号。
  3. 在“结算”导航菜单中,选择预算和提醒

  4. 必要时,请创建预算。或者,如需修改现有预算和提醒规则,请点击预算名称。

  5. 操作部分的管理通知下,选择将一个 Pub/Sub 主题关联到此预算

  6. 项目字段中,点击选择项目,然后选择包含您设置的 Pub/Sub 主题的项目。如果您遵循了上一部分中的建议,那么这是您的结算管理 Google Cloud 项目

  7. 选择 Pub/Sub 主题下,选择现有主题,或选择“创建主题”来创建新主题。

    • 如需创建新主题,请在主题 ID 字段中提供主题名称,然后点击创建主题
    • 创建主题后,系统会选择该主题。
  8. 点击保存

通知格式

发送到 Pub/Sub 主题的通知由以下两部分组成:

  • 特性:描述事件的一组键值对。
  • 数据:一个字符串,包含了描述预算提醒详细信息的 JSON 对象。

特性

特性是指 Cloud Billing 发送到 Pub/Sub 主题的所有通知中包含的键值对。无论通知载荷为何,通知始终包含下列键值对。

属性名称 示例 说明
billingAccountId 01D4EE-079462-DFD6EC 预算所属 Cloud Billing 帐号的标识符。
budgetId de72f49d-779b-4945-a127-4d6ce8def0bb Cloud Billing 帐号中预算提醒的标识符。
schemaVersion 1.0 通知架构版本。

数据

对于架构版本 1.x,预算提醒详细信息会以采用 base64 编码的 UTF-8 字符串的形式返回,该字符串包含具有以下属性的 JSON 对象:

数据 示例 说明
budgetDisplayName "My Personal Budget" 为预算指定的简明易懂的名称。
costAmount 140.321 所产生的费用金额。跟踪的费用类型取决于预算过滤条件和设置。
costIntervalStart "2018-02-01T08:00:00Z" 预算提醒期限的开始时间。报告的费用包括从此时间开始的使用费用。目前,这是当月第一次发生预算使用的日期。
budgetAmount 152.557 预算中分配的金额。
budgetAmountType "SPECIFIED_AMOUNT" 预算金额类型。此类型可以是“SPECIFIED_AMOUNT”(固定金额)或“LAST_MONTH_COST”(上个月的费用)。
alertThresholdExceeded 0.9 超出的最高实际费用提醒阈值配置。值是十进制数格式的百分比(例如 0.9 即 90%)。如果实际费用没有超过任何阈值,则此键不存在。
forecastThresholdExceeded 0.2 超出的预测费用最高提醒阈值。值是十进制数格式的百分比(例如 0.2 即 20%)。如果预测费用没有超过任何阈值,则此键不存在。
currencyCode "USD" 预算提醒货币。所有费用和预算提醒金额均以此货币计算。

向 Pub/Sub 发送通知的送达保证

创建预算并将其关联到 Pub/Sub 主题后,您会收到如下程序化通知:

  • 系统会每天向您的 Pub/Sub 主题多次发送预算通知,其中会包含您的当前预算状态。这与预算提醒电子邮件不同,后者仅在达到预算阈值时发送。
  • 即使 Cloud Billing 帐号没有用量,系统也会发送 Pub/Sub 通知。
  • 您可能需要等几个小时才会收到第一则 Pub/Sub 通知。
  • Pub/Sub 仅保证至少传送一次。您可能会多次收到消息,并且消息的到达顺序可能与发送顺序不一致。
  • 如果由于 Pub/Sub 主题配置错误而导致传送失败,您将不会收到通知。

    传送可能会因以下原因之一而失败:

    • Pub/Sub 主题已不存在。
    • Cloud Billing 不再拥有发布到 Pub/Sub 主题的权限。
    • 已超出通知配额。