雖然簡單的預算警報電子郵件是接收賬單更新的相對簡單的方法,但有時您可能希望創建包含更多自定義邏輯的更複雜的警報。這裡有兩種方法可以考慮:
使用 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 項目