适用于 Storage Transfer Service 的 Cloud Logging

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

所有无代理转移作业以及从兼容 S3 的存储空间进行的转移作业均支持适用于 Storage Transfer Service 的 Cloud Logging。如需了解文件系统转移日志,请参阅文件系统转移日志

准备工作

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

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

可记录的操作

可以记录以下操作:

  • FIND:查找待办事项,例如列出目录中的文件或列出存储桶中的对象。从兼容 S3 的存储空间转移不支持此操作。
  • COPY:将文件或对象复制到 Cloud Storage。
  • DELETE:删除来源或目标位置的文件或对象。

对于每项操作,您可以选择记录成功和/或失败状态。

启用日志记录

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

gcloud CLI

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

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

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

REST

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

{
  "name":"transferJobs/myFirstTransfer",
  "status": "ENABLED",
  "projectId": "test-id-001",
  "loggingConfig": {
     "logActions": ["FIND", "DELETE", "COPY"],
     "logActionStates": ["SUCCEEDED", "FAILED"],
  },
  "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

如需停用此作业的日志记录,请指定 --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"],
    },
  },
  "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. 查询结果窗格中,点击修改时间以更改返回结果的时间段。

如需详细了解如何使用日志浏览器,请参阅使用日志浏览器

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:查找待办事项,例如列出目录中的文件或列出存储桶中的对象。 不适用于从兼容 S3 的存储空间转移。
  • COPY:将文件或对象复制到 Cloud Storage。
  • DELETE:删除来源或目标位置的文件或对象。
completeTime 操作完成时符合 ISO 8601 标准的时间戳。
destinationContainer

仅适用于 FIND 操作。

此转移作业的目标容器。只有 Cloud Storage 存储桶支持日志记录。包含两个子字段:

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

仅适用于 COPYDELETE 操作。

关于对象写入 Cloud Storage 时的信息。包含两个子字段:

  • gcsObject 本身包含两个子字段:bucketobjectKey。它们共同定义对象的 Cloud Storage 路径。
  • type 始终为 GCS

例如:


destinationObject: {
  gcsObject: {
    bucket: "my-bucket-2"
    objectKey: "README.md"
  }
  type: "GCS"
}
operation 完全限定的 transferOperations 名称。
sourceContainer

仅适用于 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 对象。
    • httpFile:由网址列表指定的文件。
  • typeAWS_S3AZURE_BLOBGCSHTTP 中的一个。

例如:


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。