使用量のモニタリング
このページでは、Firestore の使用状況をモニタリングし、アプリの潜在的な問題を特定する方法について説明します。
使用状況ダッシュボード
Google Cloud コンソールと Firebase コンソールの使用状況ダッシュボードを使用して、ドキュメントの読み取り、書き込み、削除の推移を確認します。
アクセス制御
使用状況ダッシュボードを使用するには、monitoring.timeSeries.list
IAM 権限が必要です。プロジェクト オーナー、編集者、閲覧者のロールにより、この権限が付与されます。Cloud Monitoring ロールまたはカスタムロールによってこの権限を付与することもできます。
データベース使用状況ダッシュボード
Firestore データベースの使用状況の指標を確認するには、Google Cloud コンソールでデータベースの [使用状況] ページを開きます。
Google Cloud コンソールで [データベース] ページに移動します。
データベースのリストから、必要なデータベースを選択します。
ナビゲーション メニューで [使用状況] をクリックします。
ページに表示されるメッセージのリンクをクリックして、データベースの使用状況を確認します。
集計された使用状況ダッシュボード
プロジェクトに複数の Firestore データベースが含まれている場合は、Google Cloud コンソールまたは Firebase コンソールに集計された使用状況の指標が表示されます。プロジェクト レベルの使用状況ダッシュボードには、すべてのネイティブ モード Firestore データベースの使用状況指標が組み合わされて表示されます。このダッシュボードには、Datastore モード Firestore データベースの使用状況は表示されません。
Google Cloud コンソール
Google Cloud コンソールで [プロジェクトの使用状況] ページに移動します。
Google Cloud プロジェクトの [プロジェクトの使用状況] に移動
プロジェクトの使用状況ダッシュボードには、ドキュメントのオペレーションの推移が次のように表示されます。
Firebase コンソール
使用状況ダッシュボードと請求レポート
Firebase コンソールと Cloud Console の Firestore 使用状況ダッシュボードには、使用状況の予想が表示されます。これらは使用量の急増を特定するのに役立ちます。ただし、ダッシュボードには、課金対象のオペレーションは正確には表示されません。課金される使用量はこれよりも多くなる可能性があります。一致しない場合は、請求レポートが使用状況ダッシュボードよりも優先されます。
使用状況ダッシュボードと請求対象の使用量の間に相違が生じるオペレーションには、次のものがあります。
- インポートとエクスポートのオペレーション。これらのオペレーションで行われた読み取りと書き込みは、使用状況ダッシュボードに表示されません。
- NoOps の検証のみの書き込み。ドキュメントの有無のみを検証する書き込みは、課金される読み取りオペレーションに反映されますが、書き込み使用状況ダッシュボードにはそれぞれ「UPDATE_NOOP」と「DELETE_NOOP」と表示されます。
- NoOps の書き込み。フィールド値を変更しない更新や、削除されたドキュメントへの書き込みなど、データベースの変更につながらないオペレーションは、使用状況ダッシュボードに「UPDATE_NOOP」や「DELETE_NOOP」として表示される場合があります。「NOOP」と表示される場合でも、課金対象のオペレーションになります。
折りたたまれた書き込み。同じドキュメントに複数の書き込みを連続して行う場合、使用状況ダッシュボードでは複数の書き込みがまとめて折りたたまれて 1 回としてカウントされる場合があります。使用量を請求する場合、各書き込みが別々にカウントされます。
また、使用状況ダッシュボードは、サーバーのタイムスタンプ、数値の増分、配列ユニオン オペレーションなどのフィールド変換の場合も書き込みを折りたたみます。フィールド変換については、使用状況ダッシュボードは複数のオペレーションを 1 回のオペレーションとしてカウントする場合があります。
- 0 件の結果を返すクエリ。0 件の結果を返すクエリについては、1 回の読み取りオペレーションに対する費用が発生します。この使用量は課金の対象になりますが、使用状況ダッシュボードには表示されません。
- インデックス エントリの読み取りの読み取りオペレーション。この使用量は課金の対象になりますが、使用状況ダッシュボードには表示されません。 たとえば、集計クエリでは読み取られたインデックス エントリに対して課金されますが、この使用量は使用状況ダッシュボードには表示されません。
削除用使用状況ダッシュボードには、有効期間(TTL)ポリシーで実行される自動有効期限オペレーションはキャプチャされません。Cloud Monitoring の TTL 指標を参照してください。
セキュリティ ルールの使用
また、Firebase コンソールにはセキュリティ ルールの評価ダッシュボードが用意され、ルール呼び出しを一目で確認できます。Cloud Monitoring の詳細な分析でこのダッシュボードを補足できます。
Cloud Monitoring の指標
Cloud Monitoring は、Google Cloud プロダクトから指標、イベント、メタデータを収集します。Firestore コンソールの使用状況ダッシュボードにも同じ指標データが表示されます。カスタム ダッシュボードと使用状況アラートを設定するには、Cloud Monitoring を使用します。
Cloud Monitoring には、Firestore の次の指標が示されます。
指標名 | 説明 |
---|---|
ドキュメントの読み取り |
ドキュメントの読み取りの成功回数。読み取りのタイプ(LOOKUP または QUERY)でこの指標を分類できます。 この指標には、マネージド エクスポート オペレーションまたは一括削除オペレーションによる読み取りは含まれません。 |
ドキュメントの書き込み |
ドキュメントの書き込みの成功回数。書き込みのタイプ(CREATE または UPDATE)でこの指標を分類できます。 この指標には、マネージド インポート オペレーションによる書き込みは含まれません。 |
ドキュメントの削除 | ドキュメントの削除の成功回数。 |
アクティブな接続 |
データベースへのアクティブな接続数。 アクティブなモバイル SDK とウェブ SDK はそれぞれ接続を 1 つ維持し、その接続は複数のスナップショット リスナー間で共有できます。サーバー クライアント ライブラリは、スナップショット リスナーごとに 1 つの接続を作成します。 |
スナップショット リスナー |
すべてのアクティブな接続全体でのスナップショット リスナーの数。 |
有効期間による削除数 |
有効期間(TTL)ポリシーによって削除されたドキュメントの合計数。 |
有効期間の期限切れから削除までの遅延 |
有効期間(TTL)ポリシーに基づいてドキュメントが期限切れになってから実際に削除されるまでの経過時間。 |
- リアルタイム アップデートの使用状況
アクティブな接続とスナップショット リスナーの指標を使用して、リアルタイム アップデートの使用状況を測定します。
たとえば、ユーザーがスマートフォン上でアプリを開くとします。するとアプリは Firestore に接続し、10 個のクエリにサブスクライブします。これにより、アクティブな接続の指標は 1、スナップショット リスナーの指標は 10 増加します。
- サンプリング レート
Firestore の指標は 1 分ごとにサンプリングされますが、更新がダッシュボードに表示されるまでに最長で 4 分かかることがあります。
レイテンシの指標
バックエンド レイテンシの指標は、一般的な Google Cloud Firestore の指標を介して利用できます。
たとえば、p50 レイテンシのグラフは、Cloud コンソールの Metrics Explorer ビューで確認できます。
Cloud Monitoring ダッシュボードを設定する
事前定義されたダッシュボードを表示する方法や、ダッシュボードを設定する方法については、モニタリング ダッシュボードを使用するをご覧ください。