本页面介绍如何手动将已存储在 Cloud Logging 存储桶中的日志条目复制到 Cloud Storage 存储桶。
出于以下原因,您可能需要将日志条目从 Logging 存储桶复制到 Cloud Storage 存储桶:
如果您在将日志条目存储在 Logging 中之前忘记将日志条目路由到 Cloud Storage。
与 Logging 外部的审核人员共享日志条目。
使用 Cloud Storage 中的脚本分析日志条目。
将日志条目复制到 Cloud Storage 时,日志条目也会保留在复制它们的日志存储桶中。
请注意,复制操作不会替换接收器,后者会自动将所有传入的日志条目发送到预先选定的受支持存储目标位置(包括 Cloud Storage)。如果您提前知道要存储日志条目的位置,请使用接收器。
如需复制日志,然后管理和监控操作,请按照下文所述使用 gcloud CLI。
限制
复制日志条目时,存在以下限制:
Google Cloud 控制台中没有此功能;请按照说明使用 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.* 权限的自定义角色:
roles/logging.admin
roles/logging.configWriter
复制日志条目
Logging 仅在复制操作开始时复制存储在日志存储桶中的日志条目。在复制操作开始后提取和存储的日志条目不会复制到 Cloud Storage。
如需将日志条目复制到 Cloud Storage,您需要知道以下信息:
从中复制日志的 Logging 存储桶的 ID 和位置。如需检索 Logging 存储桶 ID 及其位置,请使用 gcloud CLI 命令 gcloud logging buckets list。
要复制到的 Cloud Storage 存储桶的 ID。如需了解如何检索 Cloud Storage 存储桶 ID,请参阅获取 Cloud Storage 存储桶信息。
您要复制的日志条目的过滤条件。
如需复制日志条目,请运行 gcloud alpha logging copy 命令:
注意:如果有效 gcloud CLI 配置设置为所需的 Cloud 项目,则可以省略 --project 标志。如果您不使用 --log-filter=FILTER 标志,则 Logging 存储桶中的所有日志条目都会复制到 Cloud Storage 存储桶。
示例命令:
此命令会创建一个长时间运行的操作,用于在后台运行以及返回复制操作的名称以及日志存储桶的位置:
复制操作的位置与您要从中复制日志的日志存储桶的位置相同。对于使用 global 位置创建的 Logging 存储桶,系统将在您运行复制操作时返回存储桶的实际位置。
查看和管理复制操作
您可以使用 gcloud alpha logging operations 命令查看和管理复制操作,以便列出、查看和取消操作。
在以下命令中,将 LOCATION 替换为 Cloud Storage 存储桶的位置。如需了解如何查找 Cloud Storage 存储桶的位置,请参阅获取 Cloud Storage 存储桶信息。
列出复制操作
您可以列出最近的复制操作,包括已安排、正在运行、已完成、失败和已取消的操作。近期的复制操作会在结果结束后最多显示 5 天。
如需列出复制操作,请运行以下命令:
该命令会返回有关长时间运行的操作的信息,包括操作 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 元数据不适用于该操作。
如需检索复制操作的相关信息,请运行以下命令:
该命令返回有关复制操作的元数据。例如,以下是正在进行的操作的输出:
取消复制操作
您可以取消正在进行的复制操作。如果您取消复制操作,则操作取消之前复制的所有日志条目都会保留在 Cloud Storage 存储桶中。
取消复制操作后,Logging 会完成所有正在进行的进程,然后再完成取消。因此,取消操作后,某些日志条目可能仍会被复制到 Cloud Storage。
要取消复制操作,请运行以下命令:
查看 Cloud Storage 中的日志
如需查看和了解您复制到 Cloud Storage 的日志,请参阅查看路由到 Cloud Storage 的日志。
配额和限制
如需了解配额,请参阅 Cloud Logging API 配额。如需复制大量卷(例如 PB 级),请使用 --filter 标志中的 timestamp 字段在多个复制操作之间拆分复制。