ログバケットの管理

このページでは、ログバケットを作成して管理する方法について説明します。

始める前に

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

  • ログバケットに精通していることを確認します。
  • Google Cloud プロジェクトの課金が有効になっていることを確認します。
  • 自分と Cloud プロジェクト メンバーに、Cloud プロジェクト ログバケットを作成、管理するための適切なロールまたは権限があることを確認します。詳しくは、このページのアクセス制御をご覧ください。

バケットの管理

このセクションでは、gcloud コマンドライン ツールまたは Google Cloud Console を使用してログバケットを管理する方法について説明します。

ログバケットの作成

ユーザー定義のログバケットを作成するには、logging.buckets.create 権限が必要です。この権限は、ロギング構成書き込みロールの一部として提供されています。

Cloud プロジェクトごとに最大 10 個のバケットを作成できます。

Cloud プロジェクトでユーザー定義のログバケットを作成する手順は次のとおりです。

gcloud

Cloud プロジェクトにログバケットを作成するには、gcloud logging buckets create コマンドを実行します。

gcloud logging buckets create BUCKET_ID --location=LOCATION OPTIONAL_FLAGS

次に例を示します。

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

コンソール

Cloud プロジェクトにログバケットを作成する手順は次のとおりです。

  1. Logging メニューから [ログストレージ] を選択します。

    ログストレージに移動

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

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

  4. (省略可)バケット リージョンを設定するには、[ログのバケット リージョンを選択] プルダウン メニューをクリックして、バケットを配置するリージョンを選択します。リージョンを選択しない場合、この値が global に設定されます。これは、どのリージョンにもログを物理的に保存できることを意味します。

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

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

    後からカスタム保持を構成することもできます。

  6. [バケットを作成] をクリックします。新しいバケットが [ログバケット] のリストに表示されます。

バケットを作成したら、ログビューを構成して、新しいバケットのログにアクセスできるユーザーとアクセスできるログを制御できます。

ログバケットの更新

logging.buckets.update 権限は、ログバケットを更新するために必要です。この権限は、ロギング構成書き込みロールの一部として提供されています。権限が制限されたカスタムロールを作成することもできます。 Logging のアクセス制御の一覧については、アクセス制御をご覧ください。

バケットの属性を更新するには、次の手順を行います。

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"

コンソール

バケットの属性を更新するには、次の手順を行います。

  1. Logging メニューから [ログストレージ] を選択します。

    ログストレージに移動

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

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

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

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

ログバケットのロック

更新されないようにバケットをロックすると、バケットの保持ポリシーもロックされます。保持ポリシーがロックされると、バケット内のすべてのログがバケットの保持期間を満了するまでバケットを削除できません。

更新されないようにログバケットをロックするには、logging.buckets.update 権限が必要です。この権限は、ロギング構成書き込みロールの一部として提供されています。権限が制限されたカスタムロールを作成することもできます。 Logging のアクセス制御の一覧については、アクセス制御をご覧ください。

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

gcloud

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

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

次に例を示します。

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

コンソール

Cloud Console では、ログバケットのロックはサポートされていません。

ログバケットの一覧表示

ログバケットの詳細を一覧表示するには、logging.buckets.list 権限が必要です。この権限は、ロギング構成書き込みロールの一部として提供されています。権限が制限されたカスタムロールを作成することもできます。 Logging のアクセス制御の一覧については、アクセス制御をご覧ください。

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

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 つのバケットの属性を表示することもできます。たとえば、_Default ログバケットの詳細を表示するには、gcloud logging buckets describe コマンドを実行します。

gcloud logging buckets describe _Default --location=global

コンソール

[ログストレージ] ページに移動します。

ログストレージに移動

現在の Cloud プロジェクトに関連付けられたバケットを一覧表示するテーブル [ログバケット] が表示されます。

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

  • 名前: 作成時に付けられたバケットの名前。
  • 説明: 作成時に与えられたバケットの説明。
  • 保持期間: Cloud Logging がバケットのデータを保存する日数。
  • リージョン: バケットのデータが保存される地理的なロケーション。
  • ステータス: バケットがロックされているか、ロック解除されているか。

Cloud Logging がバケットを削除保留にしている場合、そのテーブル エントリには警告)の注記が付けられます。

ログバケットの詳細の表示

ログバケットの詳細を表示するには、logging.buckets.get 権限が必要です。この権限は、ロギング構成書き込みロールの一部として提供されています。権限が制限されたカスタムロールを作成することもできます。 Logging のアクセス制御の一覧については、アクセス制御をご覧ください。

単一のログバケットの詳細を表示する手順は次のとおりです。

gcloud

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

gcloud logging buckets describe _Default --location=global

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

  • createTime: バケットが作成された日時を示すタイムスタンプ。
  • description: 作成時に付けられたバケットの名前。
  • lifecycleState: Cloud Logging がバケットを削除保留中としているかどうかを示します。
  • name: 作成時に付けられたバケットの名前。
  • retentionDays: Cloud Logging がバケットのデータを保存する日数。
  • updateTime: バケットが最後に変更された日時を示すタイムスタンプ。

コンソール

[ログストレージ] ページに移動します。

ログストレージに移動

ログバケットで、[その他] > [バケットの詳細を表示] をクリックします。

このダイアログ ボックスには、ログバケットの次の属性が表示されます。

  • 名前: 作成時に付けられたバケットの名前。
  • 説明: 作成時に与えられたバケットの説明。
  • 保持期間: Cloud Logging がバケットのデータを保存する日数。
  • リージョン: バケットのデータが保存される地理的なロケーション。

ログバケットの削除

ログバケットを削除するには、logging.buckets.delete 権限が必要です。この権限は、ロギング構成書き込みロールの一部として提供されています。権限が制限されたカスタムロールを作成することもできます。 Logging のアクセス制御の一覧については、アクセス制御をご覧ください。

ログバケットを削除する方法は次のとおりです。

gcloud

ログバケットを削除するには、gcloud logging buckets delete コマンドを実行します。

gcloud logging buckets delete BUCKET_ID --location=LOCATION

コンソール

ログバケットを削除するには、次の手順を行います。

  1. Logging メニューから [ログストレージ] を選択します。

    ログストレージに移動

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

  3. [バケットの削除] を選択します。

  4. 確認パネルで [削除] をクリックします。

  5. [ログストレージ] ページに、バケットが削除保留中であることを示すインジケータが表示されます。すべてのログを含むバケットは 7 日後に削除されます。

削除されたログバケットの復元

ログバケットを復元するには、logging.buckets.undelete 権限が必要です。この権限は、ロギング構成書き込みロールの一部として提供されています。権限が制限されたカスタムロールを作成することもできます。 Logging のアクセス制御の一覧については、アクセス制御をご覧ください。

削除保留状態のログバケットは削除を取り消して、復元することもできます。ログバケットを復元する方法は次のとおりです。

gcloud

削除保留中のログバケットを復元するには、gcloud logging buckets undelete コマンドを実行します。

gcloud logging buckets undelete BUCKET_ID --location=LOCATION

コンソール

削除保留中のログバケットを復元する手順は次のとおりです。

  1. Logging メニューから [ログストレージ] を選択します。

    ログストレージに移動

  2. 復元するバケットで、その他アイコン をクリックします。

  3. [削除したバケットの復元] を選択します。

  4. 確認パネルで [復元] をクリックします。

  5. ログストレージ ページで、削除が保留中であることを示すインジケータがバケットから削除されます。

ログバケットへの書き込み

logging.logEntries.create 権限は、Cloud プロジェクト、フォルダ、組織にログエントリを書き込むために必要です。この権限は、ログ書き込みおよびロギング管理者ロールの一部として利用できます。Logging のアクセス制御の一覧については、アクセス制御をご覧ください。

ログバケットに直接ログを書き込むことはありません。ログバケットではなく、Cloud プロジェクト、フォルダ、組織にログを書き込みます。親リソースのシンクは、ログバケットを含むエクスポート先にログを転送します。ログがシンクのフィルタと一致し、シンクにログをログバケットに転送する権限がある場合、シンクはログをログバケットの宛先に転送します。

ログシンクが同じ Cloud プロジェクトのログバケットにログを転送する場合、ログシンクに権限は必要ありません。

ログシンクが別の Cloud プロジェクトのログバケットにログを転送する場合は、ログシンクに logging.buckets.write 権限を付与する必要があります。ログバケットを含む Cloud プロジェクトでこの権限を付与するには、ログバケット書き込みのロールを使用します。この役割は、特定のログバケットに一致する IAM 条件を使用して、ログシンクのサービス アカウントに付与する必要があります。

サービス アカウントに別の Cloud プロジェクトのログバケットに書き込むための権限を付与する方法については、エクスポート先の権限をご覧ください。

ログバケットからの読み取り

ログバケットからログを読み取るには、logging.views.listLogs 権限が必要です。この権限は、ログビュー アクセサーロールの一部として使用できます。Logging のアクセス制御の一覧については、アクセス制御をご覧ください。

各ログバケットには、一連のログビュー保存されています。ログバケットからログを読み取るには、ログバケットのログビューへのアクセス権が必要です。ログビューの詳細については、ログビューの管理をご覧ください。

IAM 条件を使用してこれらの権限を設定することをおすすめします。IAM 条件を使用してユーザーをログビューに追加する方法の詳細については、ログビューにユーザーを追加するをご覧ください。

ログバケットからログを読み取る手順は次のとおりです。

gcloud

ログバケットからログを読み取るには、gcloud logging read コマンドを実行します。

gcloud logging read --bucket=BUCKET_ID --location=LOCATION --view=VIEW_ID

コンソール

ログバケットからログを読み取る方法については、範囲を絞り込むをご覧ください。

カスタム保持の構成

ログバケットを作成するときに、Cloud Logging がバケットのログを保存する期間をカスタマイズできます。保持期間は、ユーザー定義のログバケットと _Default ログバケットのそれぞれで構成できます。

ログバケットの保持期間を更新する手順は次のとおりです。

gcloud

たとえば、_Default ログバケットの保持期間を更新するには、RETENTION_DAYS の値を設定した後、次のgcloud コマンドライン ツール コマンドを実行します。

gcloud logging buckets update _Default --location=global --retention-days=RETENTION_DAYS

たとえば、ログを _Default バケットに 1 年間保持するには、次のコマンドを実行します。

gcloud logging buckets update _Default --location=global --retention-days=365

CONSOLE

ログバケットの保持期間を更新する手順は次のとおりです。

  1. Logging メニューから [ログストレージ] を選択します。

    ログストレージに移動

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

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

  4. [保持] フィールドに、Cloud Logging でログを保持する日数を入力します(1~3,650 日)。

  5. [バケットの更新] をクリックします。 新しい保持期間が [ログバケット] のリストに表示されます。

アクセス制御

Identity and Access Management のロールと権限は、Logging データへのアクセスを制御します。次に、Cloud プロジェクト メンバーがログバケットにアクセスするために必要な一般的なロールと権限の概要を示します。

Cloud Logging では、Identity and Access Management のロールと権限を構成するときに特権を制限することを推奨しています。詳細については、IAM の安全な使用をご覧ください。

ログバケット アクティビティ ユーザー アクセス IAM の権限 IAM ロールと推奨されるアクセス制御の設定
ログバケット構成の管理 ログバケットの作成、一覧表示、更新、削除、削除の取り消し、詳細表示を行えるユーザー。 logging.buckets.{create,list,get,update,delete,undelete} これらの権限は、ロギング構成書き込み または ロギング管理者の一部として提供されています。権限が制限されたカスタムロールを作成することもできます。
ログバケットにログエントリを書き込む 特定のログバケットにログエントリを書き込むことができるユーザー。 logging.buckets.write

ログシンクが同じ Cloud プロジェクトのログバケットにログエントリを転送する場合、ログシンクに権限は必要ありません。

ログシンクが別の Cloud プロジェクトのログバケットにログを転送する場合は、ログシンクに logging.buckets.write 権限を付与する必要があります。ログバケットを含む Cloud プロジェクトでこの権限を付与するには、ログバケット書き込みのロールを使用します。このロールは、特定のログバケットに一致する IAM 条件を使用して、ログシンクのサービス アカウントに付与する必要があります。

gcloud ツールを使用してログシンクに IAM 条件を設定する例については、1 つのプロジェクトのログを別の Cloud プロジェクトのバケットにルーティングするをご覧ください。

ログバケットからログエントリを読み取る ログビューを使用して特定のログバケットのログエントリを表示できるユーザー。 logging.views.{access,listLogs,listResourceKeys,listResourceValues} この権限を付与するには、ログビュー アクセサーのロールを使用します。このロールは、特定のログビューに一致する IAM 条件を使用して付与する必要があります。

ログビューでこの IAM 条件を設定する方法については、ログビューにユーザーを追加するをご覧ください。

ロギングのアクセス制御の一覧については、アクセス制御をご覧ください。

トラブルシューティングとよくある質問

ログバケットの使用中に問題が発生した場合は、次のトラブルシューティング手順と一般的な質問に対する回答をご覧ください。

このバケットを削除できないのはなぜですか?

まず、バケットを削除するための適切な権限があることを確認します。

次に、バケットの属性を一覧表示して、バケットがロックされているかどうかを確認します。バケットがロックされている場合は、バケットの保持期間を確認します。ロックされたバケットを削除するには、そのバケット内のすべてのログがバケットの保持期間を満たす必要があります。

ログが _Default シンクから除外されていても Cloud プロジェクトのログが表示されるのはなぜですか?

組織全体からのログを集約する一元型の Cloud プロジェクトのログバケットでログを表示している可能性があります。

一元型の Cloud プロジェクトのログにアクセスしていて、_Default シンクから除外したログが表示される場合は、次のいずれかの条件でログを表示している可能性があります。

  • 以前のログビューアでログを表示している(一元化されたログの表示はサポートされていません)。

    この問題を解決するには、Logs Explorer に切り替えます。

  • [範囲を絞り込む] パネルで [プロジェクトで絞り込む] を選択した状態でログ エクスプローラを使用してログを表示している(格納している場所に関係なく、プロジェクトで生成されたログが表示されます)。

    この問題のトラブルシューティングを行うには、代わりに、Log Exporer の [範囲を絞り込む] パネルで [ストレージによるスコープ] を選択し、Cloud プロジェクトで _Default バケットを選択します。これで、除外されたログが表示されなくなります。

ログバケットにログベースの指標を作成できないのはなぜですか?

ログベースの指標は、単一の Google Cloud プロジェクトにのみ適用されます。ログバケットや、Cloud 請求先アカウントや組織などの他の Google Cloud リソースについては作成できません。

次のステップ

Logs Bucket API メソッドの詳細については、LogBucket リファレンス ドキュメントをご覧ください。

ログバケットを使用して一般的なユースケースに対応する方法については、次のトピックをご覧ください。