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. [フィルタ] フィールドを使用して、インスタンス ID などのフィルタを追加します。
    2. [+] をクリックして他の属性を追加します。
  7. すべてのインスタンスの使用状況の内訳を表示する手順は次のとおりです。

    1. フィルタ フィールドの横にある [X] アイコンをクリックして、フィルタをすべて消去します。
    2. [集計] 演算子のプルダウン リストで [合計] を選択し、[instance_id] を選択します。
  8. プリンシパル別に使用状況を分類するには、[集計] 演算子のプルダウンで [合計] を選択し、[credential_id] を選択します。

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

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

監査ログを有効にすると、追加料金が発生する可能性があります。Logging の料金については、Google Cloud Observability の料金: 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 の使用量に関するアラートを設定するをご覧ください。

次のステップ