Cloud Monitoring でデータベースをモニタリングする

このページでは、Cloud Monitoring ダッシュボードを使用して、使用可能な指標を表示する方法、カスタム ダッシュボードを作成する方法、アラートを設定する方法について説明します。

MongoDB 互換の Firestore の指標を表示する

MongoDB 互換の Firestore のさまざまな指標を表示してグラフを作成するには、次のいずれかを使用します。

  • コンソールの [Firestore] セクションにある [Monitoring] ページ。 Google Cloud このページには、事前定義されたモニタリング ダッシュボードが表示されます。カスタム ダッシュボードを最大 1 つ作成することもできます。データベースの [モニタリング] ページにアクセスする手順は次のとおりです。

    1. Google Cloud コンソールで、Firestore の [データベース] ページを開きます。

      [データベース] に移動

    2. リストからデータベースを選択します。

    3. ナビゲーション メニューで [モニタリング] をクリックしてダッシュボードを開きます。

  • コンソールの Cloud Monitoring 内の Metrics Explorer。 Google Cloud グラフの作成の詳細については、Metrics Explorer でグラフを作成するをご覧ください。

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

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

Cloud Monitoring API を使用して、MongoDB 互換の Firestore のパフォーマンスは次のリソースでモニタリングされます。

関連情報 説明
firestore.googleapis.com/Database projectlocationdatabase_id の分類を提供するモニタリング対象リソースタイプ。特定の名前なしで作成されたデータベースの場合、database_id ラベルは (default) になります。

指標

Firestore の指標の一覧については、Firestore の指標をご覧ください。次のセクションでは、使用可能な指標の一部について説明します。

サービス ランタイム指標

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

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

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

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

api/request_latencies

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

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

オペレーション指標を文書化する

Firestore は、読み取り、書き込み、削除の回数を提供します。書き込み指標には、「CREATE」オペレーションと「UPDATE」オペレーションの分類が表示されます。これらの指標は CRUD オペレーションに対応しています。

次の指標を使用して、データベースの読み取りが多いか書き込みが多いか、新しいドキュメントと削除されたドキュメントの比率を確認できます。

  • document/delete_ops_count: ドキュメントの削除の成功回数。
  • document/read_ops_count: クエリまたはルックアップからドキュメントの読み取りが成功した回数。
  • document/write_ops_count: ドキュメントの書き込みの成功回数。

インデックス指標

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

  • index/write_count: インデックス書き込みの数。

TTL 指標

MongoDB 互換の Firestore の TTL 指標は、適用された TTL ポリシーの効果をモニタリングするために使用されます。

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

カスタム Cloud Monitoring ダッシュボードを作成する

Cloud Monitoring では、カスタム ダッシュボードを使用して、関連する情報を体系的に表示できます。たとえば、本番環境のプロジェクトのパフォーマンス指標とアラート ポリシーを表示するダッシュボードを作成できます。

カスタム ダッシュボードの設定の詳細については、カスタム ダッシュボードを管理するダッシュボード ウィジェットを追加するをご覧ください。

アラート ポリシーを作成する

Cloud Monitoring では、アラートを作成して、指標の条件が変更されたときに通知を受け取ることができます。これらのアラートを使用すると、ユーザーに影響が及ぶ前に潜在的な問題を通知できます。

アラートの作成の詳細については、指標しきい値のアラート ポリシーを作成するをご覧ください。

レイテンシ アラート ポリシーを作成する次の例について考えてみます。アラート ポリシーは、5 分間のローリング ウィンドウで p99 レイテンシを確認します。p99 レイテンシが 5 分間 250 ミリ秒を超えると、アラートがトリガーされます。

Console

  1. Google Cloud コンソールで、[モニタリング] ページに移動して、 [アラート] を選択します。

    [モニタリング] に移動

  2. [ポリシーを作成] を選択します。

  3. [Consumed API] リソースから [Request Latencies] 指標を選択します。

  4. Firestore ネイティブ データベースの firestore.googleapis.com にサービス フィルタを追加。

  5. [次へ] をクリックしてトリガーを構成します。

  6. [条件タイプ] を [しきい値] として選択します。

    しきい値条件は、しきい値 250 ms に設定されています。アラートは、ローリング ウィンドウの期間全体(5 分間)に p99 レイテンシ値が同じ状態の場合にトリガーされます。

  7. [しきい値] を 250 に設定します。

  8. [次へ] をクリックして通知を構成します。

  9. アラート ポリシー名を設定し、[次へ] をクリックします。

  10. アラート構成を確認して [ポリシーを作成] をクリックします。

MQL

Monitoring Query Language(MQL)クエリを使用して、同じレイテンシ アラート ポリシーを実装できます。MQL の使用例については、サンプル MQL クエリをご覧ください。

      fetch consumed_api
      | metric 'serviceruntime.googleapis.com/api/request_latencies'
      | filter (resource.service == 'firestore.googleapis.com')
      | group_by 5m,
          [value_request_latencies_percentile:
            percentile(value.request_latencies, 99)]
      | every 5m
      | condition val() > 0.25 's'