Catch up on everthing we announced at this year's Firebase Summit. Learn more

设置高级计费警报和逻辑

虽然简单的预算警告电子邮件是一个相对简单的方法来获得计费更新,有时可能当你想创建更复杂的提醒,包括更多的定制逻辑。这里有两种方法可以考虑:

  • 使用 Cloud Monitoring 创建更复杂、更及时的警报

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

虽然这两种技术都需要您做更多的工作,但它们使您能够准确控制您收到的警报类型以及如何响应它们。

本页概述了这些方法中的每一种。

使用 Cloud Monitoring 创建更复杂的警报

简单的预算提醒电子邮件会在您的总体账单达到特定阈值时通知您。但是,您可能还想知道个别服务是否在意外增加 - 在它们有机会显着影响您的预算之前。对于此类更复杂的用例,我们建议您了解 Cloud Monitoring,这是一款适用于您的 Firebase 项目的 Google Cloud 工具。

Cloud Monitoring 可用于多种不同类型的警报:

  • 如果您的项目所依赖的资源不可用(对于 Firebase 和 GCP 服务,甚至对于外部服务,如 AWS)

  • 如果 Cloud Functions 等服务的响应时间比预期的要长

  • 如果您的 Cloud Storage 存储分区、实时数据库实例或 Cloud Firestore 实例拒绝的请求过多(表明您的 Firebase 安全规则可能不正确)。

  • 如果您的某些 Firebase 产品使用的资源量增加到超过特定阈值

通过 Cloud Monitoring 创建的警报通常比简单的预算警报电子邮件发送得更快,后者通常每天发送一次。警报可以采用 SMS 消息、Slack 频道消息、PagerDuty 通知、Webhook 等形式。这些选项使您能够以更高和更可操作的可见性级别发送警报。

使用云监控

要开始使用云监控,我们建议首先是指标浏览器,它允许您将火力地堡/谷歌云项目中创建自定义的图形指标和可视化的使用。

具体来说,您可以查看 Cloud Firestore、实时数据库或 Cloud Function 实例等资源。您可以查看有关这些产品的使用信息(例如文档读取次数、发送的字节数或函数调用),这些信息会对您的计费产生影响。

如果您熟悉可视化的指标浏览器的资源使用情况,我们建议您建立提醒政策上您最关心的指标。以下是一些示例警报策略:

  • 如果 30 分钟时间段内的文档读取次数大于特定值

  • 如果特定资源的使用(如函数调用)在特定时间范围内似乎增长得太快

创建额外的计费逻辑

当您的预算达到特定阈值时,预算警报会自动发送电子邮件,但对于更复杂的警报或对支出增加的程序化反应,您可以考虑基于 Google Cloud Pub/Sub 消息设置其他自定义逻辑。

例如,您可以向 Slack 频道或通过短信发送警报,或者根据支出水平对应用或项目进行程序化更改。

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

请注意,无论您的计费使用情况是否发生变化,用于计费的 Pub/Sub 通知大约每 20 分钟发送一次,并且它们是无状态的(意味着它们不提供之前发生的情况的上下文)。如果您想跟踪支出随时间的异常增长,或将支出与上一个周期进行比较,则需要使用 Cloud Firestore 或实时数据库等数据库自行管理该历史数据。

将 Pub/Sub 主题与 Cloud Functions 结合使用

您可以通过访问与在谷歌云端控制台的火力地堡项目(下结算>预算和警报)相关的预算,然后点击复选框连接的Pub / Sub主题,这个预算为您的结算数据的发布/订阅主题.这将创建一个您可以稍后收听的 Pub/Sub 主题。有关详细步骤,请参阅完整的文档

创建 Pub/Sub 计费主题后,您可以编写一个 Cloud Functions 函数来侦听此主题并相应地对数据采取行动。数据以 JSON 数据的形式发送,包括有用的信息,例如您目前已花费的金额、预算金额和当前计费周期的开始日期。

Google Cloud 文档提供了有关如何使用 Cloud Functions 接收此数据的完整详细信息。但是,如果你使用云功能的火力地堡来部署功能,一般的过程是稍微简单一些(检查出的火力地堡的文档)。您也可以参考这个视频的过程中的一个样本演练。

收到此数据后,您可以通过多种不同的方式对其进行响应。以下是一些选项: