适用于 Storage Transfer Service 的 Cloud Logging

本页面介绍如何配置和查看适用于 Storage Transfer Service 日志的 Cloud Logging。

所有转移作业均支持适用于 Storage Transfer Service 的 Cloud Logging。系统不会记录基于代理的转移的 FIND 操作。

文件系统转移还可以配置文件系统转移日志

准备工作

在开始之前,请验证您是否有权访问 Cloud Logging。我们建议使用 Logs Viewer (roles/logging.viewer) Identity and Access Management 角色。如需详细了解 Logging 访问权限,请参阅使用 IAM 进行访问权限控制

下文介绍了如何验证和授予 IAM 访问权限:

可记录的操作

可以记录以下操作:

  • FIND:查找待办事项,例如列出目录中的文件、列出存储桶中的对象或列出存储桶中的托管文件夹。不支持基于代理的转移。
  • COPY:将文件或对象复制到 Cloud Storage。
  • DELETE:删除来源或目标位置的文件或对象。对于两个文件系统之间的转移,还会记录从中间 Cloud Storage 存储桶中删除文件的操作。

可记录的状态

对于每项操作,您可以选择记录以下一种或多种状态:

  • SUCCEEDED:操作成功。
  • FAILED:操作失败。
  • SKIPPED:仅适用于 COPY 操作,且仅支持基于代理的迁移作业。必须使用 gcloud 或 REST API 进行设置。此状态表示复制已跳过。当接收器中已存在相应文件,且您的转移作业配置为忽略现有文件时,就会发生这种情况。

启用日志记录

如需启用日志记录,请指定要记录的操作和状态。

gcloud CLI

使用 gcloud transfer jobs create 创建转移作业时,请使用以下标志启用日志记录:

gcloud transfer jobs create SOURCE DESTINATION \
  --log-actions=copy,delete,find \
  --log-action-states=succeeded,failed,skipped

您必须为每个标志至少指定一个值。

REST

如需创建日志记录配置,请使用带有 LoggingConfigtransferJobs.create

{
  "name":"transferJobs/myFirstTransfer",
  "status": "ENABLED",
  "projectId": "test-id-001",
  "loggingConfig": {
     "logActions": ["FIND", "DELETE", "COPY"],
     "logActionStates": ["SUCCEEDED", "FAILED", "SKIPPED"], #SKIPPED is only supported for agent-based transfers
  },
  "transferSpec": {
      "awsS3DataSource": {
          "bucketName": "AWS_SOURCE_NAME",
          "awsAccessKey": {
              "accessKeyId": "AWS_ACCESS_KEY_ID",
              "secretAccessKey": "AWS_SECRET_ACCESS_KEY"
          }
      },
      "gcsDataSink": {
           "bucketName": "destination_bucket",
           "path": "foo/bar/"
      },
   }
}

调整 loggingConfig 以包含要记录的特定 logActionslogActionStates。例如,如需记录失败的复制和查找操作,请提供以下 loggingConfig

"loggingConfig": {
  "logActions": ["COPY", "FIND"],
  "logActionStates": ["FAILED"],
}

更新日志记录配置

gcloud CLI

如需更新现有作业的日志记录配置,请使用 gcloud transfer jobs update 命令和相应的标志:

gcloud transfer jobs update NAME \
  --log-actions=copy,delete,find \
  --log-action-states=succeeded,failed,skipped

如需停用此作业的日志记录,请指定 --clear-log-config

gcloud transfer jobs update NAME --clear-log-config

REST

如需更新现有转移作业的日志记录配置,请使用带有 LoggingConfigtransferJobs.patch

{
  "projectId": "test-id-001",
  "transferJob": {
    "loggingConfig": {
       "logActions": ["FIND", "DELETE", "COPY"],
       "logActionStates": ["SUCCEEDED", "FAILED", "SKIPPED"], #SKIPPED is only supported for agent-based transfers
    },
  },
  "updateTransferJobFieldMask": "loggingConfig"
}

updateTransferJobFieldMask 指定此请求中要更新的字段,并且此字段为必填字段。

如需停用此作业的日志记录,请发送 loggingConfig 以及 logActionslogActionStates 的空列表:

{
  "projectId": "test-id-001",
  "transferJob": {
    "loggingConfig": {
       "logActions": [],
       "logActionStates": [],
    },
  },
  "updateTransferJobFieldMask": "loggingConfig"
}

查看日志

如需查看转移日志,请执行以下操作:

Google Cloud 控制台

  1. 转到 Google Cloud 导航菜单 ,然后选择 Logging > 日志浏览器:<br\></br\>

    转到日志浏览器

  2. 选择一个 Google Cloud 项目。

  3. 升级菜单中,从旧版日志查看器切换到日志浏览器

  4. 如需过滤日志以仅显示 Storage Transfer Service 条目,请在查询字段中输入 storage_transfer_job,然后点击运行查询

  5. 查询结果窗格中,点击修改时间以更改返回结果的时间段。

如需详细了解如何使用 Logs Explorer,请参阅使用 Logs Explorer

gcloud CLI

如需使用 gcloud CLI 搜索 Storage Transfer Service 日志,请使用 gcloud logging read 命令。

指定过滤条件以将结果限制为 Storage Transfer Service 日志。

gcloud logging read "resource.type=storage_transfer_job"

Cloud Logging API

使用 entries.list Cloud Logging API 方法。

如需过滤结果以仅包含与 Storage Transfer Service 相关的条目,请使用 filter 字段。示例 JSON 请求对象如下。

{
"resourceNames":
  [
    "projects/my-project-name"
  ],
  "orderBy": "timestamp desc",
  "filter": "resource.type=\"storage_transfer_job\""
}

转移日志格式

以下部分介绍 Storage Transfer Service 日志的字段。

所有特定于 Storage Transfer Service 的字段都包含在 jsonPayload 对象中。

FIND 操作

{
  "jsonPayload": {
    "@type": "type.googleapis.com/google.storagetransfer.logging.TransferActivityLog",
    "action": "FIND",
    "completeTime": "2021-12-16T18:58:49.344509695Z",
    "destinationContainer": {
      "gcsBucket": {
        "bucket": "my-bucket-2",
      },
      "type": "GCS",
    },
    "operation": "transferOperations/transferJobs-7876027868280507149--3019866490856027148",
    "sourceContainer": {
      "gcsBucket": {
        "bucket": "my-bucket-1"
      },
      "type": "GCS"
    },
    "status": {
      "statusCode": "OK"
    }
  }
}

COPYDELETE 操作

{
  "jsonPayload": {
    "@type": "type.googleapis.com/google.storagetransfer.logging.TransferActivityLog",
    "action": "COPY",
    "completeTime": "2021-12-16T18:59:00.510509049Z",
    "destinationObject": {
      "gcsObject": {
        "bucket": "my-bucket-2",
        "objectKey": "README.md"
      },
      "type": "GCS",
    },
    "operation": "transferOperations/transferJobs-7876027868280507149--3019866490856027148",
    "sourceObject": {
      "gcsObject": {
        "bucket": "my-bucket-1",
        "lastModifiedTime": "2021-12-07T16:41:09.456Z",
        "md5": "WgnCOIdfCXNTUDpQJSKb2w==",
        "objectKey": "README.md",
      },
      "type": "GCS",
    },
    "status": {
      "statusCode": "OK"
    }
  }
}
日志字段 说明
@type 值始终为 type.googleapis.com/google.storagetransfer.logging.TransferActivityLog
action

描述此特定任务的操作。以下项之一:

  • FIND:查找待办事项,例如列出目录中的文件或列出存储桶中的对象。 基于代理的转移不会报告此指标。
  • COPY:将文件或对象复制到 Cloud Storage。
  • DELETE:删除来源、目标位置或中间存储桶中的文件或对象。
findAction

指定查找操作的主题是对象还是受管理的文件夹

completeTime 操作完成时符合 ISO 8601 标准的时间戳。
destinationContainer

仅适用于 FIND 操作。 对于基于代理的转移,系统不会记录 FIND 操作。

此转移作业的目标容器。包含两个子字段:

  • gcsBucket.bucket:目标 Cloud Storage 存储桶名称。
  • type:始终为 GCS
destinationObject

仅适用于 COPYDELETE 操作。

有关目标位置的对象的信息。包含两个子字段:

  • gcsObjectgcsManagedFolderposixFile 之一,具体取决于目的地。所有选项都包含多个子字段,用于指定名称、位置、日期/时间信息以及对象或文件的哈希。
  • typeGCSPOSIX_FS 中的一个。

例如:

"destinationObject": {
  "type": "POSIX_FS",
  "posixFile": {
    "crc32c": "0",
    "path": "/tmp/data/filename.txt",
    "lastModifiedTime": "2022-09-22T04:33:45Z"
  }
}
operation 完全限定的 transferOperations 名称。
sourceContainer

仅适用于 FIND 操作。 对于基于代理的转移,系统不会记录 FIND 操作。

此转移的来源容器。包含两个子字段:

  • 指定来源位置的条目。该字段根据来源类型命名。可能的字段如下所示。
    • awsS3Bucket.bucket:AWS S3 存储桶名称。
    • azureBlobContainer:包含 accountcontainer 子字段,它们共同定义 Microsoft Azure Blob 存储 URI。
    • gcsBucket.bucket:Cloud Storage 存储桶名称。
    • httpManifest.url网址列表的网址。该网址指定了要从 HTTP(S) 服务器下载的公开提供的文件。
  • typeAWS_S3AZURE_BLOBGCSHTTP 中的一个。

例如:

"sourceContainer": {
  "gcsBucket": {
    "bucket": "my-bucket-1"
  }
  type: "GCS"
}
sourceObject

仅适用于 COPYDELETE 操作。

与源对象相关的信息。包含两个子字段:

  • 特定于来源对象的主机的条目。该字段根据来源类型命名,并包含元数据的子字段。可能的字段如下所示。
    • awsS3Object:AWS S3 对象。
    • azureBlob:Azure Blob Storage 中的文件。
    • gcsObject:Cloud Storage 对象。
    • gcsManagedFolder:Cloud Storage 受管文件夹。
    • httpFile:由网址列表指定的文件。
    • posixFile:POSIX 文件系统上的文件。
  • typeAWS_S3AZURE_BLOBGCSHTTPPOSIX_FS 中的一个。

例如:

"sourceObject": {
  "gcsObject": {
    "bucket": "my-bucket-1"
    "lastModifiedTime": "2021-12-07T16:41:09.456Z"
    "md5": "WgnCOIdfCXNTUDpQJSKb2w=="
    "objectKey": "README.md"
  }
  type: "GCS"
}
status

操作的状态。如果 status.statusCodeOK,则表示操作成功。否则,操作失败。仅当状态不是 OK 时,才会填充 status.errorTypestatus.errorMessage 字段。

此外,顶级 resource 字段包含以下字段。

"resource": {
  "labels": {
    "job_id": "transferJobs/7876027868280507149"
    "project_id": "my-project-id"
  }
  "type": "storage_transfer_job"
}
日志字段 说明
resource.labels.job_id 日志所属的 Storage Transfer Service 作业名称。
resource.labels.project_id 转移作业的 Google Cloud 项目 ID。