适用于 Storage Transfer Service 的 Cloud Logging

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

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

文件系统传输还可以配置文件系统传输日志

准备工作

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

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

可记录的操作

可以记录以下操作:

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

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

启用日志记录

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

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:查找待办事项,例如列出目录中的文件或列出存储桶中的对象。 对于基于代理的转移作业,不会报告。
  • COPY:将文件或对象复制到 Cloud Storage。
  • DELETE:删除来源、目标或中间存储桶中的文件或对象。
completeTime 操作完成时符合 ISO 8601 标准的时间戳。
destinationContainer

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

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

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

仅适用于 COPYDELETE 操作。

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

  • gcsObjectposixFile,具体取决于目的地。这两个选项都包含多个子字段,用于指定位置、日期/时间信息以及对象或文件的哈希值。
  • 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 对象。
    • 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。