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

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

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

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

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

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

    これにより、すべての 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 の使用量に関するアラートを設定するをご覧ください。

次のステップ