回溯性批量处理和路由日志

本页面介绍了如何手动复制已存储的日志条目。 导出到 Cloud Storage 存储分区。 建议您将日志条目从日志存储分区复制到 Cloud Storage 或存储分区

  • 如果您在将日志条目存储在 Logging 中之前忘记将日志条目路由到 Cloud Storage。
  • 与 Logging 外部的审核人员共享日志条目。
  • 使用 Cloud Storage 中的脚本分析日志条目。

将日志条目复制到 Cloud Storage 时,日志条目也会保留在复制它们的日志存储桶中。

复制操作不替换 接收器: 预先选择的支持的存储目标位置,包括 Cloud Storage 存储分区。在需要时使用接收器 将日志条目存储在 Cloud Storage 存储桶中。

如需复制日志,然后管理和监控操作,您必须使用 Google Cloud CLI

限制

复制日志条目时,存在以下限制:

  • 您只能将日志复制到 Cloud Storage 存储桶,其他目标位置不可用。

  • 您无法从已配置 CMEK 的日志桶中复制日志。

准备工作

在开始复制日志之前,请执行以下操作:

  • 如需获取从 Logging 复制日志条目,然后向其中写入数据所需的权限 将日志条目写入 Cloud Storage 请让管理员授予您 项目的以下 IAM 角色:

  • 如需获取查看和管理复制操作状态所需的权限, 请让管理员授予您 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 替换为定义要过滤哪些日志的过滤条件 已复制。

    如果您省略 --log-filter 标志,则 系统会将日志存储桶复制到 Cloud Storage 存储桶。

  • 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 > "2024-07-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: `2024-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 字段在多个复制操作之间拆分复制。

复制命令无法复制保留已到期的日志条目。因此,如果复制命令包含 timestamp > "SOME_DATE" 等子句,请确保 SOME_DATE 不早于当前日期减去日志存储桶的保留期限

价格

Cloud Logging 不会将日志路由到 支持的目标位置;不过,目标位置可能会产生费用。 除了 _Required 日志存储桶外,Cloud Logging 会对将日志流式传输到日志存储桶以及存储时间超过日志存储桶默认保留期限的部分收费。

Cloud Logging 不会对复制日志、定义日志范围或通过日志浏览器Log Analytics 页面发出的查询收费。

有关详情,请参阅以下文档: