本文說明如何部署「將記錄檔從 Cloud Storage 匯入 Cloud Logging」一文所述的參考架構。
這些操作說明適用於工程師和開發人員,包括開發運作、網站穩定性工程師 (SRE) 和安全調查人員,他們想要設定及執行記錄匯入作業。此外,本文也假設您熟悉如何執行 Cloud Run 匯入工作,以及如何使用 Cloud Storage 和 Cloud Logging。
架構
下圖顯示此參考架構中使用的服務: Google Cloud
詳情請參閱「將 Cloud Storage 中的記錄匯入 Cloud Logging」。
目標
- 建立及設定 Cloud Run 匯入工作
- 建立服務帳戶來執行作業
費用
在本文件中,您會使用下列 Google Cloud的計費元件:
如要根據預測用量估算費用,請使用 Pricing Calculator。
事前準備
請確認要匯入的記錄先前已匯出至 Cloud Storage,也就是說,這些記錄已整理成預期的匯出格式。
In the Google Cloud console, activate Cloud Shell.
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 theresourcemanager.projects.create
permission. Learn how to grant roles.
將 PROJECT_ID 替換為目的地專案 ID。
-
如要將記錄寫入者角色授予記錄儲存空間:
目的地專案的專案 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:
gcloud logging buckets update BUCKET_ID --location=LOCATION --enable-analytics
更改下列內容:
- BUCKET_ID:記錄值區的名稱 (例如
_Default
) - LOCATION:支援的區域 (例如
global
)
- BUCKET_ID:記錄值區的名稱 (例如
在 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 Shell 中建立使用者管理的服務帳戶:
gcloud iam service-accounts create SA_NAME
將 SA_NAME 改為服務帳戶名稱。
在儲存空間 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。
- STORAGE_BUCKET_NAME:您在匯入作業設定中使用的儲存空間 bucket 名稱。例如:
在記錄 bucket 中授予記錄寫入者角色:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/logging.logWriter
設定 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 Shell 中執行記錄刪除作業:
gcloud logging logs delete imported_logs
- 請查看 GitHub 存放區中的實作程式碼。
- 瞭解如何使用記錄檔分析和 SQL 分析匯入的記錄。
- 如需更多參考架構、圖表和最佳做法,請瀏覽 Cloud 架構中心。
- Summit Tuladhar | 資深軟體工程師
- Wilton Wong | 企業架構師
- Xiang Shen | 解決方案架構師
必要的角色
如要取得部署這項解決方案所需的權限,請要求管理員授予下列 IAM 角色:
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
升級記錄檔 bucket,即可使用 Log Analytics
建議您使用預設記錄檔 bucket,並升級該 bucket 以使用記錄檔分析工具。不過,如果預設記錄值區不符合需求,您可以在實際工作環境中使用自己的記錄值區。如果您決定使用自己的值區,則必須將擷取的記錄檔傳送至這個記錄檔值區的目標專案。詳情請參閱「設定記錄值區」和「建立接收器」。
升級 bucket 後,您可以使用 SQL 查詢及分析記錄檔。 升級值區或使用記錄檔分析時,不會產生額外費用。
如要升級目標專案中的預設記錄檔 bucket,請按照下列步驟操作:
建立 Cloud Run 匯入工作
建立工作時,您可以使用為這個參考架構提供的預先建構容器映像檔。如要修改實作項目來變更 30 天的保留期限,或有其他需求,可以自行建立自訂映像檔。
增加這些值可能會導致費用增加。如要瞭解費用詳情,請參閱「成本最佳化」。
建立服務帳戶來執行 Cloud Run 工作
執行匯入工作
如需重新執行工作,請刪除先前匯入的記錄,以免建立重複項目。詳情請參閱本文稍後的「刪除匯入的記錄」一節。
查詢匯入的記錄時,查詢結果不會顯示重複項目。
Cloud Logging 會從查詢結果中移除重複項目 (來自相同專案,且具有相同插入 ID 和時間戳記的記錄項目)。詳情請參閱 Logging API 參考資料中的 insert_id
欄位。
驗證結果
如要驗證工作是否已順利完成,您可以在 Cloud Shell 中查詢匯入結果:
gcloud logging read 'log_id("imported_logs") AND timestamp<=END_DATE'
輸出內容會顯示匯入的記錄。如果這個專案在指定時間範圍內執行多個匯入工作,輸出內容也會顯示這些工作匯入的記錄。
如需更多選項和查詢記錄項目的詳細資料,請參閱 gcloud logging read
。
刪除匯入的記錄
如需多次執行相同工作,請刪除先前匯入的記錄,避免出現重複項目並增加費用。
請注意,刪除匯入的記錄檔會清除所有匯入目標專案的記錄項目,而不只是上次匯入作業的執行結果。
後續步驟
貢獻者
作者:Leonid Yankulin | 開發人員關係工程師
其他貢獻者: