本页面介绍了如何将 Cloud Logging 日志存储分区中已存储的日志条目手动复制到 Cloud Storage 存储分区。出于以下原因,您可能需要将日志条目从日志存储分区复制到 Cloud Storage 存储分区:
- 如果您在将日志条目存储在 Logging 中之前忘记将日志条目路由到 Cloud Storage。
- 与 Logging 外部的审核人员共享日志条目。
- 使用 Cloud Storage 中的脚本分析日志条目。
将日志条目复制到 Cloud Storage 时,日志条目也会保留在复制它们的日志存储桶中。
复制操作不会取代接收器,后者会自动将所有传入的日志条目发送到预先选择的受支持的存储目标位置,包括 Cloud Storage 存储分区。如果您确定要在 Cloud Storage 存储桶中存储日志条目,请使用接收器。
如需复制日志,然后管理和监控操作,您必须使用 Google Cloud CLI。
限制
复制日志条目时,存在以下限制:
您只能将日志复制到 Cloud Storage 存储桶,其他目标位置不可用。
您无法从配置了 CMEK 的日志存储分区中复制日志。
准备工作
在开始复制日志之前,请执行以下操作:
- 确认您使用的是最新版 gcloud CLI。如需了解如何安装或更新 gcloud CLI,请参阅管理 Google Cloud CLI 组件。
-
如需获取从 Logging 复制日志条目并将日志条目写入 Cloud Storage 所需的权限,请让管理员向您授予项目的以下 IAM 角色:
-
Logging Admin (
roles/logging.admin
) -
Storage Object Creator (
roles/storage.objectCreator
)
-
Logging Admin (
-
如需获取查看和管理复制操作状态所需的权限,请让管理员向您授予项目的 Logs Configuration Writer (
roles/logging.configWriter
) IAM 角色。
复制日志条目
Logging 仅在复制操作开始时复制存储在日志存储桶中的日志条目。复制操作开始后存储在日志存储分区中的日志条目不会复制到 Cloud Storage。
如需将日志条目复制到 Cloud Storage,您需要知道以下信息:
- 要从中复制数据的日志存储桶的 ID 和位置。如需检索日志存储桶 ID 及其位置,请使用 gcloud CLI 命令
gcloud logging buckets list
。 - 要向其中复制数据的 Cloud Storage 存储桶的名称。如需了解如何检索 Cloud Storage 存储桶名称,请参阅获取 Cloud Storage 存储桶信息。
- 用于要复制的日志条目的过滤条件。
如需复制日志条目,请运行 gcloud logging copy
命令:
gcloud logging copy BUCKET_ID storage.googleapis.com/CLOUD_STORAGE_BUCKET_NAME \
--location=LOCATION --log-filter='FILTER' --project=PROJECT_ID
在运行上一个命令之前,请执行以下操作:
- 将 BUCKET_ID 替换为您的日志存储桶的名称。
- 将 CLOUD_STORAGE_BUCKET_NAME 替换为您的 Cloud Storage 存储桶的名称。
- 将 LOCATION 替换为日志存储桶的位置。
(可选):将 FILTER 替换为用于定义复制哪些日志的过滤条件。
将 PROJECT_ID 替换为您的 Google Cloud 项目 ID。当活跃 gcloud CLI 配置设置为正确的 Google Cloud 项目时,您可以省略此标志。
示例命令:
gcloud 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
复制操作的位置与您要从中复制日志的日志存储桶的位置相同。
查看和管理复制操作
您可以使用 gcloud logging operations
命令来查看和管理复制操作,该命令可让您列出、查看和取消操作。
以下命令要求您指定操作的位置。使用日志存储桶的位置。如需了解如何查找日志存储桶的位置,请参阅查看存储桶的详细信息。
列出复制操作
您可以列出最近的复制操作,包括已安排、正在运行、已完成、失败和已取消的操作。最近的复制操作会在结束时间之后最长 30 天内出现在结果中。
如需列出复制操作,请运行以下命令:
gcloud logging operations list --location=LOCATION \
--operation-filter=request_type=CopyLogEntries \
--project=PROJECT_ID
在运行上一个命令之前,请执行以下操作:
- 将 LOCATION 替换为您要从中复制日志的日志存储桶的位置。
- 将 PROJECT_ID 替换为您的 Google Cloud 项目 ID。
该命令会返回有关长时间运行的操作的信息,包括操作 ID:
projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
查看复制操作的状态
您可以检索有关复制操作的状态和其他元数据,包括:
startTime
:指示操作创建的时间戳。endTime
:指示操作完成的时间戳。state
:操作的状态(已安排、正在运行、已取消、失败或成功)。cancellation
:用户是否已请求取消操作。progress
:估算的操作进度 (0-100%)。destination
:操作将日志复制到的 Cloud Storage 存储桶的名称。filter
:用于指定要复制的日志条目的过滤条件。name
:从中复制日志操作的日志存储桶的名称。logEntriesCopiedCount
:操作成功复制到 Cloud Storage 存储桶的日志条目数。
请注意,并非所有列出的元数据字段都适用于所有复制操作。例如,如果复制操作仍在运行,则 endtime
元数据不会应用于该操作。再举一例,如果在运行 gcloud logging copy
命令时未使用 --log-filter=FILTER
标志,则 filter
元数据不适用于该操作。
如需检索复制操作的相关信息,请运行以下命令:
gcloud logging operations describe OPERATION_ID \
--location=LOCATION --project=PROJECT_ID
在运行上一个命令之前,请执行以下操作:
- 将 OPERATION_ID 替换为操作的 ID。
- 将 LOCATION 替换为您要从中复制日志的日志存储桶的位置。
- 将 PROJECT_ID 替换为您的 Google Cloud 项目 ID。
该命令返回有关复制操作的元数据。例如,以下是正在进行的操作的输出:
done: false
metadata:
`@type`: type.googleapis.com/google.logging.v2.CopyLogEntriesMetadata
progress: 75
destination: storage.googleapis.com/my-storage-bucket-1
source: projects/my-test-project/locations/us-central1/buckets/my-logging-bucket-2
verb: copy
startTime: `2023-05-23T10:52:40.039751Z`
state: OPERATION_STATE_RUNNING
name: projects/my-test-project/locations/us-central1/buckets/my-logging-bucket-2
</pre>
取消复制操作
您可以取消正在进行的复制操作。如果您取消复制操作,则操作取消之前复制的所有日志条目都会保留在 Cloud Storage 存储桶中。
取消复制操作后,Logging 会完成所有正在进行的进程,然后再完成取消。因此,取消操作后,某些日志条目可能仍会被复制到 Cloud Storage。
要取消复制操作,请运行以下命令:
gcloud logging operations cancel OPERATION_ID \
--location=LOCATION --project=PROJECT_ID
在运行上一个命令之前,请执行以下操作:
- 将 OPERATION_ID 替换为操作的 ID。
- 将 LOCATION 替换为您要从中复制日志的日志存储桶的位置。
- 将 PROJECT_ID 替换为您的 Google Cloud 项目 ID。
查看 Cloud Storage 中的日志
如需查看并了解复制到 Cloud Storage 的日志,请参阅查看路由到 Cloud Storage 的日志。
配额和限制
无论复制的数据量是多少,所有复制操作都至少需要一个小时才能完成。
如需复制大量卷(例如 PB 级),请使用 --filter
标志中的 timestamp
字段在多个复制操作之间拆分复制。
价格
Cloud Logging 不会将日志路由到受支持的目的地;但是,该目的地可能会产生费用。除 _Required
日志存储桶外,Cloud Logging 会针对将日志流式传输到日志存储桶以及超出日志存储桶默认保留期限的存储收取费用。
Cloud Logging 不会就复制日志或通过日志浏览器页面或日志分析页面发出的查询收费。
有关详情,请参阅以下文档:
- Cloud Logging 价格摘要
目标页面费用:
- 当您在 Cloud Logging 中发送 Virtual Private Cloud 流日志后又将其排除时,需支付 VPC 流日志生成费用。