このページでは、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 にコピーするには、次の情報が必要です。
- コピー元の Logging バケットの ID
- gcloud CLI コマンドの
gcloud logging buckets list
を使用して、この情報を取得します。
- gcloud CLI コマンドの
- コピー元の Logging バケットの特定のロケーション
- この情報を取得するには、このページのLogging バケットのロケーションの取得をご覧ください。
- コピー先の Cloud Storage バケットの ID
- この情報を取得するには、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
ロケーションを使用して作成された可能性があるため、次の手順を実行します。
Cloud プロジェクトで使用されている地理的位置を確認します。
gcloud alpha logging locations list
コピーするオペレーションが見つかるまで、ロケーション別にオペレーションを一覧表示します。
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 の料金をご覧ください。