Datastore モードの Firestore のパフォーマンス モニタリングを理解する

Cloud Monitoring は、Google Cloud プロダクトから指標、イベント、メタデータを収集します。 Cloud Monitoring では、カスタム ダッシュボードと使用状況アラートを設定することもできます。

このドキュメントでは、指標の使用、カスタム指標ダッシュボードの学習、アラートの設定について説明します。

モニタリング対象リソース

Cloud Monitoring のモニタリング対象リソースは、仮想マシン、データベース、アプリケーションなどの論理エンティティまたは物理エンティティを表します。モニタリング対象リソースには、ダッシュボードを通じて調査、報告したり、アラートの作成に使用したりできる一意の指標セットが含まれています。各リソースには、リソースに関する追加情報を保持する Key-Value ペアである一連のリソースラベルもあります。リソースラベルは、そのリソースに関連付けられているすべての指標で使用できます。

Cloud Monitoring API を使用して、Datastore モードの Firestore のパフォーマンスを次のリソースでモニタリングします。

関連情報 説明 サポートされているデータベース モード
firestore.googleapis.com/Database(推奨) projectlocation*、database_id の内訳を提供するモニタリング対象リソースタイプ。特定の名前なしで作成されたデータベースの場合、database_id ラベルは (default) になります。 Datastore モードの Firestore でサポートされていない次の指標を除く、両方のモードでサポートされるすべての指標:
  • document/delete_ops_count
  • document/read_ops_count
  • document/write_ops_count
datastore_request Datastore プロジェクトのモニタリング対象リソースタイプ。データベースの内訳は提供されまん。

指標

Firestore には、Firestore ネイティブと Datastore モードの Firestore の 2 つのモードがあります。この 2 つのモードの機能の比較については、データベース モードから選択するをご覧ください。

Datastore モードの Firestore の指標の一覧については、Datastore 指標の Firestore 指標をご覧ください。

サービス ランタイム指標

serviceruntime 指標は、プロジェクトのトラフィックの概要を提供します。これらの指標は、ほとんどの Google Cloud API で使用できます。consumed_api モニタリング対象リソースタイプには、これらの一般的な指標が含まれます。これらの指標は 30 分ごとにサンプリングされ、データが平滑化されます。

serviceruntime 指標の重要なリソースラベルは method です。このラベルは、呼び出された基盤となる RPC メソッドを表します。呼び出す SDK メソッドは、基盤となる RPC メソッドと必ずしも同じ名前であるとは限りません。その理由は、SDKが高レベルの API 抽象化を提供するためです。ただし、アプリケーションと Firestore の相互作用を理解するには、RPC メソッドの名前に基づいて指標を理解することが重要です。

特定の SDK メソッドの基盤となる RPC メソッドを知る必要がある場合は、API のドキュメントをご覧ください。

api/request_count

この指標は、プロトコル(http、gRPC などのリクエスト プロトコル)、レスポンス コード(HTTP レスポンス コード)、response_code_class(2xx、4xx などのレスポンス コード クラス)、grpc_status_code数値 gRPC レスポンス コード)にわたる完了したリクエストの数を示します。この指標を使用して、API リクエスト全体を監視し、エラー率を計算します。

2xx コードを返す api/request_count 指標。
図 1. api/request_count 指標(クリックして拡大)。

図 1 に、サービスとメソッドごとにグループ化された 2xx コードを返すリクエストを示します。2xx コードは、リクエストが成功したことを示す HTTP ステータス コードです。

2xx コードを返す api/request_count 指標。
図 2. 2xx コードを返す api/request_count 指標(クリックして拡大)。

図 2 では、response_code でグループ化された commit を確認できます。この例では、データベースが正常であることを意味する HTTP 200 レスポンスのみが表示されています。

次のサービス ランタイム指標を使用して、データベースをモニタリングします。

datastore_request リソースタイプの api/request_count

api/request_count 指標は、api_method および response_code の内訳を含む datastore_request リソースタイプでも使用できます。代わりにこの指標を使用して、より短いサンプリング期間を利用します。これにより、急増に対応できます。

datastore_request リソースの下の api/request_count 指標
図 3. datastore_request リソースの下の api/request_count 指標(クリックして拡大)
api/request_latencies

api/request_latencies 指標は、完了したすべてのリクエスト間のレイテンシの分布を提供します。

Firestore は、Firestore サービス コンポーネントから指標を記録します。レイテンシの指標には、Firestore がリクエストを受け取ってから、ストレージ レイヤとのやり取りを含め、レスポンスの送信が完了するまでの時間が含まれます。このため、クライアントと Firestore サービス間のラウンドトリップ レイテンシ(rtt)は、これらの指標に含まれません。

レイテンシ分布を計算する api/request_latencies
図 4. レイテンシ分布を計算する api/request_latencies。
api/request_sizes と api/response_sizes

api/request_sizes 指標と api/response_sizes 指標はそれぞれ、ペイロード サイズ(バイト単位)に関する分析情報を提供します。これらは、大量のデータまたは範囲が広すぎるクエリを送信し、大きなペイロードを返す書き込みワークロードを理解するのに役立ちます。

api/request_sizes 指標と api/response_sizes 指標
図 5. api/request_sizes 指標と api/response_sizes 指標(クリックして拡大)。

図 5 に、RunQuery メソッドのレスポンス サイズのヒートマップを示します。サイズは安定していて、中央値は 50 バイト、全体では 10 ~ 100 バイトの間であることがわかります。ペイロード サイズは、伝送制御のオーバーヘッドを除いて、常に非圧縮バイトで測定されることに注意してください。

エンティティ オペレーションの指標

これらの指標は、読み取り(ルックアップとクエリ)と Firestore データベースへの書き込み用のペイロード サイズ(バイト単位)の分布を提供します。値はペイロードの合計サイズを表します。たとえば、クエリから返された結果。これらの指標は、api/request_sizesapi/response_sizes の指標と似ていますが、主な違いはエンティティ オペレーションの指標ではサンプリングがより細かく、内訳は大まかになることです。

たとえば、エンティティ オペレーションの指標は datastore_request モニタリング対象リソースを使用するため、サービスやメソッドの内訳はありません。

  • entity/read_sizes: タイプ別にグループ化された読み取りエンティティのサイズの分布
  • entity/write_sizes: オペレーションによってグループ化された、書き込まれたエンティティのサイズ分布。

インデックス指標

インデックスの書き込みレートは、インデックスのファンアウト率を把握するために document/write_ops_count 指標と比較できます。

  • index/write_count: インデックスの書き込み数。
インデックスの書き込みレートとドキュメントの書き込みレートの比較
図 7. インデックスの書き込みレートとドキュメントの書き込みレートの比較(クリックして拡大)。

図 7 は、インデックスの書き込みレートとドキュメントの書き込みレートを比較する方法を示しています。この例では、ドキュメントの書き込みごとに約 6 つのインデックス書き込みがあります。これは、比較的小さいインデックス ファンアウトレートです。

TTL 指標

TTL 指標は、Firestore ネイティブ データベースと Datastore モードの Firestore データベースの両方で使用できます。これらの指標を使用して、TTL ポリシーの適用状況をモニタリングします。

  • entity/ttl_deletion_count: TTL サービスによって削除されたエンティティの合計数。
  • entity/ttl_expiration_to_deletion_delays: TTL があるエンティティが期限切れになってから、実際に削除されるまでの経過時間。

    TTL の削除で遅延が 24 時間以上になる場合は、サポートにお問い合わせください。

次のステップ