LoginSignup
1
1

More than 3 years have passed since last update.

Stackdriver LoggingのBigQuery関連ログをBigQueryへエクスポートする方法

Last updated at Posted at 2020-10-12

BigQueryのクエリ履歴を保存しておき、後々調査できるようにするために、Stackdriver LoggingのBigQuery関連ログをBigQueryにエクスポートする方法をまとめました。

BigQueryのデータセットを作成

Stackdriver Loggingからエクスポートしたログテーブルを格納するためのデータセットを作成しておきます。

シンクの作成

以下コマンドで、エクスポートするログエントリのフィルタとエクスポート先を設定するシンクを作成します。
下記コマンドではログのresource-typeをbigquery_resourceで絞っています。

gcloud logging sinks create <sink名> bigquery.googleapis.com/projects/<project-id>/datasets/<dataset> --log-filter='resource.type="bigquery_resource"'

シンクの確認

コンソール画面のオペレーションロギング → ログルーターからシンクが作成されたことを確認します。
また、シンクの詳細を表示し、writerIdentifyからサービスアカウントを表示し、コピーしておきます。

スクリーンショット 2020-10-12 19.11.49.png

スクリーンショット 2020-10-12 19.18.22.png

以下コマンドでも同様の確認ができます。

gcloud logging sinks list
gcloud logging sinks describe <sink名>

BigQueryのデータセットの権限設定

先ほど作成したデータセットへサービスアカウントが書込みをできるように権限設定を行います。
BigQueryのデータセットの権限設定画面で、先ほどコピーしたサービスアカウントを貼り付け、BigQueryデータ編集者とし、追加を行います。

スクリーンショット 2020-10-12 19.25.49.png

テーブルにデータが書き込まれていることを確認

テーブルにデータが書き込まれるまで少し時間がかかります。
データが書き込まれたら、例として以下のSQLで、どのアカウントがどのクエリを発行したかを確認できます。

SELECT 
  protopayload_auditlog.authenticationInfo.principalEmail AS email,
  protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobConfiguration.query AS query
FROM `<project-id>.<dataset>.cloudaudit_googleapis_com_data_access_20201012` LIMIT 1000

参考

BigQuery audit logs overview
ログビューアによるエクスポート
BigQueryでクソクエリを検知する
Stackdriver Loggingのログを失う前にエクスポートしておく方法

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1