このドキュメントでは、ログバケットのリンク済みデータセットを作成する方法と、そのデータセット内のログをクエリして表示する方法について説明します。たとえば、リンクされたデータセットを作成して、予約済みの BigQuery スロットを使用してログ分析でクエリを実行できます。同様に、リンクされたデータセットを使用すると、BigQuery または Looker Studio でクエリを記述して、ログデータを他のビジネスデータと結合できます。
ログ分析について詳しくは、Lログ分析の概要をご覧ください。
リンク済みデータセットが必要な場合
デフォルトの Cloud Logging サービスを使用する場合、[ログ分析] ページのログビューに対してクエリを実行するために、リンクされた BigQuery データセットは必要ありません。クエリを保存して共有したり、結果をカスタム ダッシュボードに保存したりできます。
次のいずれかを行う場合は、リンクされた BigQuery データセットが必要です。
- ログエントリ データを他の BigQuery データセットと結合します。
- BigQuery Studio ページや Looker Studio などの別のサービスからログデータをクエリします。
- BigQuery 予約スロットでクエリを実行して、ログ分析 から実行するクエリのパフォーマンスを改善します。
- SQL クエリの結果をモニタリングするアラート ポリシーを作成します。詳細については、アラート ポリシーを使用して SQL クエリ結果をモニタリングするをご覧ください。
ログバケットのリンクされた BigQuery データセットを使用すると、BigQuery はログバケット内のデータを読むことができます。
予約済みの BigQuery スロットでクエリを実行する場合、クエリには容量コンピューティングの料金が適用されます。また、ログ分析以外のサービスを使用してデータをクエリする場合は、そのサービスに基づいてクエリに対して追加料金が発生することがあります。使用しているサービスの料金ページをご覧ください。
ログバケットとログビューが BigQuery オブジェクトにマッピングされる仕組み
ログバケットのリンクされた BigQuery データセットを作成すると、BigQuery で新しいデータセットを使用できるようになります。リンクされたデータセットの名前は、リンク プロセス中に指定します。ログバケット内のログビューは、データセット内の仮想ビューに自動的にマッピングされます。仮想ビューの名前は、対応するログビューと同じです。
たとえば、プロジェクト my_project
に example
という名前のログバケットがあり、このログバケットに _AllLogs
という名前のログビューがあるとします。my_dataset
という名前でそのログバケットのリンク済みデータセットを作成すると、BigQuery の [エクスプローラ] ページに my_project
エントリが表示されます。my_project
エントリの子エントリは、my_dataset
という名前のデータセットです。このデータセットには、_AllLogs
という名前の仮想ビューが一覧表示されます。
リンク済みデータセットを使用する場合のアクセス制御の影響
プリンシパルがリンクされた BigQuery データセットのビューに対してクエリを実行すると、そのクエリは Cloud Logging 権限レイヤではなく BigQuery 権限レイヤで実行されます。したがって、リンクされたデータセットのプリンシパルに付与されている BigQuery ロールと権限によって、データセットをクエリできるかどうかが決まります。
プリンシパルをリンク済みデータセット内の特定の仮想ビューに制限することはできません。プリンシパルにリンク済みデータセットへのアクセス権が付与されている場合、そのプリンシパルはデータセット内のすべてのビューに対してクエリを実行できます。
始める前に
このセクションでは、Log Analytics を使用する前に完了する必要がある手順について説明します。
ログバケットを構成する
ログバケットがログ分析を使用できるようにアップグレードされていることを確認します。
-
Google Cloud コンソールで、[ログストレージ] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。
- クエリを実行するログビューを含むログバケットごとに、[ログ分析を使用可能] 列に [開く] が表示されていることを確認します。[アップグレード] が表示されたら、[アップグレード] をクリックしてダイアログを完了します。
IAM のロールと権限を構成する
このセクションでは、ログ分析の使用に必要な IAM ロールまたは権限について説明します。
-
Log Analytics の使用とログビューのクエリ実行に必要な権限を取得するには、プロジェクトに対する次の IAM ロールの付与を管理者に依頼してください。
-
_Required
および_Default
のログバケットに対してクエリを実行するには: ログ閲覧者(roles/logging.viewer
) -
プロジェクト内のすべてのログビューをクエリするには:
ログビューアクセサー (
roles/logging.viewAccessor
)
プリンシパルを特定のログビューに制限するには、プロジェクト レベルで行われたログビュー アクセサー ロールの付与に IAM 条件を追加するか、ログビューのポリシー ファイルに IAM バインディングを追加します。詳細については、ログビューへのアクセスを制御するをご覧ください。
これらの権限は、[ログ エクスプローラ] ページでログエントリを表示するために必要な権限と同じです。ユーザー定義バケットに対するビューのクエリ実行、または
_Default
ログバケットの_AllLogs
ビューのクエリ実行のために必要な追加のロールについて詳しくは、Cloud Logging のロールをご覧ください。 -
-
リンクされたデータセットの作成とクエリに必要な権限を取得するには、ログバケットを保存するプロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
リンクされたデータセットを作成して表示するには: ログ構成書き込み (
roles/logging.configWriter
) -
予約済みの BigQuery スロットを使用してリンクされたデータセットに対してクエリを実行するには:
- BigQuery ユーザー(
roles/bigquery.user
) - BigQuery ジョブユーザー(
roles/bigquery.jobUser
)
- BigQuery ユーザー(
-
BigQuery Studio でリンクされたデータセットを表示するには、この手順で説明したすべてのロールと次のロールを付与します。このロールは、データセットまたはプロジェクトに付与できます。BigQuery データ閲覧者 (
roles/bigquery.dataViewer
)
-
リンクされたデータセットを作成して表示するには: ログ構成書き込み (
BigQuery エディションを確認する
予約済みの BigQuery スロットを使用して [ログ分析] ページからログデータをクエリする際、Virtual Private Cloud(VPC)Service Controls でプロジェクトを使用している場合は、BigQuery の Enterprise Edition を使用していることを確認してください。詳細については、BigQuery エディションについてをご覧ください。
リンクされた BigQuery データセットを作成する
BigQuery の機能を使用してログデータを分析する場合は、Log Analytics を使用するようにログバケットをアップグレードし、リンクされたデータセットを作成します。 この構成では、ログデータの保存は Logging が行いますが、ログデータの読み取りは BigQuery で行うことができます。
Google Cloud コンソール
既存のログバケットの BigQuery データセットへのリンクを作成するには、次の操作を行います。
-
Google Cloud コンソールで、[ログストレージ] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Logging] である結果を選択します。
ログバケットを見つけ、[Log Analytics を使用可能] 列に [開く] が表示されていることを確認します。
この列に[アップグレード] と表示される場合、ログバケットは Log Analytics を使用するようにアップグレードされていません。Log Analytics を構成します。
- [アップグレード] をクリックします。
- ダイアログで [確認] をクリックします。
アップグレードが完了したら、次のステップに進みます。
ログバケットで、[展開]more_vert をクリックし、[バケットを編集] をクリックします。
[ログバケットを編集] ダイアログが開きます。
[このバケットにリンクする新しい BigQuery データセットを作成する] を選択し、新しいデータセットの名前を入力します。
データセット名は、Google Cloud プロジェクトごとに一意である必要があります。既存のデータセットの名前を入力すると、次のエラーを受信します。
Dataset name must be unique in the selected region.
[完了]、[バケットを更新] の順にクリックします。
Logging の [ログストレージ] ページにリンクされたデータセット名が表示されてから BigQuery がデータセットを認識するまでに数分かかることがあります。
gcloud
ログ分析を使用するようにアップグレードされたログバケットのリンクされたデータセットを作成するには、gcloud logging links create
コマンドを実行します。
gcloud logging links create LINK_ID --bucket=BUCKET_ID --location=LOCATION
指定した LINK_ID は BigQuery データセットの名前として使用されます。このフィールドの値は、Google Cloud プロジェクトで一意である必要があります。
links create
コマンドは非同期です。非同期メソッドの出力は Operation
オブジェクトで、メソッドの進行状況に関する情報が格納されています。メソッドが完了すると、Operation
オブジェクトにステータスが含まれます。詳細については、非同期 API メソッドをご覧ください。
links create
コマンドが完了するまでに数分かかります。
たとえば、次のコマンドは、my-bucket
という名前のログバケットに mylink
という名前のリンク済みデータセットを作成します。
gcloud logging links create mylink --bucket=my-bucket --location=global
データセット名は、Google Cloud プロジェクトごとに一意である必要があります。既存のデータセットと同じ名前のデータセットを作成しようとすると、次のエラーを受信します。
BigQuery dataset with name "LINK_ID" already exists.
Log Analytics を使用するようにアップグレードされていないログバケットに対して、リンクされたデータセットを作成しようとすると、次のエラーが報告されます。
A link can only be created for an analytics-enabled bucket.
REST
アップグレードされた既存のログバケットに対してリンクされた BigQuery データセットを作成するには、Log Analytics を使用します。Cloud Logging API の非同期 projects.locations.buckets.links.create
メソッドを呼び出します。
次のように、メソッドの引数を準備します。
create
コマンドのリクエスト本文を作成します。リクエスト本文はLink
オブジェクトの形式です。- コマンドのクエリ パラメータには
linkId=LINK_ID
を使用します。指定した LINK_ID は BigQuery データセットの名前として使用されます。このフィールドの値は、Google Cloud プロジェクトで一意である必要があります。
非同期メソッドに対するレスポンスは、Operation
オブジェクトです。このオブジェクトには、メソッドの進行状況に関する情報が格納されています。メソッドが完了すると、Operation
オブジェクトにステータスが含まれます。詳細については、非同期 API メソッドをご覧ください。
links.create
メソッドが完了するまでに数分かかります。
データセット名は、Google Cloud プロジェクトごとに一意である必要があります。既存のデータセットと同じ名前のデータセットを作成しようとすると、次のエラーを受信します。
BigQuery dataset with name "LINK_ID" already exists.
Log Analytics を使用するようにアップグレードされていないログバケットに対して、リンクされたデータセットを作成しようとすると、次のエラーが報告されます。
A link can only be created for an analytics-enabled bucket.
BigQuery からクエリを実行する
ログ分析とリンクされたデータセットを使用するログバケットがある場合は、[BigQuery Studio] ページを使用してリンクされたデータセットを表示およびクエリできます。この構成では、BigQuery Studio でのみ使用可能なコマンド、ワークフロー、データセットを使用してデータセットを分析できます。
ログ分析から BigQuery を開き、リンクされたデータセットをクエリするには、次の操作を行います。
クエリするログビューをホストするログバケットにリンク済みデータセットが存在することを確認します。
-
Google Cloud コンソールで、[ログストレージ] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。
ログバケットを見つけて、[BigQuery リンク済みデータセット] 列に URL が表示されていることを確認します。エントリが空の場合は、リンクされたデータセットを作成する必要があります。これらの手順については、リンクされた BigQuery データセットを作成するをご覧ください。
-
-
Google Cloud コンソールで、[ログ分析] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。
[ログビュー] リストで、ログビューを見つけて、[クエリ] を選択します。[Query] ペインには、デフォルトのクエリが入力されます。 [クエリ] ペインでクエリを入力することや、表示されているクエリを編集することもできます。
ツールバーで、[クエリを実行] または [BigQuery で実行] ボタンを開き、[BigQuery で開く] を選択します。
[BigQuery Studio] ページが開きます。クエリの
FROM
ステートメントは、BigQuery のテーブルパスの構文を使用して、リンクされたデータセットのログビューへのパスを指定するように変更されます。表示されているクエリを編集することもできます。
[BigQuery Studio] ページで、[クエリを実行] をクリックします。
予約済みの BigQuery スロットでログ分析クエリを実行する
ログ分析クエリの実行時間を最小限に抑えるには、予約済みの BigQuery スロットで実行します。[ログ分析] ページは、デフォルトのログ分析サービスを使用するように事前構成されています。つまり、クエリは限られたスロット容量を他のクエリと競合して使用する必要があります。使用可能なスロットがない場合は、クエリの実行が遅延します。予約済みの BigQuery スロットでクエリを実行すると、これらの遅延を排除できます。
ログビューに SQL クエリを発行するには、次の操作を行います。
クエリするログビューをホストするログバケットにリンク済みデータセットが存在することを確認します。
-
Google Cloud コンソールで、[ログストレージ] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。
ログバケットを見つけて、[BigQuery リンク済みデータセット] 列に URL が表示されていることを確認します。エントリが空の場合は、リンクされたデータセットを作成する必要があります。これらの手順については、リンクされた BigQuery データセットを作成するをご覧ください。
-
予約済みの BigQuery スロットが構成されていることを確認します。
予約済みの BigQuery スロットでクエリを実行するように ログ分析 を構成します。
-
Google Cloud コンソールで、[ログ分析] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。
[ログビュー] リストでビューを見つけて、[クエリ] を選択するか、クエリを入力します。
クエリペインに
FROM
ステートメントを参照するエラー メッセージが表示される場合、そのテーブルは、特定のログビューに解決できません。このエラーを解決する方法については、エラーFROM clause must contain exactly one log view
をご覧ください。ツールバーに移動し、[BigQuery で実行] というボタンが表示されていることを確認します。
ツールバーに [クエリを実行] と表示されている場合は、settings [設定] をクリックして [BigQuery] を選択します。
[BigQuery で実行] ボタンが無効になっている場合は、リンクされたデータセットを作成する必要があります。
クエリを実行します。
ツールバー オプションを使用して、クエリをフォーマットし、クエリを消去して、BigQuery SQL リファレンス ドキュメントを開くことができます。
-