GSP1250

概要
BigQuery には、INFORMATION_SCHEMA
ビューなどの組み込みのオブザーバビリティ機能が用意されていますが、詳細なロギングは、使用状況の詳細な分析、監査、潜在的な問題のトラブルシューティングに不可欠です。ログ分析を有効にすると、使い慣れた SQL クエリを使用してログデータをクエリおよび分析し、クエリ結果を表示またはグラフ化できます。
BigQuery は、ML、地理空間分析、ビジネス インテリジェンスなどの組み込み機能を使用してデータの管理と分析を支援する、Google Cloud のフルマネージド エンタープライズ データ ウェアハウスです。
このラボでは、ログストレージ バケットでログ分析を有効にしてから、Cloud Logging 内で BigQuery ログを表示します。また、SQL を使用してログ分析でログを分析します。
目標
このラボでは、次の方法について学びます。
- Cloud Logging を効果的に使用して、BigQuery の使用状況に関する分析情報を取得する。
- ログ分析を使用して SQL クエリを効果的に作成および実行する。
- 結果を表示してグラフ化する。
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
- ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。
左側の [ラボの詳細] ペインには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
-
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}}
[ラボの詳細] ペインでもユーザー名を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}}
[ラボの詳細] ペインでもパスワードを確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。
注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
-
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
-
Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン
をクリックします。
-
ウィンドウで次の操作を行います。
- Cloud Shell 情報ウィンドウで操作を進めます。
- Cloud Shell が認証情報を使用して Google Cloud API を呼び出すことを承認します。
接続した時点で認証が完了しており、プロジェクトに各自の Project_ID、 が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
- [承認] をクリックします。
出力:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project
出力:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注: Google Cloud における gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
タスク 1. ログバケットを構成する
このタスクでは、ログ分析が有効になっている既存のログバケットをアップグレードするように Cloud Logging を構成します。
既存のバケットをアップグレードしてログ分析を使用するには、次の手順を行います。
- Google Cloud コンソールのタイトルバーにある [検索] フィールドに「ログ ストレージ」と入力し、検索結果から [ログ ストレージ] をクリックします。
[ログ ストレージ] ページが開きます。ログバケット リストに _Default と _Required の 2 つのバケットが表示されます。
-
_Required ログバケットの [ログ分析を使用可能] 列で、[アップグレード] をクリックします。
- [アップグレード] をもう一度クリックして、ログ分析を使用するためのアップグレードを確定します。
-
_Default ログバケットについても同様に操作します。[ログ分析を使用可能] 列の [アップグレード] をクリックします。
- [アップグレード] をもう一度クリックして、ログ分析を使用するためのアップグレードを確定します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
ログバケットをアップグレードする。
タスク 2. BigQuery のアクティビティを実行する
このタスクでは、BigQuery ログを生成します。これを行うには、BigQuery コマンドライン ツール bq を使用します。
- Cloud Shell で
bq mk
コマンドを入力して、プロジェクトに bq_logs と bq_logs_test という名前の新しいデータセットを作成します。
bq mk bq_logs
bq mk bq_logs_test
-
bq ls
コマンドを入力して、データセットを一覧表示します。
bq ls
-
bq rm
コマンドを入力してデータセットを削除します(プロンプトが表示されたら Y を選択します)。
bq rm bq_logs_test
- 新しいテーブルを作成する
bq mk \
--table \
--expiration 3600 \
--description "This is a test table" \
bq_logs.test_table \
id:STRING,name:STRING,address:STRING
test_table という名前の新しい空のテーブルがデータセットに作成されたことを示す成功メッセージが表示されます。
次に、クエリを実行してログを生成します。
- Cloud Shell で次のクエリを入力します。
bq query --use_legacy_sql=false 'SELECT current_date'
- 次のコマンドを Cloud Shell に入力します。
bq query --use_legacy_sql=false \
'SELECT
gsod2021.date,
stations.usaf,
stations.wban,
stations.name,
stations.country,
stations.state,
stations.lat,
stations.lon,
stations.elev,
gsod2021.temp,
gsod2021.max,
gsod2021.min,
gsod2021.mxpsd,
gsod2021.gust,
gsod2021.fog,
gsod2021.hail
FROM
`bigquery-public-data.noaa_gsod.gsod2021` gsod2021
INNER JOIN
`bigquery-public-data.noaa_gsod.stations` stations
ON
gsod2021.stn = stations.usaf
AND gsod2021.wban = stations.wban
WHERE
stations.country = "US"
AND gsod2021.date = "2021-12-15"
AND stations.state IS NOT NULL
AND gsod2021.max != 9999.9
ORDER BY
gsod2021.min;'
(このクエリでは、米国海洋大気庁(NOAA)の気象データを使用します)
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
BigQuery のアクティビティを実行する。
タスク 3. ログ分析の実施
このタスクでは、前のタスクで作成したログデータを分析します。
チャレンジ(省略可): クエリを実行する前に、結果を予測できますか?
特定のオペレーションのクエリ
BigQuery の使用状況を分析する際の一般的なタスクは、データセットの特定のオペレーションを検索することです。このタスクでは、作成と削除のオペレーションをクエリします。
-
左側のペインで [ログ分析] をクリックし、[ログ分析] セクションの [クエリ] フィールドを見つけます。
-
作成されたオペレーションと削除されたオペレーションを検索するには、次のクエリを [クエリ] フィールドに入力または貼り付けて、[クエリを実行] をクリックします。
SELECT
timestamp,
severity,
resource.type,
proto_payload.audit_log.authentication_info.principal_email,
proto_payload.audit_log.method_name,
proto_payload.audit_log.resource_name,
FROM
`{{{ project_0.project_id | "Project ID" }}}.global._Required._AllLogs`
WHERE
log_id = 'cloudaudit.googleapis.com/activity'
AND proto_payload.audit_log.method_name LIKE 'datasetservice%'
LIMIT
100
クエリでは 3 つの結果が出力されるはずです。
method_name = 'datasetservice.delete'
のように、より具体的に検索を絞り込むこともできます。
BigQuery テーブルのオペレーションのクエリ
- BigQuery テーブルのオペレーションを見つけるには、テーブル サービスのクエリ条件を変更します。テーブルの作成または削除に関するオペレーションを検索するには、次のクエリを実行します。
SELECT
timestamp,
severity,
resource.type,
proto_payload.audit_log.authentication_info.principal_email,
proto_payload.audit_log.method_name,
proto_payload.audit_log.resource_name,
FROM
`{{{ project_0.project_id | "Project ID" }}}.global._Required._AllLogs`
WHERE
log_id = 'cloudaudit.googleapis.com/activity'
AND proto_payload.audit_log.method_name LIKE '%TableService%'
LIMIT
100
このクエリは 1 つの結果を出力します。
- 完了した BigQuery クエリを表示するには、
jobCompletedEvent
に基づいて data_access
ログを検索します。たとえば、次の SQL クエリを実行します。
SELECT
timestamp,
resource.labels.project_id,
proto_payload.audit_log.authentication_info.principal_email,
JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobConfiguration.query.query) AS query,
JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobConfiguration.query.statementType) AS statementType,
JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobStatus.error.message) AS message,
JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobStatistics.startTime) AS startTime,
JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobStatistics.endTime) AS endTime,
CAST(TIMESTAMP_DIFF( CAST(JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobStatistics.endTime) AS TIMESTAMP), CAST(JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobStatistics.startTime) AS TIMESTAMP), MILLISECOND)/1000 AS INT64) AS run_seconds,
CAST(JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobStatistics.totalProcessedBytes) AS INT64) AS totalProcessedBytes,
CAST(JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobStatistics.totalSlotMs) AS INT64) AS totalSlotMs,
JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobStatistics.referencedTables) AS tables_ref,
CAST(JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobStatistics.totalTablesProcessed) AS INT64) AS totalTablesProcessed,
CAST(JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobStatistics.queryOutputRowCount) AS INT64) AS queryOutputRowCount,
severity
FROM
`{{{ project_0.project_id | "Project ID" }}}.global._Default._AllLogs`
WHERE
log_id = "cloudaudit.googleapis.com/data_access"
AND proto_payload.audit_log.service_data.jobCompletedEvent IS NOT NULL
ORDER BY
startTime
2 つの結果をスクロールして、query 列を確認します。完了した BigQuery クエリが一覧表示されます。クエリ文字列が SQL クエリに含まれているため、結果が大きくなる可能性があります。
タスク 4. グラフを作成する
ログ分析では、結果をテーブルで確認する代わりに、グラフを作成して可視化できます。
- 結果ビューの [グラフ] ボタンをクリックします。
- グラフの種類として [円グラフ] を選択し、列として [query] を選択します。
- 次のようなグラフが表示されます。

お疲れさまでした
Cloud Logging と ログ分析を利用してクエリを作成し、結果をグラフ化して、BigQuery の使用状況に関する分析情報を取得する実践的な経験を積みました。
次のステップと詳細情報
-
ログ分析のドキュメント。
-
グラフのドキュメントで、ログ分析の結果を可視化する方法について詳しくご確認ください。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2025 年 5 月 2 日
ラボの最終テスト日: 2025 年 5 月 2 日
Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。