Firebase Realtime Database のパフォーマンスをモニタリングし、アプリの潜在的な問題を特定するには、いくつかの方法があります。アプリの発着信の帯域幅と負荷を調べて、請求額を予想することもできます。さらに、何か問題があると思われる場合は、データベースのオペレーションを明確に把握することがトラブルシューティングに役立ちます。
このページでは、Realtime Database のパフォーマンス モニタリングについて説明します。使用状況のモニタリングについては、データベース使用状況のモニタリングをご覧ください。
Realtime Database モニタリング ツールを使用する
Realtime Database のパフォーマンスに関するデータを収集するには、必要な粒度に応じていくつかの異なるツールを使用します。
Realtime Database プロファイラ ツールを使用する
Realtime Database プロファイラ ツールは、データベースの読み取り / 書き込みオペレーションの概要をリアルタイムで提供します。このレポートには、インデックス付けされていないクエリに加えて、各オペレーションの速度とペイロード サイズに関する情報が含まれています。ただし、接続オーバーヘッドに関する履歴情報や統計情報は含まれていないため、料金の見積もりには使用しないでください。
プロファイラ ツールの使用について詳しくは、データベースのプロファイルを作成するをご覧ください。
Firebase コンソールの使用
Firebase コンソールの [使用状況] タブには、データベースへの同時接続数、保存中のデータの量、送信帯域幅(プロトコルと暗号化のオーバーヘッドを含む)、データベースの負荷が 1 分間隔で表示されます。[使用状況] タブでは、データベースの全体的なパフォーマンスをより正確に把握できますが、パフォーマンスに関する潜在的な問題のトラブルシューティングを行うのに十分なレベルでドリルダウンできない場合があります。
Cloud Monitoring を使用する
Google Cloud の Cloud Monitoring では、Metrics Explorer を使用して個別のパフォーマンス指標を表示できます。また、各種のパフォーマンス指標の組み合わせを時系列で表示するグラフを含むさまざまなダッシュボードを作成できます。Realtime Database を Cloud Monitoring と統合すると、情報の粒度が最も細かくなります。
Cloud Monitoring を設定する手順については、データベース使用状況のモニタリングをご覧ください。
特定の Cloud Monitoring の指標を使用してパフォーマンスの問題を発見するためのヒントについては、以降のセクションをご覧ください。
Cloud Monitoring でパフォーマンスをモニタリングする
稼働時間やレイテンシなどのパフォーマンスに関する問題が発生した場合は、Cloud Monitoring を使用して以下の指標をモニタリングできます。すべての指標タイプ名には firebasedatabase.googleapis.com/
という接頭辞が付きます。
指標名 | 説明 |
---|---|
データベースの負荷 |
|
超過によるネットワーク無効化 |
|
超過によるストレージ無効化 |
|
有用な知見と概要を得るには、ダッシュボードのグラフに表示する指標を組み合わせます。たとえば、次のような組み合わせが考えられます。
- オペレーション:
io/database_load
指標を使用して、各オペレーション タイプで使用されているデータベースの負荷の総量を確認できます。io/database_load
をオペレーション タイプでグループ化し、タイプごとにトラブルシューティングを行うようにしてください。 - ストレージ:
storage/limit
とstorage/total_bytes
を使用して、ストレージの使用率を Realtime Database ストレージ制限と関連させながらモニタリングできます。また、storage/disabled_for_overages
を追加して、ストレージ制限の超過によってアプリのダウンタイムが発生したかどうかを確認することもできます。 - SSL オーバーヘッド:
network/https_requests_count
を使用して、データベースが受信した SSL 接続リクエストの数をモニタリングし、reused_ssl_session
フィルタを使用して既存の SSL セッション チケットを再利用したリクエストを割り出すことができます。これをnetwork/sent_bytes_count
とnetwork/sent_payload_and_protocol_bytes_count
に照らして測定し、アプリが SSL セッション チケットを効率的に使用しているかどうかをモニタリングできます。
Cloud Monitoring を使用してアラートを設定し、Realtime Database 指標に基づいて通知を受け取ることもできます。たとえば、io/database_load
が特定のしきい値に近づいている場合に通知を受け取ることができます。
Cloud Monitoring で使用可能な Realtime Database 指標の一覧をご覧ください。
データベースの負荷の種類
io/database_load
指標は、負荷をもたらしたオペレーション タイプのラベルも示します。測定される可能性のあるオペレーション タイプは次のとおりです。
admin
: ルールの設定やプロジェクト メタデータの読み込みなどの管理オペレーションです。auth
: サービス アカウントからの認証または単一アカウントの Firebase Authentication を確認します。client_management
: 同時接続の追加や削除を処理します。これには、削除時の切断オペレーションも含まれます。get_shallow
:shallow=true
を設定して REST GET からデータを取得します。get
: REST GET オペレーションを処理します。listen
: 接続されたクライアントから、on
オペレーションおよびonce
オペレーションの初期データを取得します。on_disconnect
: クライアントからの切断オペレーション時に登録します。put
: クライアントからのset
オペレーションまたは REST PUT オペレーションを処理します。transaction
: 条件付き REST リクエストからのトランザクションまたはクライアントからのtransaction
オペレーションを実行します。update
:update
オペレーションまたは REST PATCH リクエストを処理します。
Cloud Monitoring でセキュリティ ルールをモニタリングする
セキュリティ ルールの評価を分析することもできます。すべての指標タイプ名には firebasedatabase.googleapis.com/
という接頭辞が付きます。
指標名 | 説明 |
---|---|
ルール評価 | rules/evaluation_count 。書き込みまたは読み取りリクエストに応答して実行された Realtime Database ルールの評価数。この指標はリクエストの結果(ALLOW、DENY、ERROR)で分類できます。 |
必要に応じて、特定の評価結果、ALLOW、DENY、ERROR でフィルタリングして、ルールの評価に関する Cloud Monitoring グラフを調整します。グラフの設定とカスタマイズについては、データベース使用状況のモニタリングをご覧ください。
Cloud Monitoring で使用可能な Realtime Database 指標の一覧をご覧ください。