本文說明 Cloud Logging 如何轉送 Google Cloud收到的記錄項目。路由目的地分為幾種類型,舉例來說,您可以將記錄項目轉送至記錄檔值區等目的地,以便儲存記錄項目。如要將記錄資料匯出至第三方目的地,您可以將記錄項目傳送至 Pub/Sub。此外,記錄項目可以傳送至多個目的地。
以下大致說明 Cloud Logging 如何轉送及儲存記錄項目:
關於記錄路由器
每個 Google Cloud 專案、帳單帳戶、資料夾和機構都有記錄檔路由器,可透過資源層級的接收器管理記錄項目流程。記錄檔路由器也會管理記錄項目在項目資源階層中,透過接收器的流動情形。接收器可控管記錄項目如何轉送至目的地。
記錄路由器會暫時儲存記錄項目。這種行為可緩衝處理暫時中斷和停機問題,這類問題可能會在記錄項目流經接收器時發生。臨時儲存空間無法防範設定錯誤。
記錄檔路由器的暫時儲存空間與記錄檔 bucket 提供的長期儲存空間不同。
如果傳入的記錄項目時間戳記早於記錄保留期限,或晚於 24 小時後,系統就會捨棄這些項目。
關於記錄接收器
記錄接收器收到記錄項目時,會判斷是否應忽略或轉送該項目。系統會比較記錄項目與記錄接收器中的篩選器,記錄項目經過路由傳送後,記錄接收器會將記錄項目傳送至記錄接收器指定目的地。目的地可以是專案、儲存位置或服務。
記錄接收器屬於特定 Google Cloud 資源: Google Cloud 專案、帳單帳戶、資料夾和機構。這些資源也包含多個記錄接收器。資源收到記錄項目時,該資源中的每個記錄接收器都會獨立評估記錄項目。因此,多個記錄接收器可以轉送同一個記錄項目。
根據預設,記錄資料會儲存在資料來源專案中。不過,您可能基於下列原因想要變更這項設定:
- 集中儲存記錄資料。
- 將記錄檔資料與其他業務資料彙整在一起。
- 以對您有用的方式整理記錄檔資料。
- 將記錄傳輸到其他應用程式、其他存放區或第三方。舉例來說,您可能想從 Google Cloud 匯出記錄,以便在第三方平台查看。如要匯出記錄項目,請建立記錄接收器,將記錄項目轉送至 Pub/Sub。
如果記錄接收器設定有誤,系統就不會轉送記錄檔項目。如果接收器設定錯誤,系統會寫入記錄項目,報告錯誤詳細資料。此外,系統也會將電子郵件傳送給資源的重要聯絡人。 詳情請參閱「疑難排解:查看錯誤」。
記錄接收器無法追溯轉送記錄項目。也就是說,記錄接收器無法傳送在接收器建立前收到的記錄項目。同樣地,如果接收器設定有誤,接收器只會將解決設定錯誤後收到的記錄項目傳送至目的地。不過,您可以將記錄資料從記錄 bucket 追溯複製到 Cloud Storage。詳情請參閱「複製記錄」。
支援機構和資料夾
為協助您管理機構或資料夾中的記錄資料,您可以採取下列做法:
您可以建立匯總接收器,將機構或資料夾及其子項的記錄項目,轉送至接收器指定的目的地。匯總接收器分為兩種類型:
- 非攔截式匯總接收器
- 攔截匯總接收器
這兩種接收器類型的差異在於,在資源階層中的某個層級攔截接收器,可能會影響階層中較低層級資源的路由。非攔截接收器不會影響其他資源的路由。如果資源中的攔截接收器與記錄項目相符,記錄項目就不會傳送至子項資源中的接收器,但記錄項目一律會傳送至記錄項目來源資源中的
_Required
記錄接收器。您可以設定預設資源設定,指定機構或資料夾中新資源的系統建立
_Default
接收器設定。舉例來說,您可以使用這些設定停用_Default
接收器,或指定該接收器中的篩選器。
轉送範例
本節說明源自專案的記錄項目,如何流經資源階層中的接收器。
範例:沒有匯總接收器
如果記錄項目的資源階層中沒有匯總接收器,系統會將記錄項目傳送至記錄項目來源專案中的記錄接收器。如果記錄項目符合接收器的納入篩選條件,但不符合任何排除篩選條件,專案層級接收器就會將記錄項目轉送至接收器的目的地。
範例:存在非攔截的匯總接收器
假設記錄項目資源階層中存在非攔截匯總接收器。記錄檔路由器將記錄檔項目傳送至非攔截式匯總接收器後,會發生下列情況:
如果記錄項目符合「包含」篩選條件,但不符合任何「排除」篩選條件,非攔截式匯總接收器就會將記錄項目傳送至接收器的目的地。
記錄檔路由器會將記錄項目傳送至記錄項目來源專案中的記錄接收器。
如果記錄項目符合接收器的納入篩選條件,但不符合任何排除篩選條件,專案層級接收器就會將記錄項目轉送至接收器的目的地。
範例:存在攔截匯總接收器的情況
假設資源階層中存在記錄項目的攔截匯總接收器。記錄檔路由器將記錄項目傳送至攔截匯總接收器後,會發生下列其中一種情況:
記錄項目符合納入篩選條件,但不符合任何排除篩選條件:
- 記錄項目會轉送至攔截匯總接收器的目的地。
- 記錄項目會傳送至記錄項目來源專案中的
_Required
接收器。
記錄項目不符合納入篩選器,或符合至少一個排除篩選器:
- 攔截匯總接收器不會將記錄項目路由傳送至其他位置。
記錄檔路由器會將記錄項目傳送至記錄項目來源專案中的記錄接收器。
如果記錄項目符合接收器的納入篩選條件,但不符合任何排除篩選條件,專案層級接收器就會將記錄項目轉送至接收器的目的地。
記錄接收器篩選器
每個記錄接收器都包含一個納入篩選器,且可包含多個排除篩選器。這些篩選器會決定記錄接收器是否要將記錄項目轉送至接收器的目的地。如未指定任何篩選器,所有記錄項目都會轉送至接收器的目的地。
記錄項目會根據下列規則,由記錄接收器轉送:
如果記錄項目不符合納入篩選器,系統就不會將其傳送至目的地。如果接受器未指定「包含」篩選器,則每個記錄項目都會符合該篩選器。
如果記錄項目符合「包含」篩選條件和至少一個「排除」篩選條件,系統就不會將其傳送至目的地。
如果記錄項目符合「包含」篩選器,且不符合任何「排除」篩選器,就會轉送至接收器的目的地。
記錄接收器中的篩選器是使用 Logging 查詢語言指定。
您無法使用排除篩選器來減少 entries.write
API 配額或 entries.write
API 呼叫次數。記錄項目由 Logging API 接收後,系統就會套用排除篩選器。
系統建立的記錄接收器
Cloud Logging 會為每個 Google Cloud 專案、帳單帳戶、資料夾和機構建立兩個記錄檔接收器,分別命名為 _Required
和 _Default
。這些接收器的「包含」和「排除」篩選器會驗證抵達資源的每個記錄項目,是否都由其中一個接收器轉送。這兩個接收器都會將記錄檔資料傳送至與記錄檔接收器位於相同資源中的記錄檔 bucket。
本節的其餘部分會說明系統建立的記錄接收器的篩選器和目的地。
_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
中的記錄接收器不會將這個記錄項目轉送至記錄 bucket。_Required
_Required
您無法修改或刪除 _Required
記錄接收器。
_Default
記錄接收器
資源中的 _Default
記錄檔接收器會將所有記錄檔項目 (符合 _Required
記錄檔接收器篩選條件的項目除外) 轉送至資源的 _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
記錄接收器並變更目的地。您也可以修改現有篩選器,並新增排除篩選器。
接收器目的地
接收器的目的地可以與接收器位於不同的資源中。 舉例來說,您可以使用記錄檔接收器,將一個專案的記錄檔項目傳送至儲存在另一個專案中的記錄檔值區。
系統支援下列目的地:
- Google Cloud 專案
如果希望目標專案中的記錄接收器重新導向記錄項目,或是已建立攔截匯總接收器,請選取這個目標位置。接收器目的地專案中的記錄檔接收器,可將記錄檔項目重新轉送至任何支援的目的地,但專案除外。
- 記錄檔值區
如要在 Cloud Logging 管理的資源中儲存記錄檔資料,請選取這個目的地。您可以使用 Logs Explorer 和 Log Analytics 等服務,查看及分析記錄 bucket 中儲存的記錄資料。
如要彙整記錄檔資料與其他業務資料,您可以將記錄檔資料儲存在記錄檔 bucket 中,並建立連結的 BigQuery 資料集。連結的資料集是唯讀資料集,可像其他 BigQuery 資料集一樣查詢。
- BigQuery 資料集
- 如要將記錄資料與其他業務資料合併,請選取這個目的地。您指定的資料集必須啟用寫入功能。 請勿將接收器的目的地設為連結的 BigQuery 資料集。連結的資料集為唯讀狀態。
- Cloud Storage 值區
- 如要長期儲存記錄資料,請選取這個目的地。Cloud Storage bucket 可以位於記錄檔項目來源的相同專案,也可以位於不同專案。記錄項目會儲存為 JSON 檔案。
- Pub/Sub 主題
- 如要從Google Cloud 匯出記錄資料,然後使用 Splunk 或 Datadog 等第三方整合服務,請選取這個目的地。記錄項目會格式化為 JSON,然後轉送至 Pub/Sub 主題。
目的地限制
本節說明目的地專屬限制:
- 如果將記錄檔項目轉送至其他 Google Cloud 專案的記錄檔值區,Error Reporting 就不會分析這些記錄檔項目。詳情請參閱「錯誤報告總覽」。
- 如果將記錄檔項目傳送至 BigQuery 資料集,BigQuery 資料集必須啟用寫入功能。您無法將記錄項目傳送至唯讀的已連結資料集。
- 將記錄檔資料傳送至 Cloud Storage 值區的新接收器,可能需要數小時才能開始傳送記錄檔項目。系統每小時會處理這些接收器。
如果記錄接收器目的地是 Google Cloud 專案,則適用下列限制:
- 有單一躍點限制。
- 只有當記錄項目來自目的地專案時,符合
_Required
記錄接收器篩選條件的記錄項目才會轉送至目的地專案的_Required
記錄 bucket。 - 只有記錄項目資源階層中的匯總接收器,才會處理記錄項目。
舉例來說,假設專案
A
中記錄接收器的目的地是專案B
。則下列情況屬實:- 由於單一躍點限制,專案
B
中的記錄接收器無法將記錄項目重新導向至 Google Cloud 專案。 - 專案
B
的_Required
記錄檔 bucket 只會儲存源自專案B
的記錄項目。這個記錄檔值區不會儲存來自任何其他資源的記錄檔項目,包括來自專案A
的項目。 - 如果專案
A
和專案B
的資源階層不同,專案A
中記錄接收器轉送至專案B
的記錄項目,就不會傳送至專案B
資源階層中的匯總接收器。 - 如果專案
A
和專案B
具有相同的資源階層,記錄檔項目就會傳送至該階層中的匯總接收器。如果記錄項目未遭匯總接收器攔截,記錄檔路由器就會將記錄項目傳送至專案A
中的接收器。
路由記錄項目對記錄指標的影響
記錄指標是從記錄項目內容取得的 Cloud Monitoring 指標。舉例來說,您可以使用記錄指標計算含有特定訊息的記錄項目數量,或擷取記錄項目中記錄的延遲時間資訊。您可以在 Cloud Monitoring 圖表中顯示記錄指標,並透過快訊政策監控這些指標。
系統定義的記錄指標適用於專案層級。使用者定義的記錄指標可套用至專案層級或記錄檔儲存空間層級。如果您使用匯總接收器將記錄項目轉送至記錄檔值區,或是將記錄項目從一個專案轉送至另一個專案的記錄檔值區,值區專屬記錄指標就非常實用。
- 系統定義的記錄指標
-
如果符合下列所有條件,記錄檔路由器就會計入記錄項目:
- 記錄項目會通過定義記錄指標的專案記錄接收器。
記錄項目會儲存在記錄檔值區中。記錄檔 bucket 可位於任何專案中。
舉例來說,假設專案
A
有一個記錄接收器,目的地是專案B
。此外,也假設專案中的記錄接收器B
會將記錄項目轉送至記錄 bucket。在這種情況下,從專案A
轉送至專案B
的記錄項目會計入專案A
的系統定義記錄指標。這些記錄項目也會計入專案B
的系統定義記錄指標。
- 使用者定義的記錄指標
-
如果符合下列所有條件,記錄檔路由器就會計入記錄項目:
- 已為定義記錄指標的專案啟用帳單功能。
- 如果是值區範圍指標,記錄項目會儲存在定義記錄指標的記錄檔值區中。
- 如果是專案範圍指標,記錄項目會通過定義記錄指標的專案記錄接收器。
詳情請參閱「記錄指標總覽」的說明。
最佳做法
如要瞭解如何運用轉送功能進行資料治理,或處理常見的使用案例,請參閱下列文件:
範例:集中管理記錄儲存空間
本節將說明如何設定集中式儲存空間。集中式儲存空間提供單一位置來查詢記錄資料,方便您在搜尋趨勢或調查問題時簡化查詢。從安全性的角度來看,您也只有一個儲存位置,這可簡化安全分析師的工作。
如果您集中管理記錄檔儲存空間,請考慮是否要對儲存記錄檔資料的專案設定留置權。防刪除鎖定可防止專案遭意外刪除。詳情請參閱「透過防刪除鎖定保護專案」。
集中管理資料夾中專案的記錄檔儲存空間
假設您管理某個資料夾,並想集中儲存記錄項目。在這個用途中,您可能會執行下列操作:
- 在資料夾中,建立名為
CentralStorage
的專案。 - 為資料夾建立攔截匯總接收器,並設定轉送所有記錄項目。您將接收器的目的地設為名為
CentralStorage
的專案。
當來自資料夾或其中一個子項資源的記錄項目抵達時,系統會將該記錄項目傳送至您建立的攔截匯總接收器。該接收器會將記錄項目轉送至名為「CentralStorage
」的專案。這項專案中的記錄接收器會處理記錄項目:
_Default
記錄檔接收器會將符合接收器篩選條件的所有記錄項目,轉送至_Default
記錄檔 bucket。這個記錄檔 bucket 是集中式儲存位置。_Required
記錄接收器會將符合接收器篩選條件,且源自CentralStorage
專案的記錄項目,轉送至_Required
記錄 bucket。這個記錄檔值區並非集中式儲存位置。不過,您可以集中儲存所有記錄資料。如需範例,請參閱「將稽核記錄儲存在中央位置」。
匯總接收器處理作業完成後,系統會將記錄項目傳送至記錄項目來源資源中的 _Required
記錄接收器。如果記錄項目符合_Required
記錄接收器中的篩選條件,系統就會將該記錄項目傳送至資源的_Required
記錄 bucket。因此,資料夾中的每個專案都會將記錄檔項目儲存在各自的 _Required
記錄檔 bucket 中。 Google Cloud
集中管理一組專案的記錄檔儲存空間
如果沒有機構或資料夾,也可以將記錄項目儲存在單一位置。舉例來說,您可能執行下列操作:
- 建立名為
CentralStorage
的專案。 - 除了
CentralStorage
專案以外,您要編輯每個專案的_Default
記錄接收器,並將目的地設為名為CentralStorage
的專案。
您可能會想知道,為什麼上一個範例將 _Default
記錄接收器的目的地設為專案,而不是該專案中的 _Default
記錄 bucket。主要原因在於簡單和一致性。將記錄項目轉送至專案時,目的地專案中的記錄接收器會控管儲存的記錄項目和儲存位置。也就是集中管理篩選器和目的地功能。如要變更儲存的記錄項目或儲存位置,只需修改一個專案中的記錄接收器即可。
集中儲存稽核記錄
您可以集中儲存符合_Required
記錄接收器的記錄項目。如要集中儲存這些記錄項目,請執行下列其中一項操作:
建立記錄接收器,將符合
_Required
記錄接收器的記錄項目轉送至集中式記錄 bucket。如前兩個範例所示設定記錄接收器,然後在目的地專案中新增記錄接收器,將符合
_Required
記錄接收器的記錄項目轉送至記錄 bucket。您也可以在_Default
記錄接收器中編輯篩選器。
導入這類策略前,請先詳閱價格指南。
定價
如要瞭解 Cloud Logging 定價,請參閱 Google Cloud Observability 定價。
後續步驟
如要瞭解如何轉送及儲存 Cloud Logging 資料,請參閱下列說明文件:
如要建立接收器,將記錄項目轉送至支援的目的地,請參閱「將記錄轉送至支援的目的地」。
如要瞭解如何建立匯總接收器,以便轉送資料夾或機構中資源的記錄項目,請參閱「匯總接收器總覽」。
如要瞭解已路由傳送記錄項目的格式,以及記錄在目的地中的組織方式,請參閱下列文件: