這份參考架構說明如何將先前匯出至 Cloud Storage 的記錄檔匯回 Cloud Logging。
本參考架構適用於工程師和開發人員,包括開發運作、網站穩定性工程師 (SRE) 和安全調查人員,可協助他們設定及執行記錄匯入作業。本文假設您熟悉如何執行 Cloud Run 作業,以及如何使用 Cloud Storage 和 Cloud Logging。
架構
下圖顯示此參考架構中使用的服務: Google Cloud
這個工作流程包含下列元件:
- Cloud Storage 值區:包含您要匯回 Cloud Logging 的先前匯出記錄。由於這些記錄檔先前已匯出,因此會以預期的匯出格式整理。
- Cloud Run
工作:執行匯入記錄程序:
- 從 Cloud Storage 讀取儲存記錄檔項目的物件。
- 根據 Cloud Storage bucket 中匯出記錄的組織結構,在要求時間範圍內,找出指定記錄 ID 的匯出記錄。
- 將物件轉換為 Cloud Logging API
LogEntry
結構。多個LogEntry
結構體會匯總成批次,以減少 Cloud Logging API 配額用量。架構會在必要時處理配額錯誤。 - 將轉換後的記錄項目寫入 Cloud Logging。 如果多次重新執行相同的工作,可能會導致項目重複。詳情請參閱「執行匯入工作」。
- Cloud Logging:擷取並儲存轉換後的記錄項目。 系統會按照轉送功能和儲存空間簡介所述方式處理記錄項目。
- BigQuery:使用 SQL 對匯入的記錄執行分析查詢 (選用)。如要從 Cloud Storage 匯入稽核記錄,這個架構會修改記錄 ID;查詢匯入的記錄時,請務必將這項重新命名作業納入考量。
用途
如果貴機構需要針對事件調查或其他過去事件的稽核作業,進行額外的記錄分析,不妨選擇部署這項架構。舉例來說,您可能想分析去年第一季的資料庫連線,做為資料庫存取稽核的一部分。
設計替代方案
本節說明本參考架構文件所示預設設計的替代方案。
保留期限和匯入的記錄
Cloud Logging 規定傳入的記錄項目時間戳記不得超過 30 天的保留期限。系統不會儲存時間戳記早於匯入時間 30 天的匯入記錄項目。
這項架構會驗證 Cloud Run 作業中設定的日期範圍,避免匯入超過 29 天的記錄,並保留一天的安全緩衝期。
如要匯入 29 天前的記錄,您需要對實作程式碼進行下列變更,然後建構新的容器映像檔,用於 Cloud Run 工作設定。
- 移除 30 天的日期範圍驗證
- 將原始時間戳記新增為記錄項目的使用者標籤
- 重設記錄檔項目的時間戳記標籤,以便使用目前的時間戳記擷取記錄檔
使用這項修改時,您必須在 Log Analytics 查詢中使用labels
欄位,而不是 timestamp
欄位。如要進一步瞭解 Log Analytics 查詢和範例,請參閱SQL 查詢範例。
設計須知
下列指南可協助您開發符合貴機構需求的架構。
成本最佳化
使用這個參考架構匯入記錄的費用,取決於多項因素。
您會使用下列 Google Cloud的計費元件:
請考量以下可能導致費用增加的因素:
- 記錄重複:為避免產生額外的記錄儲存空間費用,請勿多次執行相同設定的匯入工作。
- 儲存在其他目的地:為避免產生額外的記錄檔儲存費用,請在目的地專案中停用路由政策,防止記錄檔儲存在其他位置,或轉送至其他目的地 (例如 Pub/Sub 或 BigQuery)。
- 增加 CPU 和記憶體:如果匯入工作逾時,您可能需要在匯入工作設定中增加匯入工作的 CPU 和記憶體。增加這些值可能會導致 Cloud Run 費用增加。
- 其他工作:如果時間範圍內每天要匯入的記錄檔數量預計會很高,您可能需要在匯入工作設定中增加工作數量。這項工作會將時間範圍平均分配給各項工作,因此每項工作都會同時處理範圍內相似的天數。增加工作數量可能會導致 Cloud Run 費用增加。
- 儲存空間類別:如果 Cloud Storage 值區的儲存空間類別不是 Standard,而是 Nearline、Durable Reduced Availability (DRA) 或 Coldline,您可能需要支付額外費用。
- 不同位置之間的資料流量:設定匯入工作,使其在與匯入記錄的 Cloud Storage bucket 相同的位置執行。否則可能會產生網路輸出費用。
如要根據預測用量 (包括 Cloud Run 作業) 估算費用,請使用 Pricing Calculator。
提升作業效率
本節說明部署解決方案後,管理分析查詢時的注意事項。
記錄檔名稱和查詢
記錄會儲存在記錄項目logName
欄位中定義的專案。如要將記錄匯入所選專案,這個架構會修改每個匯入記錄的 logName
欄位。匯入記錄檔會儲存在所選專案的預設記錄檔 bucket 中,記錄檔 ID 為 imported_logs
(除非專案有記錄檔轉送政策,變更了儲存目的地)。logName
欄位的原始值會保留在 labels
欄位中,並使用 original_logName
鍵。
查詢匯入的記錄時,請務必考量原始 logName
值的位置。如要進一步瞭解 Log Analytics 查詢和範例,請參閱「SQL 查詢範例」。
效能最佳化
如果匯入的記錄量超過 Cloud Run 容量上限,工作可能會在匯入完成前逾時。為避免資料匯入不完整,請考慮在匯入工作中增加 tasks
值。增加 CPU 和記憶體資源,也有助於在增加工作數量時提升工作效能。
部署作業
如要部署這項架構,請參閱「部署工作,將記錄檔從 Cloud Storage 匯入 Cloud Logging」。
後續步驟
- 請查看 GitHub 存放區中的實作程式碼。
- 瞭解如何使用記錄檔分析和 SQL 分析匯入的記錄。
- 如需更多參考架構、圖表和最佳做法,請瀏覽 Cloud 架構中心。
貢獻者
作者:Leonid Yankulin | 開發人員關係工程師
其他貢獻者:
- Summit Tuladhar | 資深軟體工程師
- Wilton Wong | 企業架構師
- Xiang Shen | 解決方案架構師