ログエントリのコピー

このページでは、Cloud Logging バケットにすでに保存されているログエントリを Cloud Storage バケットに手動でコピーする方法について説明します。

次のような場合は、Logging バケットから Cloud Storage バケットにログエントリをコピーすることをおすすめします。

  • ログエントリを Logging に保存する前に、Cloud Storage にルーティングし忘れた場合です。
  • Logging の外部の監査者とログエントリを共有したい。
  • Cloud Storage のスクリプトを使用してログエントリを分析したい。

ログエントリを Cloud Storage にコピーする場合、ログエントリはコピー元のログバケットにも残ります。

コピー オペレーションは、すべての受信ログエントリを、Cloud Storage を含む事前選択されたサポートされているストレージ宛先に自動的に送信するシンクに代わるものではありません。ログエントリを保存する場所が事前にわかっている場合は、シンクを使用します。

ログをコピーしてから、オペレーションの管理とモニタリングを行うには、次のセクションで説明するように gcloud CLI を使用します。

制限事項

ログエントリをコピーする場合は、次の制限が適用されます。

  • この機能は Cloud Console または Logging API ではご利用いただけません。先ほど説明したように gcloud CLI を使用します。

  • ログは Cloud Storage バケットにのみコピーできます。他のリンク先は使用できません。

始める前に

ログをコピーする前に、次のことを行います。

  • gcloud CLI の最新バージョンを使用していることを確認します。gcloud CLI をインストールまたは更新する方法については、Google Cloud CLI コンポーネントの管理をご覧ください。

  • 適切な Identity and Access Management 権限があることを確認します。

    • Logging からログエントリをコピーして、Cloud Storage に書き込むには、次の両方が必要です。

      • ログのコピー元の Logging バケットには、roles/logging.admin ロール、または logging.buckets.copyLogEntries 権限を持つカスタムロールが必要です。

      • ログを送信する Cloud Storage バケットには、roles/storage.objectCreator ロール、または storage.objects.create 権限を持つカスタムロールが必要です。

    • コピー オペレーションのステータスを表示および管理するには、次のいずれかのロール、または logging.operations.* 権限を持つカスタムロールが必要です。

ログエントリのコピー

Logging は、コピー操作の開始時にログバケットに保存されているログエントリのみをコピーします。コピー オペレーションの開始後に取り込まれ、保存されたログエントリは、Cloud Storage にコピーされません。

ログエントリを Cloud Storage にコピーするには、次の情報が必要です。

ログエントリをコピーするには、gcloud alpha logging copy コマンドを実行します。

gcloud alpha logging copy LOGGING_BUCKET_ID storage.googleapis.com/CLOUD_STORAGE_BUCKET_NAME
--location=LOCATION [--log-filter=FILTER] --project=PROJECT_ID

コマンドの例:

gcloud alpha logging copy my-log-bucket storage.googleapis.com/my-gcs-bucket \
--location=global --log-filter='timestamp > "2021-03-18T10:00:00.0Z"' \
--project=my-project

このコマンドは、バックグラウンドで実行する長時間実行オペレーションを作成し、コピー オペレーションの名前とログバケットの場所を返します。

name: projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

コピー オペレーションのロケーションは、ログのコピー元のログバケットのロケーションと同じです。global ロケーションで作成された Logging バケットの場合、コピー オペレーションを実行すると、バケットの実際のロケーションが返されます。

Logging バケットのロケーションの取得

gcloud alpha logging operations コマンドを実行するには、Logging がバケットを作成した特定のロケーションが必要です。gcloud alpha logging copy コマンドを実行すると、ログバケットのリージョンのロケーションが返されます。

Logging バケットの特定のロケーションがわからない場合、global ロケーションを使用して作成された可能性があるため、次の手順を実行します。

  1. Cloud プロジェクトで使用されている地理的位置を確認します。

    gcloud alpha logging locations list
    
  2. コピーするオペレーションが見つかるまで、ロケーション別にオペレーションを一覧表示します。

    operations list を使用するには、--operation-filter フラグを使用してオペレーションのタイプを指定する必要があります。request_type に指定できる値は次のとおりです。

    • CopyLogEntries
    • CreateBucket
    • UpdateBucket
    gcloud alpha logging operations list --location=LOCATION \
    --operation-filter=request_type=REQUEST_TYPE \
    --project=PROJECT_ID
    

    このコマンドは、長時間実行オペレーションに関する情報(オペレーション ID を含む)を返します。

    projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
    

コピー オペレーションの表示と管理

コピー オペレーションを表示および管理するには、gcloud alpha logging operations コマンドを使用します。これにより、次のことが可能になります。

  • 現在のコピー オペレーションをすべて一覧表示する
  • オペレーションのステータスを表示する
  • 実行中のコピー オペレーションをキャンセルする

コピー オペレーションの一覧表示

スケジュールされたコピー、実行中、完了、失敗、キャンセルなどのオペレーションを含む、最近のコピー オペレーションを一覧表示できます。最近のコピー オペレーションは、終了時刻から最大 5 日間、結果に表示されます。

コピー オペレーションを一覧表示するには、次のコマンドを実行します。

gcloud alpha logging operations list --location=LOCATION \
--operation-filter=request_type=CopyLogEntries \
--project=PROJECT_ID

コピー オペレーションのステータスの表示

以下のような、コピー オペレーションのステータスやメタデータを取得できます。

  • startTime: オペレーションの作成を示すタイムスタンプ。
  • endTime: オペレーションの完了を示すタイムスタンプ。
  • state: オペレーションのステータス(スケジュール済み、実行中、キャンセル、失敗、成功)。
  • cancellation: ユーザーがオペレーションのキャンセルをリクエストしたかどうか。
  • progress: オペレーションの進行状況の推定(0~100%)
  • destination: オペレーションがログをコピーする Cloud Storage バケットの名前。
  • filter: コピーするログエントリを指定するフィルタ。
  • name: オペレーションがログをコピーする Logging バケットの名前。
  • logEntriesCopiedCount: オペレーションによって Cloud Storage バケットに正常にコピーされたログエントリの数。

すべてのメタデータ フィールドがすべてのコピー オペレーションに適用されるわけではありません。たとえば、コピー オペレーションがまだ実行されている場合、endtime メタデータはオペレーションに適用されません。別の例として、gcloud alpha logging copy コマンドの実行時に --log-filter=FILTER フラグが使用されなかった場合、filter メタデータはオペレーションに適用されません。

コピー オペレーションに関する情報を取得するには、次のコマンドを実行します。

gcloud alpha logging operations describe OPERATION_ID \
--location=LOCATION --project=PROJECT_ID

このコマンドは、コピー オペレーションに関するメタデータを返します。たとえば、進行中のオペレーションの出力は次のようになります。

  done: false
  metadata:
    @type: type.googleapis.com/google.logging.v2.CopyLogEntriesMetadata
    progress: 75
    request:
      destination: storage.googleapis.com/my-storage-bucket-1
      filter: “timestamp > 2021-05-23T10:00:00.0Z"
      name: projects/my-test-project/locations/us-central1/buckets/my-logging-bucket-2
    startTime: 2021-05-23T10:52:40.039751Z
    state: OPERATION_STATE_RUNNING
   

コピー オペレーションのキャンセル

進行中のコピー オペレーションをキャンセルできます。コピー オペレーションをキャンセルした場合、キャンセルする前にコピーされたすべてのログエントリは Cloud Storage バケットに残ります。

コピー オペレーションをキャンセルした後、Logging はキャンセルを完了する前に、進行中のプロセスをすべて完了します。これにより、オペレーションをキャンセルした後も、一部のログエントリが Cloud Storage にコピーされる可能性があります。

コピー オペレーションをキャンセルするには、次のコマンドを実行します。

gcloud alpha logging operations cancel OPERATION_ID \
--location=LOCATION --project=PROJECT_ID

Cloud Storage でのログの表示

Cloud Storage にコピーしたログを表示して理解するには、ログの構成をご覧ください。

割り当てと上限

割り当てについては、Cloud Logging API の割り当てをご覧ください。

大量のコピー(ペタバイトなど)をするには、--filter フラグの timestamp フィールドを使用して、複数のコピー オペレーションに分割します。

料金

Cloud Logging ではログのコピーに料金はかかりませんが、Cloud Storage のエクスポート先で料金が適用されることがあります。詳細については、Cloud Storage の料金をご覧ください。