虽然简单的预算警报电子邮件是接收账单更新的相对简单的方法,但有时您可能希望创建包含更多自定义逻辑的更复杂的警报。这里有两种方法可以考虑:
使用 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 文档)。您还可以参考此视频以获取该过程的示例演练。
收到此数据后,您可以通过多种不同的方式对其进行响应。以下是一些选项:
当您的支出达到某个阈值时,向 Slack 频道、Discord 频道发送警报或发送短信。
对比历史数据分析您的支出,并在出现异常情况时提醒您
如果计费水平过高,请通过远程配置更改您的应用
通过以编程方式从您的帐户中删除您的结算服务来完全禁用您的 Firebase 项目