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

-
データソースとして BigQuery Intelligence を選択します。
-
新しいレポートを作成 するか、現在のレポートを Update するかを選択できます。レポートを更新すると、現在のすべての設定は失われる点に注意してください。
レポートが大きすぎてリアルタイムに処理できない場合は、短い時間範囲とより限定的なフィルターから開始し、徐々に範囲を広げてください。Reservation を使用している場合は、クエリ負荷に対して十分なスロット(または autoscaling slots)が利用可能であることを確認してください。
メトリクスとディメンション
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: 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: リクエストを行う認証済みユーザー(または third party principal を代表するサービスアカウント)のメールアドレス。監査ログの
authenticationInfo.principalEmailにマッピングされます。
例
ユーザー別に利用状況を内訳表示する

ジョブ ID ごとの時間帯別ヘビークエリを特定する

参考
-
Google Cloud のドキュメント: BigQuery 監査ログの概要
-
Google Cloud のドキュメント: 監査ログにおける呼び出し元の ID