Data Boost 使用状況をモニタリングする

このページでは、Cloud Monitoring と Spanner の監査ログを使用して Spanner Data Boost の使用状況をモニタリングし、分析する方法について説明します。

Cloud Monitoring には、時間経過に伴う合計使用量を追跡し、その使用状況をユーザー別に分類する機能があります。Spanner の監査ログでは、ユーザーまたは BigQuery ジョブ ID による指標の提供など、より柔軟な使用状況分析が可能になります。

Cloud Monitoring を使用して Data Boost の使用状況を追跡する

Data Boost の全体的な使用量を追跡する手順は次のとおりです。

  1. Google Cloud コンソールで [Monitoring] に移動します。
    [モニタリング] に移動
  2. ナビゲーション メニューに [Metrics Explorer] が表示されている場合は選択します。 それ以外の場合は、[リソース]をクリックして [Metrics Explorer] を選択します。
  3. ページの上部で期間を選択します。
  4. [指標] プルダウン リストで [リソースまたは指標名でフィルタリングする] フィールドに「spanner」と入力し、Enter を押して検索を絞り込みます。
  5. [指標] リストで、[Cloud Spanner インスタンス] > [インスタンス] > [処理ユニット(秒)] を選択し、[適用] をクリックします。

    これにより、すべての Spanner インスタンスにまたがる Data Boost の集計使用量の折れ線グラフが作成されます。

  6. 特定のインスタンスの使用状況を表示する手順は次のとおりです。

    1. [+ フィルタを追加] をクリックしてフィルタを作成します。
    2. [ラベル 1] プルダウン リストで [instance_id] を選択します。
    3. [値 1] テキスト フィールドに、使用状況を表示するインスタンスの ID を入力または選択します。
  7. すべてのインスタンスの使用状況の内訳を表示するには、次の手順を行います。

    1. [フィルタ] フィールドの横にあるゴミ箱アイコンをクリックして、フィルタをクリアします。
    2. [グループ条件] の [ラベル] プルダウン リストで [instance_id] を選択し、次に [グループ化関数リスト] の [合計] を選択します。
  8. プリンシパル別に使用状況を分類するには、[グループ条件] で [ラベル] リストから [credential_id] を選択し、[グループ化関数] リストで [合計] を選択します。

次の例は、プリンシパルによる処理ユニットの秒数を示しています。

ユーザーごとの PU 秒

監査ログを使用して Data Boost の使用状況を分析する

Spanner の監査ログを使用すると、Data Boost の使用状況をより柔軟に分析できます。Cloud Monitoring と同様に、インスタンスやプリンシパルごとの使用状況を時系列で分類する機能に加えて、Spanner 監査ログ(有効化されて使用可能な場合)はデータベースや BigQuery ジョブ ID で時系列での使用状況の内訳を調べることもできます。

監査ログを有効にすると、追加料金が発生する可能性があります。Logging の料金については、Google Cloud オブザーバビリティの料金: Cloud Logging をご覧ください。

Data Boost の使用状況の監査ログを有効にする

Data Boost の使用状況データを収集するには、Spanner のデータアクセス監査ログを有効にする必要があります。方法は次のとおりです。

  1. Google Cloud コンソールでデータアクセスの監査ログを構成するの手順に従います。
  2. Spanner API サービスのデータ読み取りログタイプを有効にします。
  3. BigQuery ジョブの SQL テキストで Data Boost の使用量を取得するには、BigQuery の監査ログも有効にしてください。

プリンシパルごとの使用状況の表示

監査ログに対してクエリを実行して、ユーザーごとの Data Boost の使用状況を表示する手順は次のとおりです。

  1. Google Cloud コンソールのログ エクスプローラに移動します。

    [ログ エクスプローラ] に移動

  2. ナビゲーション メニューで、[ログ分析] をクリックします。

  3. 過去 7 日間のユーザーとデータベースごとの使用状況を表示するには、次のクエリを実行します。使用量を表示する期間を変更するには、WHERE 句の timestamp 式を変更します。

    SELECT
      SUM(CAST(JSON_VALUE(labels.data_boost_usage) AS INT64)) AS usage,
      REGEXP_EXTRACT(
        proto_payload.audit_log.resource_name,
        'projects/[^/]+/instances/[^/]+/databases/[^/]+') AS database,
      proto_payload.audit_log.authentication_info.principal_email AS principal_email
    FROM `PROJECT_NAME.global._Default._AllLogs`
    WHERE
      timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
      AND resource.type = 'spanner_instance' AND operation.last IS NULL
      AND JSON_VALUE(labels.data_boost_usage) != ''
    GROUP BY database, principal_email;
    

    PROJECT_NAME をプロジェクト名に置き換えます。

次の例は、4 つのプリンシパルの処理単位の使用量を示しています。

監査ログからのユーザーごとの Data Boost の使用量

BigQuery ジョブ ID 別の使用状況の表示

監査ログにクエリを実行して、データベース、ユーザー、BigQuery のジョブ ID 別に Data Boost の使用状況の内訳を表示する手順は次のとおりです。

  1. Google Cloud コンソールのログ エクスプローラに移動します。

    [ログ エクスプローラ] に移動

  2. ナビゲーション メニューで、[ログ分析] をクリックします。

  3. 次のクエリを実行します。

    SELECT
      SUM(CAST(JSON_VALUE(labels.data_boost_usage) AS INT64)) AS usage,
      REGEXP_EXTRACT(
        proto_payload.audit_log.resource_name,
        'projects/[^/]+/instances/[^/]+/databases/[^/]+') AS database,
      proto_payload.audit_log.authentication_info.principal_email AS principal_email,
      IFNULL(JSON_VALUE(labels.data_boost_workload_id), 'not from BQ') AS job_id
    FROM `PROJECT_NAME.global._Default._AllLogs`
    WHERE
      timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
      AND resource.type = 'spanner_instance' AND operation.last IS NULL
      AND JSON_VALUE(labels.data_boost_usage) != ''
    GROUP BY database, principal_email, job_id;
    

    PROJECT_NAME をプロジェクト名に置き換えます。

次の例は、BigQuery ジョブ ID 別の使用状況を示しています。

ジョブ ID 別の Data Boost 使用量

BigQuery SQL テキストごとに使用状況を表示

これらのジョブの SQL テキストによって集計された複数の BigQuery ジョブの Data Boost の使用量を表示する手順は次のとおりです。

  1. Google Cloud コンソールのログ エクスプローラに移動します。

    [ログ エクスプローラ] に移動

  2. ナビゲーション メニューで、[ログ分析] をクリックします。

  3. 次のクエリを実行します。

    SELECT
      SUM(
        CAST(
          JSON_VALUE(db.labels.data_boost_usage)
          AS INT64)) AS usage,
      JSON_VALUE(
        bq.proto_payload.audit_log.metadata.jobInsertion.job.jobConfig.queryConfig.query)
        AS bq_query
    FROM
      `PROJECT_NAME.global._Default._AllLogs` db,
      `PROJECT_NAME.global._Default._AllLogs` bq
    WHERE
      db.timestamp > TIMESTAMP_SUB(
        CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
      AND db.resource.type = 'spanner_instance'
      AND JSON_VALUE(db.labels.data_boost_usage) != ''
      AND db.operation.last IS NULL
      AND bq.timestamp > TIMESTAMP_SUB(
        CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
      AND bq.proto_payload.audit_log.method_name
        = 'google.cloud.bigquery.v2.JobService.InsertJob'
      AND bq.resource.type = 'bigquery_project'
      AND JSON_VALUE(
        bq.proto_payload.audit_log.metadata.jobInsertion.job.jobConfig.queryConfig.query)
        IS NOT NULL
      AND JSON_VALUE(db.labels.data_boost_workload_id)
        = REGEXP_EXTRACT(bq.proto_payload.audit_log.resource_name, '[^/]*$')
    GROUP BY bq_query
    ORDER BY usage DESC
    

    PROJECT_NAME をプロジェクト名に置き換えます。

次の例は、SQL テキストによる Data Boost の使用量を示しています。

SQL テキストによる Data Boost の使用量

Data Boost アラートを作成する

Data Boost の使用量が事前定義されたしきい値を超えたときに発行されるアラートを作成するには、Data Boost の使用量に関するアラートを設定するをご覧ください。

次のステップ