部署工作,將 Cloud Storage 中的記錄檔匯入 Cloud Logging

Last reviewed 2025-02-19 UTC

本文說明如何部署「將記錄檔從 Cloud Storage 匯入 Cloud Logging」一文所述的參考架構。

這些操作說明適用於工程師和開發人員,包括開發運作、網站穩定性工程師 (SRE) 和安全調查人員,他們想要設定及執行記錄匯入作業。此外,本文也假設您熟悉如何執行 Cloud Run 匯入工作,以及如何使用 Cloud Storage 和 Cloud Logging。

架構

下圖顯示此參考架構中使用的服務: Google Cloud

工作流程圖:從 Cloud Storage 匯入記錄檔至 Cloud Logging。

詳情請參閱「將 Cloud Storage 中的記錄匯入 Cloud Logging」。

目標

  • 建立及設定 Cloud Run 匯入工作
  • 建立服務帳戶來執行作業

費用

在本文件中,您會使用下列 Google Cloud的計費元件:

如要根據預測用量估算費用,請使用 Pricing Calculator

初次使用 Google Cloud 的使用者可能符合免費試用資格。

事前準備

  1. 請確認要匯入的記錄先前已匯出至 Cloud Storage,也就是說,這些記錄已整理成預期的匯出格式

  2. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

    PROJECT_ID 替換為目的地專案 ID。

  4. 確認您已為 Google Cloud 專案啟用計費功能

  5. 必要的角色

    如要取得部署這項解決方案所需的權限,請要求管理員授予下列 IAM 角色:

    • 如要將記錄寫入者角色授予記錄儲存空間: 目的地專案的專案 IAM 管理員 (roles/resourcemanager.projectIamAdmin)
    • 如要在儲存空間 bucket 上授予 Storage 物件檢視者角色: 在儲存空間 bucket 所在的專案中,擁有「Storage 管理員」 (roles/storage.admin)
    • 如要建立服務帳戶: 在目的地專案中建立服務帳戶 (roles/iam.serviceAccountCreator)
    • 如要在專案中啟用服務: 目的地專案的服務使用情形管理員 (roles/serviceusage.serviceUsageAdmin)
    • 如要升級記錄檔 bucket 並刪除匯入的記錄,請在目的地專案中具備記錄管理員 (roles/logging.admin) 權限。
    • 如要建立、執行及修改匯入工作,請在目的地專案中點按「Cloud Run Developer」圖示 roles/run.developer

    如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

    您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

    升級記錄檔 bucket,即可使用 Log Analytics

    建議您使用預設記錄檔 bucket,並升級該 bucket 以使用記錄檔分析工具。不過,如果預設記錄值區不符合需求,您可以在實際工作環境中使用自己的記錄值區。如果您決定使用自己的值區,則必須將擷取的記錄檔傳送至這個記錄檔值區的目標專案。詳情請參閱「設定記錄值區」和「建立接收器」。

    升級 bucket 後,您可以使用 SQL 查詢及分析記錄檔。 升級值區或使用記錄檔分析時,不會產生額外費用。

    如要升級目標專案中的預設記錄檔 bucket,請按照下列步驟操作:

    • 升級預設記錄檔 bucket,即可使用 Log Analytics:

      gcloud logging buckets update BUCKET_ID --location=LOCATION --enable-analytics
      

      更改下列內容:

      • BUCKET_ID:記錄值區的名稱 (例如 _Default)
      • LOCATION:支援的區域 (例如 global)

    建立 Cloud Run 匯入工作

    建立工作時,您可以使用為這個參考架構提供的預先建構容器映像檔。如要修改實作項目來變更 30 天的保留期限,或有其他需求,可以自行建立自訂映像檔

    • 在 Cloud Shell 中,使用設定和環境變數建立工作:

      gcloud run jobs create JOB_NAME \
      --image=IMAGE_URL \
      --region=REGION \
      --tasks=TASKS \
      --max-retries=0 \
      --task-timeout=60m \
      --cpu=CPU \
      --memory=MEMORY \
      --set-env-vars=END_DATE=END_DATE,LOG_ID=LOG_ID,\
      START_DATE=START_DATE,STORAGE_BUCKET_NAME=STORAGE_BUCKET_NAME,\
      PROJECT_ID=PROJECT_ID
      

      更改下列內容:

      • JOB_NAME:工作名稱。
      • IMAGE_URL:容器映像檔的參照;如果使用 GitHub 中的說明建構自訂映像檔,請使用 us-docker.pkg.dev/cloud-devrel-public-resources/samples/import-logs-solution 或自訂映像檔的網址。
      • REGION:您要將工作放在哪個區域;為避免產生額外費用,建議您將工作區域與 Cloud Storage bucket 區域保持一致,或位於同一多區域。舉例來說,如果值區位於美國多重區域,可以使用 us-central1。詳情請參閱「成本最佳化」。
      • TASKS:作業必須執行的工作數量。 預設值為 1。如果發生逾時,可以增加工作數量。
      • CPU:CPU 限制,可以是 1、2、4、6 或 8 個 CPU。預設值為 2。如果發生逾時情形,您可以增加數量;詳情請參閱「設定 CPU 限制」。
      • MEMORY:記憶體限制。 預設值為 2Gi。如果發生逾時情形,可以增加數量;詳情請參閱「設定記憶體限制」。
      • END_DATE:日期範圍的結束日期,格式為 MM/DD/YYYY。系統會匯入時間戳記早於或等於這個日期的記錄。
      • LOG_ID:要匯入的記錄的記錄 ID。記錄 ID 是記錄項目的 logName 欄位的一部分。例如:cloudaudit.googleapis.com
      • START_DATE:日期範圍的開始日期,格式為 MM/DD/YYYY。系統會匯入時間戳記晚於或等於這個日期的記錄。
      • STORAGE_BUCKET_NAME:儲存記錄的 Cloud Storage bucket 名稱 (不含 gs:// 前置字串)。

      max-retries 選項設為零,可避免系統重試失敗的工作,以免產生重複的記錄項目。

      如果 Cloud Run 工作因逾時而失敗,可能會導致匯入作業不完整。為避免匯入作業因逾時而未完成,請增加 tasks 值,以及 CPU記憶體資源。

    增加這些值可能會導致費用增加。如要瞭解費用詳情,請參閱「成本最佳化」。

    建立服務帳戶來執行 Cloud Run 工作

    1. 在 Cloud Shell 中建立使用者管理的服務帳戶:

      gcloud iam service-accounts create SA_NAME
      

      SA_NAME 改為服務帳戶名稱。

    2. 在儲存空間 bucket 中授予「Storage 物件檢視者」角色:

      gcloud storage buckets add-iam-policy-binding gs://STORAGE_BUCKET_NAME \
      --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
      --role=roles/storage.objectViewer
      

      更改下列內容:

      • STORAGE_BUCKET_NAME:您在匯入作業設定中使用的儲存空間 bucket 名稱。例如:my-bucket
      • PROJECT_ID:目的地專案 ID。
    3. 在記錄 bucket 中授予記錄寫入者角色:

      gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
      --role=roles/logging.logWriter
      
    4. 設定 Cloud Run 作業的服務帳戶:

      gcloud run jobs update JOB_NAME \
      --region=REGION \
      --service-account SA_NAME@PROJECT_ID.iam.gserviceaccount.com
      

      REGION 替換為您部署 Cloud Run 匯入工作的地區。

    執行匯入工作

    • 在 Cloud Shell 中執行建立的作業:

      gcloud run jobs execute JOB_NAME \
      --region=REGION
      

    詳情請參閱「執行工作」和「管理工作執行作業」。

    如需重新執行工作,請刪除先前匯入的記錄,以免建立重複項目。詳情請參閱本文稍後的「刪除匯入的記錄」一節。

    查詢匯入的記錄時,查詢結果不會顯示重複項目。 Cloud Logging 會從查詢結果中移除重複項目 (來自相同專案,且具有相同插入 ID 和時間戳記的記錄項目)。詳情請參閱 Logging API 參考資料中的 insert_id 欄位

    驗證結果

    如要驗證工作是否已順利完成,您可以在 Cloud Shell 中查詢匯入結果:

      gcloud logging read 'log_id("imported_logs") AND timestamp<=END_DATE'
    

    輸出內容會顯示匯入的記錄。如果這個專案在指定時間範圍內執行多個匯入工作,輸出內容也會顯示這些工作匯入的記錄。

    如需更多選項和查詢記錄項目的詳細資料,請參閱 gcloud logging read

    刪除匯入的記錄

    如需多次執行相同工作,請刪除先前匯入的記錄,避免出現重複項目並增加費用。

    • 如要刪除匯入的記錄,請在 Cloud Shell 中執行記錄刪除作業:

      gcloud logging logs delete imported_logs
      

    請注意,刪除匯入的記錄檔會清除所有匯入目標專案的記錄項目,而不只是上次匯入作業的執行結果。

    後續步驟

    貢獻者

    作者:Leonid Yankulin | 開發人員關係工程師

    其他貢獻者: