監査データを使用して BigQuery のアクティビティを分析する
概要
Google Cloud は、関連する管理アクティビティおよびアクセスを記録するために BigQuery audit logs を生成します。これらの監査ログにより、テーブルの作成や削除、スロットの購入、ロードジョブの実行など、BigQuery の使用状況に関連する運用面の懸念事項についてのインサイトを得ることができます。
DoiT の BigQuery Intelligence 機能は、BigQuery Intelligence ダッシュボードに表示されるウィジェット向けに BigQuery 監査ログシンクを設定し、BigQuery の使用状況分析を簡素化します。さらに、BigQuery Intelligence によって収集された監査ログを活用し、Cloud Analytics レポートでデータソースとして BigQuery Intelligence を使用して独自の分析を行うこともできます。これらのレポートは、DoiT Cloud Intelligence に接続した Google Cloud アカウントの Google Cloud 請求プロジェクトでクエリを実行し、そのプロジェクトの BigQuery のコンピュートリソースを使用します。
必要な権限
- Cloud Analytics User
BigQuery Intelligence データを利用してレポートを作成する
BigQuery Intelligence 監査ログシンクのデータを使用してレポートを作成するには、次の手順に従ってください。
-
すでに BigQuery Intelligence を設定済みであることを確認してください。
-
レポートを開き、左側のサイドバー上部にある Change を選択してくださ い。

-
データソースとして BigQuery Intelligence を選択してください。
-
新しいレポートを作成 するか、現在のレポートを Update するかを選択できます。レポートを更新すると、現在のすべての設定が失われる点に注意してください。
リアルタイムで処理するにはレポートが大きすぎる場合、まずは時間範囲を短くし、より具体的なフィルターを適用してから、徐々に範囲を広げてください。予約を使用している場合は、クエリ負荷に対応できる十分なスロット (またはオートスケーリ ングスロット) が利用可能であることを確認してください。
メトリクスとディメンション
Cloud Analytics レポートでは、請求データと BigQuery 監査ログとで異なるメトリクスおよびディメンションのセットを使用します。
メトリクス
BigQuery 監査ログ向けの基本メトリクスおよび拡張メトリクスは、BigQuery AuditData 内の jobStatistics オブジェクトのフィールドを利用します。
基本メトリクス
-
Cost: 処理バイト数 (
totalBilledBytes) を TiB に変換し、オンデマンドスキャン料金 を乗じた値。 -
Usage: 処理バイト数 (
totalBilledBytes) を TiB に変換し、ジョブの CPU 使用率で調整した値。
拡張メトリクス
-
Slots Used: 消費された合計 slot-ms をクエリの実行時間で割った値:
totalSlotMs÷ (endTime−startTime)。 -
Total Slots Ms: クエリジョブで消費された合計 slot-ms。
totalSlotMsに対応します。 -
Total Load Output Bytes: インポートジョブでロードされた合計バイト数。
totalLoadOutputBytesに対応します。 -
Total Tables Processed: クエリで参照された一意のテーブル数の合計。
totalTablesProcessedに対応します。 -
Total Billed Bytes: ジョブの CPU 使用率で調整された処理バイト数。
totalBilledBytesに対応します。 -
Total Processed Bytes: ジョブで処理された合計バイト数。
totalProcessedBytesに対応します。
ディメンション
レポートのデータソースが BigQuery Intelligence の場合に利用できる標準ディメンションは次のとおりです。
-
Event name: イベント名。BigQuery AuditData 内の
jobCompletedEvent.eventNameに対応します。 -
Job Status: ジョブの状態: PENDING、RUNNING、DONE。BigQuery AuditData 内の
jobStatus.stateに対応します。 -
Project/Account name: 完了したジョブの、人間が判読可能な Google Cloud のプロジェクト名。BigQuery AuditData 内の
jobName.projectIdに対応します。 -
Query Priority: クエリに付与された優先度: QUERY_INTERACTIVE または QUERY_BATCH。BigQuery AuditData 内の
jobConfiguration.query.queryPriorityに対応します。 -
Region: 完了したジョブのロケーション。BigQuery AuditData 内の
jobName.locationに対応します。 -
Reservation: 予約名、またはオンデマンドリソース使用時の
unreserved。BigQuery AuditData 内のJobStatistics.reservationに対応します。 -
Resource: 参照対象リソースの URI。たとえば、insert ジョブで作成されたテーブルは、そのテーブルのリソース URI を報告します。BigQueryAuditMetadata メッセージ内の
protoPayload.resourceNameに対応します。 -
Statement Type: ステートメントの種類。例: SELECT、INSERT、CREATE_TABLE、CREATE_MODEL。BigQuery AuditData 内の
jobConfiguration.query.statementTypeに対応します。 -
Caller IP: 呼び出し元の IP アドレス。監査ログ内の
requestMetadata.callerIpに対応します。 -
User: リクエストを行う認証済みユーザー (またはサードパーティプリンシパルに代わるサービスアカウント) のメールアドレス。監査ログ内の
authenticationInfo.principalEmailに対応します。
例
ユーザー別に使用量を分解する

ジョブ ID ごとに時間帯別の重いクエリを特定する

関連情報
-
Google Cloud ドキュメント: BigQuery audit logs の概要
-
Google Cloud ドキュメント: 監査ログにおける呼び出し元の ID