簡単な予算アラートメールで、比較的簡単に課金に関する更新情報を受信できますが、よりカスタマイズされたロジックを備えた、高度なアラートを作成する必要がある場合もあります。次の 2 つの手法を検討してみてください。
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 によって作成されるアラートは、通常であれば 1 日 1 回送信される、簡単な予算アラートメールよりも高速です。アラートは、SMS メッセージ、Slack チャンネル メッセージ、PagerDuty 通知、Webhook などで送信できます。これらのオプションを使用すると、より高度で、より実用的なレベルの可視性でアラートを送信できます。
Cloud Monitoring の使用
Cloud Monitoring の使用に際して、Metrics Explorer から始めることをおすすめします。これにより、Firebase/Google Cloud プロジェクト内でカスタム指標のグラフを作成して、使用状況を可視化できます。
具体的には、Cloud Firestore、Realtime Database、Cloud Functions のインスタンスなどのリソースをモニタリングできます。課金に影響する可能性のあるプロダクトの使用状況情報(ドキュメントの読み取り回数、送信されたバイト数、関数呼び出し回数など)を確認できます。
Metrics Explorer でリソースの使用状況を可視化できるようにしたら、最も重要な指標に関するアラート ポリシーを作成することをおすすめします。アラート ポリシーの例を次に示します。
30 分間のドキュメントの読み取り数が特定の値を超えた場合
特定のリソースの使用量(関数の呼び出しなど)が、特定の時間枠で急速に増加しているように見える場合
追加の課金ロジックを作成する
予算アラートでは、予算が特定のしきい値に達すると自動的にメールが送信されます。支出の増加に対するより高度なアラートやプログラムによる対応を設定する場合は、Google Cloud Pub/Sub メッセージに基づく追加のカスタム ロジックを設定することをおすすめします。
たとえば、Slack チャンネルにアラートを送信したり、テキスト メッセージを介してアラートを送信したり、支出レベルに応じてアプリやプロジェクトにプログラムによる変更を加えたりすることができます。
Pub/Sub は、他のサービスが Pub/Sub トピックと呼ばれるチャネルを介して非同期的にメッセージ(通常は JSON データ形式)を送信できるようにするメッセージ送信サービスです。Cloud Functions などの承認済みサービスを設定して、これらのトピックのメッセージをリッスンし、データに適宜対応することができます。
課金に関する Pub/Sub 通知は、課金の使用方法が変更されたかどうかに関係なく、約 20 分ごとに送信されます。また、これらの通知はステートレスです(つまり、前の内容に関してコンテキストが提供されません)。支出の時間の経過に伴う異常な増加を追跡したり、支出を前のサイクルと比較したりする場合は、Cloud Firestore や Realtime Database などのデータベースを使用して過去のデータを自身で管理する必要があります。
Cloud Functions で Pub/Sub トピックを使用する
Google Cloud コンソールで、Firebase プロジェクトに関連付けられている予算([課金] > [予算とアラート] の下)にアクセスし、[Pub/Sub トピックをこの予算に接続する] のチェックボックスをオンにして、課金データの Pub/Sub トピックを設定できます。これにより、後でリッスンできる Pub/Sub トピックが作成されます。詳細な手順については、ドキュメント全体をご覧ください。
Pub/Sub 課金トピックを作成したら、このトピックをリッスンし、データに適宜対応する Pub/Sub の関数を作成できます。データは JSON データとして送信されます。このデータには、これまでの使用量、予算額、現在の請求期間の開始日などの有用な情報が含まれます。
Cloud Functions の関数を使用してこのデータを受信する方法について詳しくは、Google Cloud ドキュメントをご覧ください。ただし、Cloud Functions for Firebase を使用して関数をデプロイしている場合は、一般的なプロセスが少し簡単になります(Firebase のドキュメントをご覧ください)。このプロセスのサンプル チュートリアルについては、こちらの動画をご覧ください。
データの受信後、さまざまな方法でこのデータに対応できます。これには次のような方法があります。
支出が特定のしきい値に達したときに、Slack チャンネルや Discord チャンネルにアラートを送信するか、テキスト メッセージを送信する。
過去のデータと比較して支出を分析し、何かが異常である可能性がある場合に警告する
課金レベルが高くなりすぎた場合に、Remote Config を介してアプリに変更を加える
アカウントから課金サービスをプログラムで削除して Firebase プロジェクトを完全に無効にする