BigQuery リアルタイムアノマリー検出
DoiT のほぼリアルタイムの BigQuery 用アノマリー検出は、すべてのリージョンとゾーンにわたり、プロジェクト単位でオンデマンドおよび予約ワークロードを監視します。検出システムは、30 分ごとに query タイプのジョブの生データを取得し(statement_type が SCRIPT であるマルチステートメントクエリジョブを除外)、オンデマンド料金を適用してコストを推定します。この推定コストがアノマリー検出のベースラインとして使用されます。
必要な権限
BigQuery のリアルタイムアノマリー検出を有効にするには、次の要件を満たす必要があります。
-
DoiT アカウントで Manage Settings 権限を持っていること
-
対象プロジェクトに対して Role Administrator (
roles/iam.RoleAdmin) IAM ロールが付与されていること
BigQuery のリアルタイムアノマリーを有効にする
新しいプロジェクトを接続する際、または既存のプロジェクトを編集する際に、BigQuery のリアルタイムアノマリー検出を有効にできます(Google Cloud リソースを接続を参照してください)。複数のプロジェクトでこの機能を有効にするには、各プロジェクトごとに同じ手順を繰り返してください。
スロット予約を監視するには、すべての予約管理プロジェクトで BigQuery のリアルタイムアノマリーを有効にする必要があります。BigQuery 予約の管理プロジェクトを特定するを参照してください。
プロジェクト接続時に有効化する
-
DoiT コンソール にサインインし、トップナビゲーションのメガメニューから Data ingestion and integrations > Google Cloud を選択します。
-
Connect リストから Project を選択します。
-
Real-time Anomalies – BigQuery チェックボックスを選択します。必要な権限を表示するには、この機能を展開できます。詳細は、Security and data access policy: Feature permissionsを参照してください。

-
Generate gcloud commands を選択します。
-
サイドパネルに表示される手順に従って、サービスアカウントを設定してください。詳細は、Google Cloud プロジェクトを接続を参照してください。
-
接続が正常に完了すると、Real-time Anomalies – BigQuery 機能のステータスは
Healthyと表示されます。
既存の接続で有効化する
接続済みプロジェクトにリアルタイムアノマリーを追加するには、次の手順を実行してください。
-
Google Cloud access & features ページで、対象のサービスアカウントを探します。
-
プロジェクト接続の横にあるケバブメニュー(⋮)を選択し、Edit を選択します。
-
Real-time Anomalies – BigQuery チェックボックスを選択して機能を追加します。
-
Generate gcloud commands を選択します。
-
サイドパネルに表示される手順に従って、カスタムロールを更新してください。
-
Done を選択して機能を有効にします。
リアルタイムアノマリー検出のコスト
リアルタイムアノマリー検出機能は、次のように使用状況データを収集します。
-
オンデマンドワークロード: 検出エンジンは BigQuery jobs API を使用して、接続されたプロジェクト内のクエリの生データを収集します。BigQuery jobs API の利用に追加コストは発生しません。
-
予約ワークロード: 検出エンジンは、次の 2 つの情報を組み合わせて使用します。
-
BigQuery Reservation API: 予約の構成情報(ベースラインスロット数とエディション)を取得します。BigQuery Reservation API の利用に追加コストは発生しません。
-
INFORMATION_SCHEMA: 予約使用状況に関する情報を取得するためにメタデータビューをクエリします。これには追加コストが発生する可能性があります。影響を最小限に抑えるため、これらのクエリはオートスケーリングイベントが検出された場合にのみ実行されます。
-
BigQuery のリアルタイムアノマリーを無効にする
BigQuery のリアルタイムアノマリー機能を無効にするには、次のコマンドを実行して DoiT カスタムロールに付与された権限を取り消してください(<ROLE_NAME> と <PROJECT_ID> を正しい値に置き換えてください)。
gcloud iam roles update <ROLE_NAME> --project=<PROJECT_ID> --remove-permissions=bigquery.jobs.create,bigquery.jobs.get,bigquery.jobs.list,bigquery.jobs.listAll,bigquery.reservations.get,bigquery.reservations.list,monitoring.timeSeries.list,monitoring.metricDescriptors.get
BigQuery 予約の管理プロジェクトを特定する
BigQuery のコミットメントと予約は管理プロジェクトに関連付けられており、そのプロジェクトに対してコミット済みスロットの料金が請求されます(詳細は Specifying an administration project を参照してください)。
複数の BigQuery 管理プロジェクトを使用している場合、それらを特定する最も簡単な方法は、コンソールで次の設定を使用してレポートを実行することです。
-
Filter results: Service が
BigQuery Reservation API(特定のサービスで絞り込むと Provider フィルターが自動的に追加されます。Select provider を参照してください) -
Group by: Project/Account ID, SKU
以下のサンプルレポートは、直近 3 か月間に BigQuery 予約の請求対象となった Google Cloud プロジェクトを示しています。これらが BigQuery Reservations の管理プロジェクトであり、Real-time Anomalies – BigQuery 機能を有効にしておく必要があります。
