回溯批次處理及轉送記錄檔

本頁面說明如何手動將已儲存在 Cloud Logging 記錄值區中的記錄項目複製到 Cloud Storage 值區。複製作業不需要將記錄值區和 Cloud Storage 值區放在同一個 Google Cloud 專案中。

您可能會想將記錄項目從記錄值區複製到 Cloud Storage 值區,原因如下:

  • 在記錄儲存至 Logging 之前,您忘記將記錄項目轉送至 Cloud Storage。
  • 如要與稽核人員共用記錄項目,但不透過 Logging 進行。
  • 如何在 Cloud Storage 中使用指令碼分析記錄項目。

將記錄項目複製到 Cloud Storage 時,記錄項目也會保留在複製來源的記錄值區中。

複製作業不會取代sink,後者會自動將所有符合「包含」和「排除」篩選器的傳入記錄項目,傳送至預先選取的支援儲存空間目的地,包括 Cloud Storage 值區。您無法使用接收器回溯路由記錄。如果您事先知道要將記錄項目儲存在 Cloud Storage 值區中,請使用接收器。

如要複製記錄檔,然後管理及監控作業,您必須使用 Google Cloud CLI

限制

複製記錄項目時,請注意下列限制:

  • 您只能將記錄檔複製到 Cloud Storage 值區,無法使用其他目的地。

  • 您無法從已設定 CMEK 的記錄資料夾複製記錄。

事前準備

開始複製記錄前,請先執行下列操作:

  • 如要取得複製記錄項目所需的權限,請要求管理員在包含您要複製記錄值區的專案中,授予您下列 IAM 角色:

  • 如要取得寫入 Cloud Storage 記錄項目所需的權限,請要求管理員為您授予包含 Cloud Storage 值區的專案的 Storage Object Creator (roles/storage.objectCreator) IAM 角色。

複製記錄項目

記錄只會在複製作業開始時複製儲存在記錄檔 bucket 中的記錄項目。在複製作業開始後儲存在記錄檔值區中的記錄項目,不會複製到 Cloud Storage。

如要將記錄項目複製到 Cloud Storage,您需要知道下列資訊:

如要複製記錄項目,請執行 gcloud logging copy 指令:

gcloud logging copy BUCKET_ID storage.googleapis.com/CLOUD_STORAGE_BUCKET_NAME \
--location=LOCATION --log-filter='FILTER' --project=PROJECT_ID

執行上述指令前,請先執行下列操作:

  • 請將 BUCKET_ID 替換為您的記錄值區名稱。
  • 請將 CLOUD_STORAGE_BUCKET_NAME 改成您的 Cloud Storage 值區名稱。
  • LOCATION 替換為記錄值區的位置。
  • (選用) 將 FILTER 替換為定義要複製哪些記錄的篩選器。

    如果您省略 --log-filter 標記,系統會將記錄值區中的所有記錄項目複製到 Cloud Storage 值區。

  • PROJECT_ID 替換為您的 Google Cloud 專案 ID。如果有效的 gcloud CLI 設定已設為正確的 Google Cloud 專案,您可以省略此標記。

指令範例:

gcloud logging copy my-log-bucket storage.googleapis.com/my-gcs-bucket \
--location=global --log-filter='timestamp > "2024-07-18T10:00:00.0Z"' \
--project=my-project

這個指令會建立長期執行作業,以便在背景執行,並傳回複製作業的名稱和記錄值區的位置:

name: projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

複製作業的位置與您要複製的記錄值區位置相同。

查看及管理複製作業

您可以使用 gcloud logging operations 指令查看及管理複製作業,這項指令可讓您列出、查看及取消作業。

下列指令需要您指定作業的位置。使用記錄檔值區的位置。如要瞭解如何找出記錄值區的位置,請參閱「查看值區的詳細資料」。

列出複製作業

您可以列出近期的複製作業,包括排定的、執行中的、已完成的、失敗的和已取消的作業。結果中會顯示最近的複製作業,最長可達結束時間後的 30 天。

如要列出複製作業,請執行下列指令:

gcloud logging operations list --location=LOCATION \
--operation-filter=request_type=CopyLogEntries \
--project=PROJECT_ID

執行上述指令前,請先執行下列操作:

  • LOCATION 替換為您要複製的記錄值區位置。
  • PROJECT_ID 替換為您的 Google Cloud 專案 ID。

這個指令會傳回長期執行作業的相關資訊,包括作業 ID:

projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

查看複製作業的狀態

您可以擷取複製作業的狀態和其他中繼資料,包括:

  • startTime:表示建立作業的時間戳記。
  • endTime:表示作業完成時間戳記。
  • state:作業狀態 (已排定、正在執行、已取消、失敗或成功)。
  • cancellation:使用者是否已要求取消作業。
  • progress:作業的預估進度 (0-100%)。
  • destination:該作業要將記錄複製至的 Cloud Storage 值區名稱。
  • filter:指定要複製哪些記錄項目的篩選器。
  • name:記錄值區的名稱,作業會從該值區複製記錄。
  • logEntriesCopiedCount:作業成功複製至 Cloud Storage 值區的記錄項目數量。

請注意,並非所有列出的中繼資料欄位都適用於每個複製作業。舉例來說,如果複製作業仍在執行中,endtime 中繼資料就不會套用至該作業。舉另一個例子來說,如果在執行 gcloud logging copy 指令時未使用 --log-filter=FILTER 旗標,則 filter 中繼資料不會套用至該作業。

如要擷取複製作業的相關資訊,請執行下列指令:

gcloud logging operations describe OPERATION_ID \
--location=LOCATION --project=PROJECT_ID

執行上述指令前,請先執行下列操作:

  • OPERATION_ID 替換為作業 ID。
  • LOCATION 替換為您要複製的記錄值區位置。
  • PROJECT_ID 替換為您的 Google Cloud 專案 ID。

這個指令會傳回複製作業的中繼資料。例如,以下是進行中的作業輸出內容:

done: false
metadata:
  `@type`: type.googleapis.com/google.logging.v2.CopyLogEntriesMetadata
  progress: 75
  destination: storage.googleapis.com/my-storage-bucket-1
  source: projects/my-test-project/locations/us-central1/buckets/my-logging-bucket-2
  verb: copy
  startTime: `2024-05-23T10:52:40.039751Z`
  state: OPERATION_STATE_RUNNING
name: projects/my-test-project/locations/us-central1/buckets/my-logging-bucket-2
   </pre>

取消複製作業

您可以取消進行中的複製作業。如果您取消複製作業,在作業取消前複製的所有記錄項目都會保留在 Cloud Storage 值區中。

取消複製作業後,Logging 會先完成所有進行中的程序,再完成取消作業。這可能會導致在您取消作業後,部分記錄項目仍會複製到 Cloud Storage。

如要取消複製作業,請執行下列指令:

gcloud logging operations cancel OPERATION_ID \
--location=LOCATION --project=PROJECT_ID

執行上述指令前,請先執行下列操作:

  • OPERATION_ID 替換為作業 ID。
  • LOCATION 替換為您要複製的記錄值區位置。
  • PROJECT_ID 替換為您的 Google Cloud 專案 ID。

在 Cloud Storage 中查看記錄

如要查看及瞭解複製至 Cloud Storage 的記錄,請參閱「查看已路由至 Cloud Storage 的記錄」。

配額與限制

無論要複製的資料量為何,所有複製作業都至少需要一小時才能完成。

如要複製大量資料 (例如 PB),請使用 --filter 旗標中的 timestamp 欄位,將複製作業分散到多個複製作業。

複製指令無法複製已過期保留期限的記錄項目。

定價

Cloud Logging 不會針對將記錄檔轉送至支援的目的地收費,但目的地可能會收取費用。除了 _Required 記錄檔值區,Cloud Logging 會針對將記錄檔串流至記錄檔值區,以及超過記錄檔值區預設保留期限的儲存空間收取費用。

複製記錄、建立記錄範圍分析檢視畫面,或是透過 Logs Explorer 或 Log Analytics 頁面發出的查詢,Cloud Logging 不會收取費用。

如需詳細資訊,請參閱下列文件: