复制日志条目

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

本页面介绍如何手动将已存储在 Cloud Logging 存储桶中的日志条目复制到 Cloud Storage 存储桶。

出于以下原因,您可能需要将日志条目从 Logging 存储桶复制到 Cloud Storage 存储桶:

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

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

请注意,复制操作不会替换接收器,后者会自动将所有传入的日志条目发送到预先选定的受支持存储目标位置(包括 Cloud Storage)。如果您提前知道要存储日志条目的位置,请使用接收器。

如需复制日志,然后管理和监控操作,请使用 gcloud CLI,如以下部分所述。

限制

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

  • 此功能在 Google Cloud Console 中不可用;请按照说明使用 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 配额

如需复制大量卷(例如 PB 级),请使用 --filter 标志中的 timestamp 字段在多个复制操作之间拆分复制。

价格

Cloud Logging 不会向您收取日志复制费用,但可能会产生 Cloud Storage 目标位置费用。如需了解详情,请参阅 Cloud Storage 价格