本頁說明如何設定 Storage 移轉服務,產生記錄動作和狀態的記錄資料。您可以使用 Cloud Logging 查看及分析記錄資料。
Storage 移轉服務可以為所有移轉作業產生記錄資料。不過,系統不會記錄以代理程式為準的轉移作業。FIND
檔案系統移轉作業還可設定檔案系統移轉記錄檔。
事前準備
開始前,請確認您有權存取 Cloud Logging。建議使用 Logs Viewer (roles/logging.viewer) Identity and Access Management 角色。如要進一步瞭解 Logging 存取權,請參閱「使用 IAM 控管存取權」。
下列文件說明如何驗證目前的存取權,以及如何授予 IAM 角色:
可記錄的動作
系統可記錄下列動作:
FIND:尋找待辦事項,例如列出目錄中的檔案、bucket 中的物件,或 bucket 中的代管資料夾。不支援以服務專員為主的轉移作業。COPY:將檔案或物件複製到 Cloud Storage。DELETE:刪除來源或目的地的檔案或物件。如果是兩個檔案系統之間的轉移作業,也會記錄從中繼 Cloud Storage bucket 刪除檔案的動作。
可記錄的狀態
您也可以為每個動作記錄一或多個下列狀態:
SUCCEEDED:動作成功。FAILED:動作失敗。SKIPPED:僅適用於 COPY 動作,且僅支援以代理程式為基礎的轉移工作。必須使用gcloud或 REST API 設定。這個狀態表示系統已略過複製作業。如果檔案已存在於接收器,且轉移工作設定為忽略現有檔案,就會發生這種情況。
最佳做法
啟用 FIND 動作或 SUCCEEDED 狀態的記錄功能,可能會產生大量記錄資料,進而影響 Cloud Logging 費用。
您可以採取下列策略,減少儲存的記錄資料量:
只記錄失敗的作業。如果您不需要完整的物件層級法規遵循稽核,請將工作設定為只在發生失敗時,針對複製和刪除動作寫入記錄。
使用指標資料監控處理量、位元組計數,以及略過或失敗的物件。您可以建立圖表,並使用警告政策監控指標資料。如要查看可用指標清單,請參閱「Storage 移轉服務」。
設定 Cloud Logging,捨棄價值不高的巨量記錄資料。如要進行這項變更,請更新專案中的記錄接收器,排除低價值的 Storage 移轉服務 記錄資料。由於專案中的所有記錄接收器都會評估所有記錄項目,您可能需要更新多個記錄接收器。
使用下列排除篩選器,排除記錄成功動作的 Storage 移轉服務記錄項目:
resource.type="storage_transfer_job" AND jsonPayload.status.statusCode="OK"如要瞭解如何尋找及修改記錄接收器,請參閱「將記錄檔轉送至支援的目的地」。
啟用記錄功能
如要設定 Storage 移轉服務產生記錄資料,請指定要記錄的動作和狀態。
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.create 和 LoggingConfig:
{
"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,加入要記錄的特定 logActions 和 logActionStates。舉例來說,如要記錄複製和尋找動作失敗的時間,請提供下列 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,並將 logActions 和 logActionStates 的清單設為空白:
{
"projectId": "test-id-001",
"transferJob": {
"loggingConfig": {
"logActions": [],
"logActionStates": [],
},
},
"updateTransferJobFieldMask": "loggingConfig"
}
查看記錄
如要查看移轉記錄,請按照下列步驟操作:
Google Cloud 控制台
前往 Google Cloud 導覽選單 menu,然後依序選取「記錄」>「記錄檔探索工具」 :
選取 Google Cloud 專案。
從「升級」選單中,將「舊版記錄檢視器」切換為「Logs Explorer」。
如要篩選記錄,只顯示 Storage 移轉服務 項目,請在查詢欄位中輸入
storage_transfer_job,然後按一下「執行查詢」。在「查詢結果」窗格中,按一下「編輯時間」,即可變更要傳回結果的時間範圍。
如要進一步瞭解如何使用記錄檔探索工具,請參閱「使用記錄檔探索工具」。
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"
}
}
}
COPY 和 DELETE 動作
{
"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 |
說明這項特定工作的動作。可以是下列其中一項:
|
findAction |
指出尋找動作的主體是物件還是代管資料夾。 |
completeTime |
作業完成時的時間戳記,符合 ISO 8601 格式。 |
destinationContainer |
僅適用於 這項轉移作業的目標容器。包含兩個子欄位:
|
destinationObject |
僅適用於 目的地物件的相關資訊。包含兩個子欄位:
例如: "destinationObject": { "type": "POSIX_FS", "posixFile": { "crc32c": "0", "path": "/tmp/data/filename.txt", "lastModifiedTime": "2022-09-22T04:33:45Z" } } |
operation |
完整
transferOperations 名稱。 |
sourceContainer |
僅適用於 這項轉移作業的來源容器。包含兩個子欄位:
例如: "sourceContainer": { "gcsBucket": { "bucket": "my-bucket-1" }, type: "GCS" } |
sourceObject |
僅適用於 來源物件的相關資訊。包含兩個子欄位:
例如: "sourceObject": { "gcsObject": { "bucket": "my-bucket-1" "lastModifiedTime": "2021-12-07T16:41:09.456Z" "md5": "WgnCOIdfCXNTUDpQJSKb2w==" "objectKey": "README.md" }, type: "GCS" } |
status |
動作的狀態。如果 |
此外,頂層 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。 |