ログバケットを構成する

このドキュメントでは、 Google Cloud コンソール、Google Cloud CLILogging API を使用して Cloud Logging バケットを作成して管理する方法について説明します。また、Google Cloud プロジェクト レベルでログバケットを作成して管理する手順についても説明します。フォルダまたは組織のレベルではログバケットを作成できません。Cloud Logging は、フォルダと組織のレベルで _Default_Required のバケットを自動的に作成します。

ログバケットをアップグレードすると、ログ分析を使用できるようになります。ログ分析を使用すると、ログデータに対して SQL クエリを実行し、アプリケーション、セキュリティ、ネットワークの問題をトラブルシューティングできます。

BigQuery を使用してログデータを分析するには、次の 2 つの方法があります。

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

  • ログエントリを BigQuery にエクスポートする。このシナリオでは、シンクの作成はユーザーが行う必要がありますが、データの保存と管理は BigQuery が行います。パーティション分割テーブルも使用できます。

ログデータが BigQuery で利用可能になると、BigQuery に保存されている他のデータとログデータを結合し、Looker Studio や Looker などの他のツールからアクセスできるようになります。

バケットのコンセプトの概要については、転送と保存の概要: ログバケットをご覧ください。

このドキュメントでは、顧客管理の暗号鍵(CMEK)を使用するログバケットの作成方法については説明しません。このトピックの詳細については、ログストレージに CMEK を構成するをご覧ください。

始める前に

ログバケットを使用する前に、次のことを行う必要があります。

バケットを作成する

Google Cloud プロジェクトあたり最大 100 個のバケットを作成できます。

Google Cloud プロジェクトにユーザー定義のログバケットを作成するには、次の操作を行います。

Google Cloud コンソール

Google Cloud プロジェクトにログバケットを作成するには、次の操作を行います。

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

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

    このページを検索バーで検索する場合は、小見出しが「Logging」の結果を選択します。

  2. [ログバケットを作成] をクリックします。

  3. バケットの名前説明を入力します。

  4. 省略可: ログ分析を使用できるように、バケットをアップグレードします。

    1. [アップグレードして Log Analytics を使用する] を選択します。

      ログ分析を使用するようにバケットをアップグレードすると、[ログ分析] ページで SQL クエリを使用してログをクエリできます。ログ エクスプローラでログを引き続き表示することもできます。

    2. 省略可: BigQuery でログを表示するには、[このバケットにリンクする新しい BigQuery データセットを作成する] を選択して、一意のデータセット名を入力します。

      このオプションを選択すると、BigQuery はログバケットに保存されているデータを読み取ることができます。これで、BigQuery インターフェースでクエリして、ログデータを結合したり、Looker Studio や Looker などの他のツールからデータにアクセスできるようになりました。

  5. ログストレージのリージョンを選択するには、[ログバケットのリージョンを選択] メニューをクリックしてリージョンを選択します。

  6. 省略可: バケット内のログにカスタム保持期間を設定するには、[] をクリックします。

    [保持期間] フィールドに、Cloud Logging でログを保持する日数を入力します(1~3,650 日)。保持期間をカスタマイズしない場合、デフォルトの 30 days になります。

    バケットを作成した後にバケットを更新して、カスタム保持を適用するともできます。

  7. [バケットを作成] をクリックします。

    これらのオプションが選択されている場合は、ログバケットの作成後、Logging によってバケットがアップグレードされ、データセット リンクが作成されます。

    これらの処理が完了するまでにしばらく時間がかかることがあります。

gcloud

ログバケットのみを作成するには、gcloud logging buckets create コマンドを実行します。ログ分析を使用するようにログバケットをアップグレードする場合は、--enable-analytics フラグと --async フラグを指定し、変数 LOCATIONサポートされているリージョンに設定されていることを確認します。

gcloud logging buckets create BUCKET_ID --location=LOCATION --enable-analytics --async OPTIONAL_FLAGS

--async フラグを使用して、コマンドを非同期にします。非同期メソッドからは、メソッドの進行状況に関する情報が格納されている Operation オブジェクトが返されます。メソッドが完了すると、Operation オブジェクトにステータスが含まれます。詳細については、非同期 API メソッドをご覧ください。

ログ分析を使用するようにログバケットをアップグレードしない場合は、--enable-analytics フラグと --async フラグを省略します。

たとえば、global リージョンで BUCKET_ID my-bucket のバケットを作成する場合、コマンドは次のようになります。

gcloud logging buckets create my-bucket --location global --description "My first bucket"

たとえば、global のロケーションに BUCKET_ID my-upgraded-bucket のバケットを作成し、ログ分析を使用するようにログバケットをアップグレードする場合、コマンドは次のようになります。

gcloud logging buckets create my-upgraded-bucket --location global \
      --description "My first upgraded bucket" \
      --enable-analytics --retention-days=45

REST

バケットを作成するには、projects.locations.buckets.create メソッドまたは projects.locations.buckets.createAsync メソッドを使用します。次のように、メソッドの引数を準備します。

  1. バケットを作成するリソース(projects/PROJECT_ID/locations/LOCATION)を parent パラメータに設定します。

    変数 LOCATION には、ログを保存するリージョンを指定します。

    たとえば、リージョン global にプロジェクト my-project のバケットを作成する場合、parent パラメータは projects/my-project/locations/global のようになります。

  2. bucketId パラメータを設定します。例: my-bucket

  3. 次のいずれかを行います。

    • ログバケットを作成して、ログ分析を使用するようにログバケットをアップグレードするには:

      1. LogBucket.analyticsEnabled ブール値を true に設定します。

      2. 非同期メソッド projects.locations.buckets.createAsync を呼び出してバケットを作成します。

        非同期メソッドのレスポンスは、Operation オブジェクトです。このオブジェクトには、メソッドの進行状況に関する情報が格納されています。メソッドが完了すると、Operation オブジェクトにステータスが含まれます。詳細については、非同期 API メソッドをご覧ください。

        createAsync メソッドが完了するまでに数分かかります。このメソッドでは、analyticsEnabled ブール値が true に設定されていても、エラー メッセージが生成されず、エラーも発生しません。

    • そうでない場合は、同期メソッド projects.locations.buckets.create を呼び出してバケットを作成します。

バケットを作成したら、ログエントリをバケットに転送するシンクを作成し、ログビューを構成して、新しいバケットのログにアクセスできるユーザーとアクセス可能なログを制御します。バケットを更新して、カスタム保持制限付きフィールドを構成することもできます。

ログバケットに保存されているログの量を追跡する

Google Cloud コンソールの [ログストレージ] ページには、ログバケットに保存されているログデータの量が表示されます。

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

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

このページを検索バーで検索する場合は、小見出しが「Logging」の結果を選択します。

[ログストレージ] ページに、Google Cloud プロジェクトの統計情報の概要が表示されます。

統計情報の概要に、選択されているプロジェクトのログバケットに保存されているログデータの量が報告されています。

次の統計情報が報告されます。

  • 今月の取り込み: 今月の初日以降にGoogle Cloud プロジェクトでログバケットに保存されたログデータの量。

  • 前月の取り込み: 前月にGoogle Cloud プロジェクトがログバケットに保存したログデータの量。

  • 予想される取り込み(月の終わりまで): 今月の初日から月末までにGoogle Cloud プロジェクトでログバケットに保存されるログデータの推定量(現在の使用量に基づいて推測)。

  • 当月の課金対象ストレージ: 30 日以上保持されている課金対象のログデータの量。

上記の統計情報には、_Required バケット内のログは含まれません。このバケットのログを除外したり、無効にすることはできません。

Google Cloud コンソールの [ログルーター] ページにあるツールを使用すると、毎月の割り当てを超えるログバケットへのログの保存やストレージに対する料金を最小限に抑えることができます。以下の処理を行うことができます。

  • バケットレベルでのログの保存を無効にする。
  • 特定のログエントリをログバケットに保存しないようにする。

詳細については、シンクを管理するをご覧ください。

バケットを管理する

このセクションでは、Google Cloud CLI または Google Cloud コンソールでログバケットを管理する方法について説明します。

バケットを更新する

バケットのプロパティ(説明や保持期間など)を更新するには、次の操作を行います。

Google Cloud コンソール

バケットのプロパティを更新するには、次の操作を行います。

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

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

    このページを検索バーで検索する場合は、小見出しが「Logging」の結果を選択します。

  2. 更新するバケットで、[その他] をクリックします。

  3. [バケットを編集] を選択します。

  4. 必要に応じてバケットを編集します。

  5. [バケットを更新] をクリックします。

gcloud

バケットのプロパティを更新するには、gcloud logging buckets update コマンドを実行します。

gcloud logging buckets update BUCKET_ID --location=LOCATION UPDATED_ATTRIBUTES

例:

gcloud logging buckets update my-bucket --location=global --description "Updated description"

REST

バケットのプロパティを更新するには、Logging API で projects.locations.buckets.patch を使用します。

ログ分析を使用できるようにログバケットをアップグレードする

ログ分析を使用するようにバケットをアップグレードすると、受信した新しいログエントリをログ分析インターフェースで分析できるようになります。また、Cloud Logging はバックフィル オペレーションを開始します。これにより、アップグレード前に書き込まれた古いログエントリを分析できます。バックフィル処理には数時間かかることがあります。バケットのアップグレード オペレーションは元に戻せません。

ログ分析を使用するように既存のバケットをアップグレードする場合は、次の要件を満たしている必要があります。

  • ログバケットは Google Cloud プロジェクト レベルで作成されている。
  • _Required バケットでない限り、ログバケットのロックが解除されている。
  • バケットの更新が保留中でない。

Google Cloud コンソール

ログ分析を使用するように既存のバケットをアップグレードするには、次の操作を行います。

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

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

    このページを検索バーで検索する場合は、小見出しが「Logging」の結果を選択します。

  2. アップグレードするバケットを見つけます。

  3. [Log Analytics を使用可能] 列に「アップグレード」と表示されたら、ログバケットをアップグレードしてログ分析を使用できます。[アップグレード] をクリックします。

    ダイアログが開きます。[確認] をクリックします。

gcloud

ログ分析を使用するようにログバケットをアップグレードするには、gcloud logging buckets update コマンドを実行します。--enable-analytics フラグを設定する必要があります。また、--async フラグを含めることをおすすめします。

gcloud logging buckets update BUCKET_ID --location=LOCATION --enable-analytics --async

--async フラグを使用して、コマンドを非同期にします。非同期メソッドからは、メソッドの進行状況に関する情報が格納されている Operation オブジェクトが返されます。メソッドが完了すると、Operation オブジェクトにステータスが含まれます。詳細については、非同期 API メソッドをご覧ください。

REST

ログ分析を使用するようにログバケットをアップグレードするには、Cloud Logging API の projects.locations.buckets.updateAsync メソッドを使用します。

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

  1. LogBucket.analyticsEnabled ブール値を true に設定します。
  2. コマンドのクエリ パラメータには updateMask=analyticsEnabled を使用します。

非同期メソッドのレスポンスは、Operation オブジェクトです。このオブジェクトには、メソッドの進行状況に関する情報が格納されています。メソッドが完了すると、Operation オブジェクトにステータスが含まれます。詳細については、非同期 API メソッドをご覧ください。

updateAsync が完了するまでに数分かかることがあります。

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

Google Cloud コンソール

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

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

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

    このページを検索バーで検索する場合は、小見出しが「Logging」の結果を選択します。

  2. ログバケットを見つけ、[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.

ログ分析を使用するようにアップグレードされていないログバケットに、リンクされたデータセットを作成しようとすると、次のエラーが報告されます。

A link can only be created for an analytics-enabled bucket.

REST

アップグレードされた既存のログバケットに、リンクされた BigQuery データセットを作成するには、ログ分析を使用します。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.

ログ分析を使用するようにアップグレードされていないログバケットに、リンクされたデータセットを作成しようとすると、次のエラーが報告されます。

A link can only be created for an analytics-enabled bucket.

バケットをロックする

更新されないようにバケットをロックすると、バケットの保持ポリシーもロックされます。保持ポリシーがロックされると、バケット内のすべてのログエントリがバケットの保持期間を満了するまでバケットを削除できません。ロックされたログバケットを含むプロジェクトが誤って削除されないようにするには、プロジェクトにリーエンを追加します。詳しくは、リーエンによるプロジェクトの保護をご覧ください。

他のユーザーがログバケットを更新または削除できないようにするには、バケットをロックします。バケットをロックする手順は次のとおりです。

Google Cloud コンソール

Google Cloud コンソールでは、ログバケットのロックはサポートされていません。

gcloud

バケットをロックするには、--locked フラグを指定して gcloud logging buckets update コマンドを実行します。

gcloud logging buckets update BUCKET_ID --location=LOCATION --locked

例:

gcloud logging buckets update my-bucket --location=global --locked

REST

バケットの属性をロックするには、Logging API で projects.locations.buckets.patch を使用します。locked パラメータを true に設定します。

バケットを一覧表示する

Google Cloud プロジェクトに関連付けられたログバケットを一覧表示し、保持設定などの詳細を確認するには、次のようにします。

Google Cloud コンソール

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

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

このページを検索バーで検索する場合は、小見出しが「Logging」の結果を選択します。

ログバケット」という名前の表に、現在のGoogle Cloud プロジェクトに関連付けられたバケットが一覧表示されます。

この表には、各ログバケットの次の属性が一覧表示されます。

  • 名前: ログバケットの名前。
  • 説明: バケットの説明。
  • 保持期間: Cloud Logging がバケットのデータを保存する日数。
  • リージョン: バケットのデータが保存される地理的位置。
  • ステータス: バケットがロックされているか、ロック解除されているか。

Cloud Logging がバケットを削除保留にしている場合、表のエントリに警告記号 が付いています。

gcloud

gcloud logging buckets list コマンドを実行します。

gcloud logging buckets list

ログバケットの次の属性が表示されます。

  • LOCATION: バケットのデータが保存されるリージョン
  • BUCKET_ID: ログバケットの名前。
  • RETENTION_DAYS: Cloud Logging がバケットのデータを保存する日数。
  • LIFECYCLE_STATE: Cloud Logging がバケットを削除保留中としているかどうかを示します。
  • LOCKED: バケットがロックされているか、ロック解除されているか。
  • CREATE_TIME: バケットが作成された日時を示すタイムスタンプ。
  • UPDATE_TIME: バケットが最後に変更された日時を示すタイムスタンプ。

1 つのバケットの属性だけを表示することもできます。たとえば、global リージョンの _Default ログバケットの詳細を表示するには、gcloud logging buckets describe コマンドを実行します。