设置高级结算提醒和逻辑

虽然简单的预算提醒电子邮件是一种接收结算动态的便捷方法,但您有时可能需要创建包含更多自定义逻辑的复杂提醒。为此,您可以考虑采用以下两种方法:

  • 使用 Cloud Monitoring 创建更复杂、更及时的提醒

  • 使用 Pub/Sub 结算通知以及相应的 Cloud Functions 函数来创建自定义行为,以响应您支出的变化

虽然这两种方法都需要您执行更多操作,但它们能帮助您准确地控制要接收哪些类型的提醒,以及如何响应这些提醒。

本页面简要介绍了这两种方法。

使用 Cloud Monitoring 创建更复杂的提醒

简单的预算提醒电子邮件可以在您的账单总额达到特定阈值时通知您。但是,您也可能希望了解个别服务是否有意外的用量增加,避免它们对您的预算产生重大影响。对于此类更复杂的使用场景,我们向您推荐 Cloud Monitoring,这是一种可用于您的 Firebase 项目的 Google Cloud 工具。

Cloud Monitoring 适用于几种不同类型的提醒:

  • 在您的项目依赖的资源不可用(对于 Firebase 和 Google Cloud 服务,甚至是 AWS 等外部服务)时发出提醒

  • Cloud Functions 等服务的响应时间超出预期时发出提醒

  • 在您的 Cloud Storage 存储桶、Realtime Database 实例或 Cloud Firestore 实例拒绝了过多请求(这表示您的 Firebase Security Rules 可能不正确)时发出提醒。

  • 在某些 Firebase 产品使用的资源量超过特定阈值时发出提醒

与简单的预算提醒电子邮件相比,通过 Cloud Monitoring 创建的提醒通常要更加及时(通常为每天发送一次)。提醒可以采用短信、Slack 频道消息、PagerDuty 通知、网络钩子等形式。通过这些选项,您可以发送可见程度更高、更具可操作性的提醒。

使用 Cloud Monitoring

要开始使用 Cloud Monitoring,我们建议您先使用 Metrics Explorer,您可以通过该工具在 Firebase/Google Cloud 项目中创建自定义指标图表,并直观呈现其使用情况。

具体来说,您可以监测 Cloud FirestoreRealtime Database 或 Cloud Functions 函数实例等资源。您可以查看这些产品将影响到您的账单的使用量信息(如文档读取次数、发送的字节数或函数调用次数)。

适应了在 Metrics Explorer 中直观呈现资源使用情况的方法之后,建议您为自己最关注的指标创建提醒政策。以下是一些提醒政策示例:

  • 在 30 分钟时间段内的文档读取次数大于特定值时发出提醒

  • 在特定资源(如一项函数调用)的使用量似乎在特定时间范围内增速过快时发出提醒

创建额外的结算逻辑

当预算达到特定阈值时,预算提醒会自动发送电子邮件,但如果希望获得更精细的提醒或希望以编程方式响应支出增加的情况,您可以考虑基于 Google Cloud Pub/Sub 消息设置额外的自定义逻辑。

例如,您可以通过 Slack 频道或短信发送提醒,或通过编程方式根据支出水平对应用或项目进行更改。

Pub/Sub 是一种消息传递服务,允许其他服务通过称为 Pub/Sub 主题的渠道异步发送消息(通常采用 JSON 数据的形式)。您可以设置授权服务(如 Cloud Functions),以侦听使用这些主题的消息并对数据采取适当操作。

请注意,无论计费使用量是否发生更改,系统都会大约每 20 分钟发送一次 Pub/Sub 通知,并且通知是无状态的(这意味着它们不会提供先前的背景信息)。如果您希望跟踪一段时间内的支出异常增长,或者将支出与上一周期的支出进行比较,则需要使用 Cloud FirestoreRealtime Database 等数据库自行管理这些历史数据数据。

Pub/Sub 主题与 Cloud Functions 搭配使用

您可以通过以下方式为结算数据设置 Pub/Sub 主题:访问 Google Cloud 控制台中与您的 Firebase 项目关联的预算(在“结算” > “预算和提醒”下),然后点击将一个 Pub/Sub 主题关联到此预算复选框。这将创建一个 Pub/Sub 主题,您稍后即可侦听该主题。如需了解详细步骤,请参阅完整文档

创建 Pub/Sub 结算主题后,您可以编写 Cloud Functions 函数来侦听此主题,并相应地处理数据。数据以 JSON 数据的形式发送,其中包含一些有用的信息,例如您到目前为止已经花费的金额、预算金额以及当前结算周期的开始日期。

Google Cloud 文档详细介绍了如何使用 Cloud Functions 函数接收这些数据。但是,如果您使用 Cloud Functions for Firebase 部署函数,则总体过程要简单一些(请参阅 Firebase 文档)。您还可以观看此视频中的示例流程演示。

收到这些数据后,您可以通过多种不同的方式对其进行响应。您可以做出如下选择: