Google I/O 2023 での Firebase の最新情報をご覧ください。詳細

Cloud Firestore のアクティビティをモニタリングする

このページでは、Cloud Firestore の使用状況をモニタリングし、アプリの潜在的な問題を特定する方法について説明します。アプリの使用状況を調べることによって、請求金額を予測することもできます。さらに、何か問題があると思われる場合は、データベースのオペレーションを明確に把握することがトラブルシューティングに役立ちます。

使用状況ダッシュボード

Google Cloud Platform Console と Firebase コンソールには、ドキュメントの読み取り、書き込み、削除の推移を表示する Cloud Firestore 使用状況ダッシュボードがあります。

GCP Console

Cloud Firestore の使用状況のページに移動(GCP Console)

GCP Console の Cloud Firestore 使用状況ダッシュボード。

アクセス制御

使用状況ダッシュボードを使用するには、monitoring.timeSeries.list Cloud IAM 権限が必要です。プロジェクト オーナー、編集者、閲覧者のロールにより、この権限が付与されます。Cloud Monitoring ロールまたはカスタムロールによってこの権限を付与することもできます。

Firebase コンソール

Cloud Firestore の使用状況のページに移動(Firebase コンソール)

Firebase コンソールの Cloud Firestore 使用状況ダッシュボード。

使用状況ダッシュボードと請求レポート

Firebase コンソールと Cloud Console の Cloud Firestore 使用状況ダッシュボードには、使用状況の予想が表示されます。これらは使用量の急増を特定するのに役立ちます。ただし、ダッシュボードには、課金対象のオペレーションは正確には表示されません。課金される使用量はこれよりも多くなる可能性があります。一致しない場合は、請求レポートが使用状況ダッシュボードよりも優先されます。

使用状況ダッシュボードと課金される使用量の不一致の原因となるオペレーションには、次のようなものがあります。

  • インポートとエクスポートのオペレーション。これらのオペレーションで行われた読み取りと書き込みは、使用状況ダッシュボードに表示されません。
  • NoOps の検証のみの書き込み。ドキュメントの有無のみを検証する書き込みは、課金される読み取りオペレーションに反映されますが、書き込み使用状況ダッシュボードにはそれぞれ「UPDATE_NOOP」と「DELETE_NOOP」と表示されます。
  • NoOps の書き込み。フィールド値を変更しない更新や、削除されたドキュメントへの書き込みなど、データベースの変更につながらないオペレーションは、使用状況ダッシュボードに「UPDATE_NOOP」や「DELETE_NOOP」として表示される場合があります。「NOOP」と表示される場合でも、課金対象のオペレーションになります。
  • 折りたたまれた書き込み。同じドキュメントに複数の書き込みを連続して行う場合、使用状況ダッシュボードでは複数の書き込みがまとめて折りたたまれて 1 回としてカウントされる場合があります。使用量を請求する場合、各書き込みが別々にカウントされます。

    また、使用状況ダッシュボードは、サーバーのタイムスタンプ、数値の増分、配列ユニオン オペレーションなどのフィールド変換の場合も書き込みを折りたたみます。フィールド変換の場合、使用状況ダッシュボードは複数のオペレーションを 1 回のオペレーションとしてカウントします。

  • 0 件の結果を返すクエリ。0 件の結果を返すクエリについては、1 回の読み取りオペレーションに対する費用が発生します。この使用量は課金の対象になりますが、使用状況ダッシュボードには表示されません。
  • COUNT などの集約クエリに関連付けられている読み取りオペレーション。この使用量は課金の対象になりますが、使用状況ダッシュボードには表示されません。

セキュリティ ルールの使用

また、Firebase コンソールにはセキュリティ ルールの評価ダッシュボードが用意され、ルール呼び出しを一目で確認できます。Cloud Monitoring の詳細な分析でこのダッシュボードを補足できます。

[ルール] ページに移動

Firebase コンソールの Cloud Firestore ルールのモニタリング ダッシュボード。

1 日の割り当て

Firebase プロジェクトを作成すると、Google Cloud にもプロジェクトが作成されます。GCP Console の [App Engine の割り当て] ページでは、読み取り、書き込み、インデックス書き込み、削除、保存データ、ネットワーク下り(外向き)など、日々の Cloud Firestore の使用状況に関する情報が追跡されます。

[割り当て] ページに移動

[App Engine の割り当て] ページでの Cloud Firestore の使用状況。

Cloud Monitoring

Cloud Monitoring は、Google Cloud プロダクトから指標、イベント、メタデータを収集します。Cloud Firestore コンソールの使用状況ダッシュボードにも同じ指標データが表示されます。カスタム ダッシュボードと使用状況アラートを設定するには、Cloud Monitoring を使用します。

Cloud Monitoring には、Cloud Firestore の次の指標が含まれます。

指標名 説明
ドキュメントの読み取り

ドキュメントの読み取りの成功回数。読み取りのタイプ(LOOKUP または QUERY)でこの指標を分類できます。

この指標には、マネージド エクスポート オペレーションによる読み取りは含まれません。

ドキュメントの書き込み

ドキュメントの書き込みの成功回数。書き込みのタイプ(CREATE または UPDATE)でこの指標を分類できます。

この指標には、マネージド インポート オペレーションによる書き込みは含まれません。

ドキュメントの削除 ドキュメントの削除の成功回数。
アクティブな接続

データベースへのアクティブな接続数。

アクティブなモバイル SDK とウェブ SDK はそれぞれ接続を 1 つ維持し、その接続は複数のスナップショット リスナー間で共有できます。サーバー クライアント ライブラリは、スナップショット リスナーごとに 1 つの接続を作成します。

スナップショット リスナー

すべてのアクティブな接続全体でのスナップショット リスナーの数。

有効期間による削除数

有効期間(TTL)ポリシーによって削除されたドキュメントの合計数。

有効期間の期限切れから削除までの遅延

有効期間(TTL)ポリシーに基づいてドキュメントが期限切れになってから実際に削除されるまでの経過時間。

リアルタイム アップデートの使用状況

アクティブな接続とスナップショット リスナーの指標を使用して、リアルタイム アップデートの使用状況を測定します。

たとえば、ユーザーがスマートフォン上でアプリを開くとします。するとアプリは Cloud Firestore に接続し、10 個のクエリにサブスクライブします。これにより、アクティブな接続の指標は 1、スナップショット リスナーの指標は 10 増加します。

サンプリング レート

Cloud Firestore の指標は 1 分ごとにサンプリングされますが、更新がダッシュボードに表示されるまでに最長で 4 分かかることがあります。

Cloud Monitoring ダッシュボードを設定する

Cloud Firestore の指標を使用してダッシュボードを設定するには、カスタム ダッシュボードを管理するダッシュボード ウィジェットを追加するをご覧ください。

次のステップ