查看 2022 年 Google I/O 大会上介绍的 Firebase 新动态。了解详情

设置高级计费警报和逻辑

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

虽然简单的预算警报电子邮件是接收账单更新的相对简单的方法,但有时您可能希望创建包含更多自定义逻辑的更复杂的警报。这里有两种方法可以考虑:

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

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

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

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

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

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

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

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

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

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

  • 如果您的某些 Firebase 产品使用的资源量已超过某个阈值

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

使用 Cloud Monitoring

要开始使用 Cloud Monitoring,我们建议您从Metrics Explorer开始,它允许您在 Firebase/Google Cloud 项目中创建自定义指标图表并可视化它们的使用情况。

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

在您在 Metrics Explorer 中轻松可视化您的资源使用情况后,我们建议您针对您最关心的指标创建警报策略。以下是一些示例提醒政策:

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

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

创建额外的计费逻辑

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

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

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

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

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

您可以通过在 Google Cloud Console 中访问与您的 Firebase 项目关联的预算(在Billing > Budgets and alerts下)为您的计费数据设置 Pub/Sub 主题,然后点击将 Pub/Sub 主题连接到此预算的复选框.这将创建一个您可以稍后收听的 Pub/Sub 主题。有关详细步骤,请参阅完整文档

创建 Pub/Sub 计费主题后,您可以编写一个云函数来收听该主题并相应地处理数据。数据以 JSON 数据的形式发送,其中包含有用的信息,例如您迄今为止花费的金额、预算金额以及当前结算周期的开始日期。

Google Cloud 文档包含有关如何使用 Cloud Function 接收此数据的完整详细信息。但是,如果您使用 Cloud Functions for Firebase 来部署您的函数,则一般过程会稍微简单一些(查看Firebase 文档)。您还可以参考此视频以获取该过程的示例演练。

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