リンクされた BigQuery データセットに対してクエリを実行する

このドキュメントでは、ログバケットのリンク済みデータセットを作成する方法と、そのデータセット内のログをクエリして表示する方法について説明します。たとえば、リンクされたデータセットを作成して、予約済みの BigQuery スロットを使用してログ分析でクエリを実行できます。同様に、リンクされたデータセットを使用すると、BigQuery または Looker Studio でクエリを記述して、ログデータを他のビジネスデータと結合できます。

ログ分析について詳しくは、Lログ分析の概要をご覧ください。

リンク済みデータセットが必要な場合

デフォルトの Cloud Logging サービスを使用する場合、[ログ分析] ページのログビューに対してクエリを実行するために、リンクされた BigQuery データセットは必要ありません。クエリを保存して共有したり、結果をカスタム ダッシュボードに保存したりできます。

次のいずれかを行う場合は、リンクされた BigQuery データセットが必要です。

ログバケットのリンクされた BigQuery データセットを使用すると、BigQuery はログバケット内のデータを読むことができます。

予約済みの BigQuery スロットでクエリを実行する場合、クエリには容量コンピューティングの料金が適用されます。また、ログ分析以外のサービスを使用してデータをクエリする場合は、そのサービスに基づいてクエリに対して追加料金が発生することがあります。使用しているサービスの料金ページをご覧ください。

ログバケットとログビューが BigQuery オブジェクトにマッピングされる仕組み

ログバケットのリンクされた BigQuery データセットを作成すると、BigQuery で新しいデータセットを使用できるようになります。リンクされたデータセットの名前は、リンク プロセス中に指定します。ログバケット内のログビューは、データセット内の仮想ビューに自動的にマッピングされます。仮想ビューの名前は、対応するログビューと同じです。

たとえば、プロジェクト my_projectexample という名前のログバケットがあり、このログバケットに _AllLogs という名前のログビューがあるとします。my_dataset という名前でそのログバケットのリンク済みデータセットを作成すると、BigQuery の [エクスプローラ] ページに my_project エントリが表示されます。my_project エントリの子エントリは、my_dataset という名前のデータセットです。このデータセットには、_AllLogs という名前の仮想ビューが一覧表示されます。

リンク済みデータセットを使用する場合のアクセス制御の影響

プリンシパルがリンクされた BigQuery データセットのビューに対してクエリを実行すると、そのクエリは Cloud Logging 権限レイヤではなく BigQuery 権限レイヤで実行されます。したがって、リンクされたデータセットのプリンシパルに付与されている BigQuery ロールと権限によって、データセットをクエリできるかどうかが決まります。

プリンシパルをリンク済みデータセット内の特定の仮想ビューに制限することはできません。プリンシパルにリンク済みデータセットへのアクセス権が付与されている場合、そのプリンシパルはデータセット内のすべてのビューに対してクエリを実行できます。

始める前に

このセクションでは、Log Analytics を使用する前に完了する必要がある手順について説明します。

ログバケットを構成する

ログバケットがログ分析を使用できるようにアップグレードされていることを確認します。

  1. Google Cloud コンソールで、[ログストレージ] ページに移動します。

    [ログストレージ] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。

  2. クエリを実行するログビューを含むログバケットごとに、[ログ分析を使用可能] 列に [開く] が表示されていることを確認します。[アップグレード] が表示されたら、[アップグレード] をクリックしてダイアログを完了します。

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 Studio でリンクされたデータセットを表示するには、この手順で説明したすべてのロールと次のロールを付与します。このロールは、データセットまたはプロジェクトに付与できます。BigQuery データ閲覧者 roles/bigquery.dataViewer

BigQuery エディションを確認する

予約済みの BigQuery スロットを使用して [ログ分析] ページからログデータをクエリする際、Virtual Private Cloud(VPC)Service Controls でプロジェクトを使用している場合は、BigQuery の Enterprise Edition を使用していることを確認してください。詳細については、BigQuery エディションについてをご覧ください。

BigQuery の機能を使用してログデータを分析する場合は、Log Analytics を使用するようにログバケットをアップグレードし、リンクされたデータセットを作成します。 この構成では、ログデータの保存は Logging が行いますが、ログデータの読み取りは BigQuery で行うことができます。

Google Cloud コンソール

既存のログバケットの BigQuery データセットへのリンクを作成するには、次の操作を行います。

  1. Google Cloud コンソールで、[ログストレージ] ページに移動します。

    [ログストレージ] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Logging] である結果を選択します。

  2. ログバケットを見つけ、[Log Analytics を使用可能] 列に [開く] が表示されていることを確認します。

    この列に[アップグレード] と表示される場合、ログバケットは Log Analytics を使用するようにアップグレードされていません。Log Analytics を構成します。

    1. [アップグレード] をクリックします。
    2. ダイアログで [確認] をクリックします。

    アップグレードが完了したら、次のステップに進みます。

  3. ログバケットで、[展開] をクリックし、[バケットを編集] をクリックします。

    [ログバケットを編集] ダイアログが開きます。

  4. [このバケットにリンクする新しい BigQuery データセットを作成する] を選択し、新しいデータセットの名前を入力します。

    データセット名は、Google Cloud プロジェクトごとに一意である必要があります。既存のデータセットの名前を入力すると、次のエラーを受信します。Dataset name must be unique in the selected region.

  5. [完了]、[バケットを更新] の順にクリックします。

    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 メソッドを呼び出します。

次のように、メソッドの引数を準備します。

  1. create コマンドのリクエスト本文を作成します。リクエスト本文は Link オブジェクトの形式です。
  2. コマンドのクエリ パラメータには 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 を開き、リンクされたデータセットをクエリするには、次の操作を行います。

  1. クエリするログビューをホストするログバケットにリンク済みデータセットが存在することを確認します。

    1. Google Cloud コンソールで、[ログストレージ] ページに移動します。

      [ログストレージ] に移動

      検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。

    2. ログバケットを見つけて、[BigQuery リンク済みデータセット] 列に URL が表示されていることを確認します。エントリが空の場合は、リンクされたデータセットを作成する必要があります。これらの手順については、リンクされた BigQuery データセットを作成するをご覧ください。

  2. Google Cloud コンソールで、[ログ分析] ページに移動します。

    [ログ分析] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。

  3. [ログビュー] リストで、ログビューを見つけて、[クエリ] を選択します。[Query] ペインには、デフォルトのクエリが入力されます。 [クエリ] ペインでクエリを入力することや、表示されているクエリを編集することもできます。

  4. ツールバーで、[クエリを実行] または [BigQuery で実行] ボタンを開き、[BigQuery で開く] を選択します。

    [BigQuery Studio] ページが開きます。クエリの FROM ステートメントは、BigQuery のテーブルパスの構文を使用して、リンクされたデータセットのログビューへのパスを指定するように変更されます。

    表示されているクエリを編集することもできます。

  5. [BigQuery Studio] ページで、[クエリを実行] をクリックします。

予約済みの BigQuery スロットでログ分析クエリを実行する

ログ分析クエリの実行時間を最小限に抑えるには、予約済みの BigQuery スロットで実行します。[ログ分析] ページは、デフォルトのログ分析サービスを使用するように事前構成されています。つまり、クエリは限られたスロット容量を他のクエリと競合して使用する必要があります。使用可能なスロットがない場合は、クエリの実行が遅延します。予約済みの BigQuery スロットでクエリを実行すると、これらの遅延を排除できます。

ログビューに SQL クエリを発行するには、次の操作を行います。

  1. クエリするログビューをホストするログバケットにリンク済みデータセットが存在することを確認します。

    1. Google Cloud コンソールで、[ログストレージ] ページに移動します。

      [ログストレージ] に移動

      検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。

    2. ログバケットを見つけて、[BigQuery リンク済みデータセット] 列に URL が表示されていることを確認します。エントリが空の場合は、リンクされたデータセットを作成する必要があります。これらの手順については、リンクされた BigQuery データセットを作成するをご覧ください。

  2. 予約済みの BigQuery スロットが構成されていることを確認します。

    1. 専用スロットを使用して予約を作成する
    2. 予約割り当ての作成
  3. 予約済みの BigQuery スロットでクエリを実行するように ログ分析 を構成します。

    1. Google Cloud コンソールで、[ログ分析] ページに移動します。

      [ログ分析] に移動

      検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。

    2. [ログビュー] リストでビューを見つけて、[クエリ] を選択するか、クエリを入力します。

      クエリペインに FROM ステートメントを参照するエラー メッセージが表示される場合、そのテーブルは、特定のログビューに解決できません。このエラーを解決する方法については、エラー FROM clause must contain exactly one log view をご覧ください。

    3. ツールバーに移動し、[BigQuery で実行] というボタンが表示されていることを確認します。

      ツールバーに [クエリを実行] と表示されている場合は、 [設定] をクリックして [BigQuery] を選択します。

      [BigQuery で実行] ボタンが無効になっている場合は、リンクされたデータセットを作成する必要があります。

    4. クエリを実行します。

      ツールバー オプションを使用して、クエリをフォーマットし、クエリを消去して、BigQuery SQL リファレンス ドキュメントを開くことができます。

次のステップ