您可以使用 Cloud Logging,將 Google Cloud 服務、應用程式和其他雲端服務供應商的記錄項目轉送至目的地,以便儲存、分析及匯出至第三方。
根據預設,Cloud Logging 會將所有記錄項目轉送至記錄來源專案、資料夾或組織中的記錄 bucket。不過,您可以設定記錄檔接收器,將記錄檔資料轉送至自訂 bucket 或 Pub/Sub。Pub/Sub 支援將資料匯出至第三方工具。
轉送與匯出記錄項目
「轉送」是指將 Google Cloud 專案、資料夾或組織收到的記錄項目,移至目的地的程序。目的地是處理收到的記錄項目並執行動作的服務。例如,您可以將記錄項目轉送至記錄檔 bucket。這個目的地會掃描記錄項目,找出錯誤資訊,然後寫入儲存空間。
匯出是指將記錄項目從 Google Cloud 移至外部位置。例如,您可以將記錄項目轉送至 Pub/Sub,然後匯出至第三方工具。
Cloud Logging 會使用記錄檔接收器,將記錄項目轉送至目的地。根據預設,記錄項目會轉送至Google Cloud 專案、資料夾或組織中的兩個記錄檔 bucket 之一。您可以建立記錄檔接收器,將記錄檔資料轉送至其他目的地。您也可以修改系統建立的記錄檔接收器。本文將說明這些選項。
您可以使用 Logs Explorer,將儲存在記錄檔 bucket 中的記錄項目下載到本機儲存空間。不過,下載選項最多只能下載 10,000 個記錄項目。如要從 Google Cloud匯出記錄項目,請設定記錄檔接收器,將傳入的記錄項目轉送至 Pub/Sub,然後從 Google Cloud匯出該資料。
關於記錄路由器
每個 Google Cloud 專案、帳單帳戶、資料夾和組織都有一個記錄路由器,可透過資源層級接收器管理記錄項目的流程。記錄路由器也會透過記錄項目資源階層中的接收器,管理記錄項目的流程。接收器可控管記錄項目轉送至目的地的方式。
記錄路由器會暫時儲存記錄項目。這項行為可緩衝記錄項目流經接收器時,可能發生的暫時中斷和中斷情形。臨時儲存空間無法防範設定錯誤。
記錄路由器的暫時儲存空間與 Logging bucket 提供的長期儲存空間不同。
如果傳入記錄項目的時間戳記早於記錄保留期限,或晚於 24 小時後,系統會捨棄這些項目。
關於記錄檔接收器
記錄檔接收器收到記錄項目時,會決定要忽略該項目,還是轉送至接收器目的地。記錄檔接收器會將記錄項目與篩選器進行比較,做出這項決定。接收器的目的地可以是專案、儲存空間位置或 Pub/Sub 等服務。例如,接收器可以將記錄項目轉送至記錄檔 bucket。
記錄檔接收器屬於特定 Google Cloud 資源: Google Cloud 專案、帳單帳戶、資料夾和組織。這些資源也包含多個記錄檔接收器。資源收到記錄項目時,該資源中的每個記錄檔接收器都會獨立評估該項目。因此,多個記錄檔接收器可以轉送相同的記錄項目。
根據預設,記錄資料會儲存在資料來源專案中。不過,您可能基於下列原因而想變更這項設定:
- 集中儲存記錄資料。
- 將記錄資料與其他業務資料彙整。
- 以實用的方式整理記錄資料。
- 將記錄檔串流至其他應用程式、其他存放區或第三方服務。舉例來說,您可能想從 Google Cloud 匯出記錄,以便在第三方平台上查看。如要匯出記錄項目,請建立記錄檔接收器,將記錄項目轉送至 Pub/Sub。
如果記錄檔接收器設定有誤,就無法轉送記錄項目。如果接收器設定錯誤,系統會寫入回報錯誤詳細資料的記錄項目。此外,系統也會傳送電子郵件給資源的重要聯絡人。詳情請參閱「疑難排解:查看錯誤」。
記錄檔接收器無法溯及既往地轉送記錄項目。也就是說,記錄檔接收器無法轉送在建立接收器之前收到的記錄項目。同樣地,如果接收器設定錯誤,則接收器只會轉送在設定錯誤解決後抵達的記錄項目。
支援組織和資料夾
如要管理組織或資料夾中的記錄資料,您可以執行下列操作:
您可以建立匯總接收器,將組織或資料夾及其子項的記錄項目轉送至接收器指定的目的地。匯總接收器分為兩種類型:
- 非攔截式匯總接收器
- 攔截匯總接收器
攔截用接收器可覆寫階層中較低層級資源的轉送行為。非攔截式接收器不會影響其他資源的轉送。如果資源中的攔截接收器與記錄項目相符,記錄項目就不會傳送至子項資源中的接收器,但一律會傳送至記錄項目來源資源中的
_Required記錄檔接收器。您可以調整 Cloud Logging 的預設資源設定,指定組織或資料夾中新資源的系統建立
_Default接收器設定。舉例來說,您可以使用這些設定停用_Default接收器,或指定該接收器中的篩選器。
轉送範例
本節說明源自專案的記錄項目,如何流經資源階層中的接收器。
範例:沒有匯總接收器
如果記錄項目的資源階層中沒有匯總接收器,記錄項目會傳送至記錄項目來源專案中的記錄檔接收器。如果記錄項目符合接收器的「包含」篩選器,但不符合任何「排除」篩選器,專案層級接收器就會將記錄項目轉送至接收器的目的地。
範例:存在非攔截式匯總接收器
假設記錄項目的資源階層中,存在非攔截式匯總接收器。記錄路由器將記錄項目傳送至非攔截匯總接收器後,會發生下列情況:
如果記錄項目符合「包含」篩選器,但不符合任何「排除」篩選器,非攔截式匯總接收器會將記錄項目轉送至接收器的目的地。
記錄檔路由器會將記錄項目傳送至記錄項目來源專案中的記錄檔接收器。
如果記錄項目符合接收器的「包含」篩選器,但不符合任何「排除」篩選器,專案層級接收器就會將記錄項目轉送至接收器的目的地。
範例:存在攔截匯總接收器
假設記錄項目的資源階層中存在攔截匯總接收器。記錄路由器將記錄項目傳送至攔截匯總接收器後,會發生下列其中一種情況:
記錄項目符合「包含」篩選器,但不符合任何「排除」篩選器:
- 記錄項目會轉送至攔截匯總接收器的目的地。
- 記錄項目會傳送至記錄項目來源專案中的
_Required接收器。
記錄項目不符合包含篩選器,或符合至少一個排除篩選器:
- 記錄項目不會由攔截匯總接收器轉送。
記錄檔路由器會將記錄項目傳送至記錄項目來源專案中的記錄檔接收器。
如果記錄項目符合接收器的「包含」篩選器,但不符合任何「排除」篩選器,專案層級接收器就會將記錄項目轉送至接收器的目的地。
記錄檔接收器篩選器
每個記錄檔接收器都包含一個「包含」篩選器,且可包含多個「排除」篩選器。這些篩選器會決定記錄檔接收器是否將記錄項目轉送至接收器的目的地。如未指定任何篩選器,則每個記錄項目都會轉送至接收器的目的地。
記錄檔接收器會根據下列規則轉送記錄項目:
如果記錄項目不符合「包含」篩選器,就不會轉送。如果接收器未指定「包含」篩選器,則每個記錄項目都會符合該篩選器。
如果記錄項目符合「包含」篩選器和至少一個「排除」篩選器,則不會轉送。
如果記錄項目符合「包含」篩選器,且不符合任何「排除」篩選器,就會轉送至接收器的目的地。
記錄檔接收器中的篩選器是使用 Logging 查詢語言指定。
您無法使用排除篩選器減少 entries.write API 配額用量或 entries.write API 呼叫次數。Logging API 收到記錄項目後,就會套用排除篩選器。
系統建立的記錄檔接收器
針對每個 Google Cloud 專案、帳單帳戶、資料夾和組織,Cloud Logging 會建立兩個記錄檔接收器,分別命名為 _Required 和 _Default。這些接收器的納入和排除篩選器,可確保源自資源的每個記錄項目,都會由其中一個接收器轉送。這兩個接收器都會將記錄資料轉送至記錄檔值區,該值區與記錄檔接收器位於相同資源。
本節其餘部分將說明系統建立的記錄檔接收器篩選器和目的地。
_Required 個記錄檔接收器
資源中的 _Required 記錄檔接收器會將部分稽核記錄轉送至資源的 _Required 記錄檔 bucket。這個接收器未指定任何排除篩選器,包含篩選器如下所示:
LOG_ID("cloudaudit.googleapis.com/activity") OR
LOG_ID("externalaudit.googleapis.com/activity") OR
LOG_ID("cloudaudit.googleapis.com/system_event") OR
LOG_ID("externalaudit.googleapis.com/system_event") OR
LOG_ID("cloudaudit.googleapis.com/access_transparency") OR
LOG_ID("externalaudit.googleapis.com/access_transparency")
_Required 記錄檔接收器只會比對源自定義 _Required 記錄檔接收器資源的記錄項目。舉例來說,假設記錄檔接收器將專案 A 的活動記錄項目轉送至專案 B。由於記錄項目並非源自專案 B,因此專案 B 中的 _Required 記錄檔接收器不會將這個記錄項目轉送至 _Required 記錄檔 bucket。
您無法修改或刪除 _Required 記錄檔接收器。
_Default 個記錄檔接收器
資源中的 _Default 記錄檔接收器會將記錄項目轉送至資源的 _Default 記錄檔 bucket。由於這個接收器的納入篩選器為空白,因此會比對所有記錄項目。不過,排除篩選器的設定如下:
NOT LOG_ID("cloudaudit.googleapis.com/activity") AND
NOT LOG_ID("externalaudit.googleapis.com/activity") AND
NOT LOG_ID("cloudaudit.googleapis.com/system_event") AND
NOT LOG_ID("externalaudit.googleapis.com/system_event") AND
NOT LOG_ID("cloudaudit.googleapis.com/access_transparency") AND
NOT LOG_ID("externalaudit.googleapis.com/access_transparency")
您可以修改及停用 _Default 記錄檔接收器。例如,您可以編輯 _Default 記錄檔接收器並變更目的地。您也可以修改任何現有篩選器,並新增排除篩選器。
接收器目的地
接收器的目的地可以位於與接收器不同的資源中。舉例來說,您可以使用記錄檔接收器,將某個專案的記錄項目轉送至儲存在其他專案的記錄檔 bucket。
支援的目的地如下:
- Google Cloud 專案
如要讓目的地專案中的記錄檔接收器重新轉送記錄項目,或已建立攔截匯總接收器,請選取這個目的地。目的地專案中的記錄檔接收器,可將記錄項目重新轉送至任何支援的目的地 (專案除外)。
目的地專案中由系統建立的記錄檔接收器,會排除轉送至來源專案中
_Required記錄檔 bucket 的記錄項目。舉例來說,如果您將管理員活動記錄檔轉送至其他專案,則目的地專案中的_Required和_Default記錄檔接收器都會排除這些記錄項目。如要儲存這些記錄項目,請在目的地專案中更新_Default記錄檔接收器,或建立自訂記錄檔接收器。
- 記錄檔值區
- 如要將記錄資料儲存在 Cloud Logging 管理的資源中,請選取這個目的地。您可以使用 Logs Explorer 等服務,查看及分析儲存在記錄檔 bucket 中的記錄資料。
- Pub/Sub 主題
- 如要從Google Cloud 匯出記錄資料,然後使用第三方整合服務,請選取這個目的地。記錄項目會格式化為 JSON,然後轉送至 Pub/Sub 主題。
目的地限制
本節說明目的地專屬限制:
- 設定接收器目的地時,請提供完整路徑,並使用服務的全域端點。不支援區域服務端點 (REP),例如
pubsub.LOCATION.rep.googleapis.com。
不支援將記錄轉送至強制執行傳輸中限制的 Pub/Sub 主題。Logging 無法保證發布要求來自允許的區域,這會導致
topic_region_not_allowed設定錯誤和記錄遭捨棄。如果記錄檔接收器的目的地是 Google Cloud 專案,則適用下列限制:
- 限制為一個躍點。
- 目的地專案中的
_Required記錄檔接收器會將記錄項目轉送至專案的_Required記錄檔 bucket,前提是記錄項目符合接收器的篩選器,且源自目的地專案。 - 目的地專案中的
_Default記錄檔接收器會轉送符合「包含」篩選器且不符合任何「排除」篩選器的記錄項目。_Default記錄檔接收器會排除部分記錄項目。舉例來說,這個接收器不會轉送管理員活動和系統事件記錄項目。您可以修改這個接收器。 - 只有位於記錄項目資源階層中的匯總接收器,才會處理該項目。
舉例來說,假設專案
A中記錄檔接收器的目的地是專案B。在這種情況下,適用下列規則:- 由於單躍點限制,專案
B中的記錄檔接收器無法將記錄項目重新轉送至其他 Google Cloud 專案。 - 專案
B的_Required記錄檔 bucket 只會儲存源自專案B的記錄項目。這個記錄檔 bucket 不會儲存來自任何其他資源的記錄項目,包括來自專案A的記錄項目。 - 如果專案
A和專案B的資源階層不同,則專案A中的記錄檔接收器轉送至專案B的記錄項目,不會傳送至專案B資源階層中的匯總接收器。 - 如果專案
A和專案B具有相同的資源階層,記錄項目就會傳送至該階層中的匯總接收器。如果記錄項目未遭到匯總接收器攔截,記錄路由器會將該項目傳送至專案A中的接收器。
最佳做法
管理記錄檔儲存空間時,請一併管理記錄檔接收器。舉例來說,如果您刪除記錄檔接收器的目的地,請一併刪除對應的記錄檔接收器。
如要瞭解使用轉送功能進行資料治理的最佳做法,或常見用途,請參閱下列文件:
範例:集中管理記錄檔儲存空間
本節概述如何設定集中式儲存空間。集中式儲存空間提供單一位置來查詢記錄資料,簡化搜尋趨勢或調查問題時的查詢作業。從安全性的角度來看,您也只有一個儲存位置,這可以簡化資安分析師的工作。
如果您集中儲存記錄,請考慮是否要對儲存記錄資料的專案設定防刪除鎖定。防刪除鎖定可防止專案遭到意外刪除。詳情請參閱「使用留置權保護專案」。
集中儲存資料夾中專案的記錄
假設您管理一個資料夾,並想集中儲存記錄項目。針對這個用途,您可以執行下列操作:
- 在資料夾中,建立名為
CentralStorage的專案。 - 為資料夾建立攔截匯總接收器,並設定轉送所有記錄項目。將接收器的目的地設為名為
CentralStorage的專案。
當源自資料夾或其子資源的記錄項目送達時,該記錄項目會傳送至您建立的攔截匯總接收器。該接收器會將記錄項目轉送至名為 CentralStorage 的專案。這項專案中的記錄檔接收器會處理記錄項目:
_Default記錄檔接收器會將符合接收器篩選條件的所有記錄項目,轉送至_Default記錄檔 bucket。這個記錄檔 bucket 是集中式儲存空間位置。_Required記錄檔接收器會將符合接收器篩選條件且源自CentralStorage專案的記錄項目,轉送至_Required記錄檔 bucket。這個記錄檔 bucket 不是集中式儲存位置。不過,您可以集中儲存所有記錄資料。如需範例,請參閱「將稽核記錄儲存在中央位置」。
匯總接收器處理完畢後,記錄項目會傳送至記錄項目來源資源中的 _Required 記錄檔接收器。如果記錄項目符合 _Required 記錄檔接收器中的篩選器,系統會將記錄項目轉送至資源的 _Required 記錄檔 bucket。因此,資料夾中的每個 Google Cloud 專案都會將記錄項目儲存在其_Required記錄檔 bucket 中。
集中儲存一組專案的記錄
即使沒有組織或資料夾,您也可以將記錄項目儲存在單一位置。例如,您可以執行下列操作:
- 建立名為
CentralStorage的專案。 - 除了
CentralStorage以外,您需要編輯每個專案的_Default記錄檔接收器,並將目的地設為名為CentralStorage的專案。
您可能會想知道,為什麼上一個範例將 _Default 記錄檔接收器的目的地設為專案,而不是該專案中的 _Default 記錄檔 bucket。主要原因是簡單和一致性。將記錄項目轉送至專案時,目的地專案中的記錄檔接收器會控管要儲存哪些記錄項目,以及儲存位置。也就是說,您集中管理篩選器和目的地功能。如要變更儲存的記錄項目或儲存位置,只需修改一個專案中的記錄檔接收器。
集中儲存稽核記錄
您可以集中儲存符合 _Required 記錄檔接收器的記錄項目。如要集中儲存這些記錄項目,請採取下列其中一種做法:
建立記錄檔接收器,將符合
_Required記錄檔接收器的記錄項目轉送至集中化記錄檔 bucket。按照前兩個範例設定記錄檔接收器,然後在目的地專案中新增記錄檔接收器,將符合
_Required記錄檔接收器的記錄項目轉送至記錄檔 bucket。您也可以編輯_Default記錄檔接收器中的篩選器。
導入這類策略前,請先詳閱定價指南。
後續步驟
如要瞭解如何轉送及儲存 Cloud Logging 資料,請參閱下列文件:
如要建立接收器,將記錄項目轉送至支援的目的地,請參閱「將記錄轉送至支援的目的地」。
如要瞭解如何建立匯總接收器,以便從資料夾或組織中的資源轉送記錄項目,請參閱「匯總接收器總覽」。
如要瞭解轉送記錄項目的格式,以及記錄在目的地中的組織方式,請參閱下列文件: