Storage 移轉服務的 Cloud Logging

本頁面說明如何設定及查看 Storage 移轉服務記錄的 Cloud Logging。

所有移轉作業都支援 Storage 移轉服務的 Cloud Logging。系統不會針對以代理程式為基礎的轉移作業記錄 FIND 作業。

檔案系統移轉作業還可以設定檔案系統移轉記錄

事前準備

開始前,請確認您有權存取 Cloud Logging。建議您使用「記錄檢視者」(roles/logging.viewer)身分與存取權管理角色。如要進一步瞭解 Logging 存取權,請參閱「使用 IAM 控管存取權」。

以下說明如何驗證及授予 IAM 存取權:

可記錄的動作

系統可記錄下列動作:

  • FIND:尋找要執行的工作,例如列出目錄中的檔案、bucket 中的物件,或 bucket 中的代管資料夾。不支援以服務專員為基礎的轉移作業。
  • 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

如要建立記錄設定,請搭配使用 transferJobs.createLoggingConfig

{
  "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

如要更新現有移轉工作的記錄設定,請使用 transferJobs.patch 搭配 LoggingConfig

{
  "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」>「Logs Explorer」 :<br\></br\>

    前往「Logs Explorer」

  2. 選取 Google Cloud 專案。

  3. 在「Upgrade」選單中,將「Legacy Logs Viewer」切換為「Logs Explorer」

  4. 如要篩選記錄檔,只顯示 Storage Transfer Service 項目,請在查詢欄位中輸入 storage_transfer_job,然後按一下「Run query」

  5. 在「查詢結果」窗格中,按一下「編輯時間」,變更要傳回結果的時間範圍。

如要進一步瞭解如何使用記錄檔探索工具,請參閱「使用記錄檔探索工具」。

gcloud CLI

如要使用 gcloud CLI 搜尋 Storage 移轉服務記錄,請使用 gcloud logging read 指令。

指定篩選器,將結果限制在 Storage 移轉服務記錄。

gcloud logging read "resource.type=storage_transfer_job"

Cloud Logging API

使用 entries.list Cloud Logging API 方法。

如要篩選結果,只顯示 Storage 移轉服務相關的項目,請使用 filter 欄位。以下是 JSON 要求物件的範例。

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

移轉記錄檔格式

以下說明 Storage 移轉服務記錄的欄位。

所有 Storage 移轉服務專屬欄位都包含在 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 儲存體中的檔案。
    • 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 移轉服務工作名稱。
resource.labels.project_id 這項轉移作業的 Google Cloud 專案 ID。