路由記錄項目

本文說明 Cloud Logging 如何將 Google Cloud收到的記錄項目轉送。路由目的地分為幾種類型。舉例來說,您可以將記錄項目轉送至記錄值區等目的地,以便儲存記錄項目。如果您想將記錄資料匯出至第三方目的地,可以將記錄項目轉送至 Pub/Sub。此外,記錄項目也可以轉送至多個目的地。

以下是 Cloud Logging 轉送及儲存記錄項目的大致方式:

圖表:說明 Cloud Logging 如何轉送記錄項目。

關於記錄路由器

每個 Google Cloud 專案、帳單帳戶、資料夾和機構都有一個記錄檔路由器,可透過資源層級接收器管理記錄項目的流量。記錄檔轉送器也會透過記錄項目的資源層級結構中的接收器,管理記錄項目的流程。接收器可控制記錄項目如何轉送至目的地。

記錄路由器會暫時儲存記錄項目。這種行為可緩衝記錄項目流經接收器時可能發生的暫時性中斷和停機情形。臨時儲存空間無法防止設定錯誤。

記錄檔路由器的臨時儲存空間與記錄值區提供的長期儲存空間不同。

系統會捨棄時間戳記在過去超過記錄保留期限,或在未來超過 24 小時的記錄項目。

關於記錄接收器

記錄接收器收到記錄項目時,會判斷是否應略過或重新導向該記錄項目。系統會比較記錄檔項目和記錄接收器中的篩選器,做出這項決定。當記錄項目經過路由時,記錄接收器會將記錄項目傳送至記錄接收器指定的目的地。該目的地可以是專案、儲存位置或服務。

記錄匯出地點屬於特定 Google Cloud 資源: Google Cloud 專案、帳單帳戶、資料夾和機構。這些資源也包含多個記錄接收器。當資源收到記錄項目時,該資源中的每個記錄接收器都會獨立評估記錄項目。因此,多個記錄接收器可以將相同的記錄項目轉送至相同的記錄項目。

根據預設,記錄資料會儲存在資料來源專案中。不過,您可能會基於以下幾個原因而變更這項設定:

  • 集中儲存記錄資料。
  • 將記錄資料與其他業務資料彙整在一起。
  • 以您需要的方式整理記錄資料。
  • 將記錄傳輸到其他應用程式、其他存放區或第三方。舉例來說,您可能會想要從 Google Cloud 匯出記錄,以便在第三方平台上查看記錄。如要匯出記錄項目,請建立記錄接收器,將記錄項目轉送至 Pub/Sub。

設定錯誤的記錄接收器不會轉送記錄項目。當接收端設定不正確時,系統會寫入記錄項目,回報錯誤的詳細資料。此外,系統也會傳送電子郵件給資源的重要聯絡人。詳情請參閱「排解:查看錯誤」。

記錄接收器無法將記錄項目轉送至過去。也就是說,記錄接收器無法將在接收器建立之前收到的記錄項目重新導向。同樣地,如果接收器設定錯誤,接收器只會轉送在設定錯誤解決後才傳送的記錄項目。不過,您可以事後將記錄值區中的記錄資料複製到 Cloud Storage。詳情請參閱「複製記錄」。

支援機構和資料夾

如要管理機構或資料夾中的記錄資料,您可以執行下列操作:

  • 您可以建立匯總接收器,將機構或資料夾及其子項的記錄項目轉送至接收器指定的目的。匯總匯出端有兩種類型:

    • 不攔截的匯總接收器
    • 攔截匯總接收器

    這兩種接收器類型之間的差異在於,在資源階層的某個層級攔截接收器,可能會影響階層中較低層級的資源路由。非攔截式接收器不會影響其他資源的路由。當資源中的攔截接收器與記錄項目相符時,記錄項目不會傳送至子項資源中的接收器,但記錄項目一律會傳送至記錄項目來源資源中的 _Required 記錄接收器

  • 您可以設定預設資源設定,指定系統在機構或資料夾中為新資源建立的 _Default 匯流程設定。舉例來說,您可以使用這些設定停用 _Default 匯流程,或指定該匯流程中的篩選器。

轉送範例

本節說明來自專案的記錄項目如何流經資源階層結構中的接收端。

範例:不存在匯總接收器

如果記錄項目的資源階層中沒有匯總接收器,系統會將記錄項目傳送至記錄項目來源專案中的記錄接收器。如果記錄項目符合接收器的納入篩選器,但不符合任何排除篩選器,專案層級接收器會將記錄項目轉送至接收器的目的地。

範例:存在非攔截的匯入集區匯流程

假設記錄項目的資源階層中存在非攔截的匯總匯出端。記錄路由器將記錄項目傳送至非攔截的匯總接收器後,會發生以下情況:

  1. 當記錄項目符合包含篩選器,但不符合任何排除篩選器時,非攔截匯總接收器會將記錄項目路由至接收器的目的地。

  2. 記錄路由器會將記錄項目傳送至記錄項目來源專案中的記錄接收器。

    如果記錄項目符合接收器的納入篩選器,但不符合任何排除篩選器,專案層級接收器會將記錄項目轉送至接收器的目的地。

範例:存在攔截的匯總匯出端

假設記錄項目的資源階層中存在一個攔截匯總接收器。記錄路由器將記錄項目傳送至攔截的匯總接收器後,會發生下列其中一種情況:

  • 記錄項目符合包含篩選器,但不符合任何排除篩選器:

    1. 記錄項目會轉送至攔截匯總接收器的目的地。
    2. 記錄項目會傳送至記錄項目來源專案中的 _Required 接收端。
  • 記錄項目不符合包含篩選器,或符合至少一個排除篩選器:

    1. 攔截的匯總匯出端不會將記錄項目路由。
    2. 記錄路由器會將記錄項目傳送至記錄項目來源專案中的記錄接收器。

      如果記錄項目符合接收器的納入篩選器,但不符合任何排除篩選器,專案層級接收器會將記錄項目轉送至接收器的目的地。

記錄檔接收器篩選器

每個記錄接收器都包含一個包含篩選器,且可包含多個排除篩選器。這些篩選器會決定記錄接收器是否將記錄項目轉送至接收器的目的地。如果您未指定任何篩選器,則每個記錄項目都會轉送至接收器的目的。

記錄接收器會根據下列規則轉送記錄項目:

  • 如果記錄項目不符合包含篩選器,則不會進行路由。如果接收器未指定「包含」篩選器,則每個記錄項目都會符合該篩選器。

  • 如果記錄項目符合包含篩選器和至少一個排除篩選器,則不會進行路由。

  • 如果記錄項目符合納入篩選器,且不符合任何排除篩選器,則會轉送至接收器的目的地。

您可以使用記錄查詢語言,指定記錄匯入端中的篩選器。

您無法使用排除篩選器來減少 entries.write API 配額的用量,或 entries.write API 呼叫的次數。Logging API 收到記錄項目後,系統就會套用排除篩選器。

系統建立的記錄接收器

Cloud Logging 會為每個 Google Cloud 專案、帳單帳戶、資料夾和機構建立兩個記錄匯出端,一個名為 _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 記錄檔值區。

您無法修改或刪除 _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 中,並建立已連結的 BigQuery 資料集。連結的資料集是唯讀資料集,可像任何其他 BigQuery 資料集一樣進行查詢。

BigQuery 資料集
如要彙整記錄資料與其他業務資料,請選取這個目的地。您指定的資料集必須啟用寫入權限。請勿將接收器的目的地設為已連結的 BigQuery 資料集。連結的資料集為唯讀。
Cloud Storage 值區
如要長期儲存記錄資料,請選取這個目的地。Cloud Storage 值區可以位於記錄項目來源的專案中,也可以位於其他專案中。記錄項目會儲存為 JSON 檔案。
Pub/Sub 主題
如要匯出Google Cloud 的記錄資料,然後使用 Splunk 或 Datadog 等第三方整合服務,請選取這個目的地。記錄項目會轉換為 JSON 格式,然後轉送至 Pub/Sub 主題。

目的地限制

本節將說明各個目的地的限制:

  • 如果您將記錄項目轉送至不同 Google Cloud 專案中的記錄檔值區,Error Reporting 就不會分析這些記錄項目。詳情請參閱「Error Reporting 總覽」。
  • 如果您將記錄項目導向 BigQuery 資料集,則該 BigQuery 資料集必須啟用寫入權限。您無法將記錄項目轉送至連結的資料集,因為該資料集為唯讀。
  • 將記錄資料轉送至 Cloud Storage 值區的新接收器,可能需要數個小時才能開始轉送記錄項目。這些接收端會每小時處理一次。
  • 當記錄匯流程的目的地位於 Google Cloud 專案時,會受到下列限制:

    • 但有一次跳轉限制。
    • 只有來自目的地專案的記錄項目,才會符合 _Required 記錄檔接收器的篩選條件,並轉送至目的地專案的 _Required 記錄檔 bucket。
    • 只有位於記錄項目資源階層中的匯總接收端會處理記錄項目。

    舉例來說,假設專案 A 中的記錄檔接收器目的地是專案 B。則下列條件成立:

    • 由於單跳限制,專案 B 中的記錄接收器無法將記錄項目重新導向至 Google Cloud 專案。
    • 專案 B_Required 記錄檔值區只會儲存來自專案 B 的記錄項目。這個記錄檔值區不會儲存任何其他資源產生的記錄項目,包括來自 A 專案的項目。
    • 如果專案 A 和專案 B 的資源階層不同,則專案 A 中的記錄匯流程將記錄項目轉送至專案 B 時,不會傳送至專案 B 資源階層中的匯總匯流程。
    • 如果專案 A 和專案 B 有相同的資源階層,則記錄項目會傳送至該階層中的匯總接收器。如果記錄項目未遭到匯總接收器攔截,則記錄檔路由器會將記錄項目傳送至專案 A 中的接收器。

路由記錄項目對記錄指標的影響

記錄指標是以記錄項目內容為基礎的 Cloud Monitoring 指標。舉例來說,您可以使用記錄指標來計算含有特定訊息的記錄項目數量,或擷取記錄項目中記錄的延遲資訊。您可以在 Cloud Monitoring 圖表中顯示記錄檔指標,而警示政策則可監控這些指標。

系統定義的記錄指標適用於專案層級。使用者定義的記錄指標可套用至專案層級或記錄值區層級。當您使用匯總匯出來源將記錄項目轉送至記錄檔值區,以及將記錄項目從一個專案轉送至另一個專案的記錄檔值區時,值區專屬記錄指標就會派上用場。

系統定義的記錄指標
只要符合下列所有條件,記錄路由器就會計算記錄項目:
  • 記錄項目會經過定義記錄指標的專案記錄接收器。
  • 記錄項目會儲存在記錄值區中。記錄檔 bucket 可位於任何專案中。

    舉例來說,假設專案 A 有一個記錄接收器,其目的地為專案 B。另外,假設專案 B 中的記錄檔接收器會將記錄項目轉送至記錄檔值區。在這種情況下,從專案 A 轉送至專案 B 的記錄項目會納入專案 A 的系統定義記錄指標。這些記錄項目也會納入專案 B 的系統定義記錄指標。

使用者定義的記錄指標
只要符合下列所有條件,記錄路由器就會計算記錄項目:
  • 在定義以記錄為基礎的指標的專案中啟用帳單功能。
  • 如果是值區專屬指標,記錄項目會儲存在定義記錄指標的記錄值區中。
  • 對於專案範圍指標,記錄項目會經過定義記錄指標的專案記錄檔接收器。

詳情請參閱「記錄指標總覽」。

最佳做法

如要瞭解如何使用轉送功能來管理資料或處理常見的使用情境,請參閱下列文件:

範例:集中管理記錄儲存空間

本節將概略說明如何設定集中式儲存空間。集中式儲存空間可讓您在單一位置查詢記錄資料,方便您在搜尋趨勢或調查問題時進行查詢。從安全性角度來看,您也只有一個儲存位置,這可以簡化安全分析人員的工作。

集中管理資料夾中專案的記錄儲存空間

假設您管理資料夾,並想集中儲存記錄項目。針對這個用途,您可以執行下列操作:

  1. 在資料夾中,您建立名為 CentralStorage 的專案。
  2. 為資料夾建立攔截匯總接收器,並將其設為轉送所有記錄項目。您將接收器的目的地設為名為 CentralStorage 的專案。

當資料夾或其中一個子資源中產生的記錄項目到達時,系統會將該記錄項目傳送至您建立的攔截匯入處。該匯出端會將記錄項目轉送至名為 CentralStorage 的專案。這個專案中的記錄檔接收器會處理記錄項目:

  • _Default 記錄檔接收器會將所有符合接收器篩選條件的記錄項目,轉送至 _Default 記錄檔 bucket。這個記錄檔值區是集中式儲存位置。

  • _Required 記錄接收器會將符合接收器篩選條件且來自 CentralStorage 專案的記錄項目,轉送至 _Required 記錄值區。這個記錄檔值區並非集中式儲存位置。不過,您可以集中儲存所有記錄資料。如需範例,請參閱「在集中位置儲存稽核記錄」。

匯總接收器處理作業完成後,系統會將記錄項目傳送至記錄項目來源資源中的 _Required 記錄檔接收器。如果記錄項目符合 _Required 記錄接收器中的篩選器,系統就會將記錄項目路由至資源的 _Required 記錄值區。因此,資料夾中的每個 Google Cloud 專案都會將記錄項目儲存在其 _Required 記錄值區中。

集中管理一組專案的記錄儲存空間

如果沒有組織或資料夾,您也可以將記錄項目儲存在單一位置。舉例來說,您可以執行下列操作:

  1. 建立名為 CentralStorage 的專案。
  2. 針對 CentralStorage 以外的每個專案,您都需要編輯 _Default 記錄匯流程,並將目的地設為名為 CentralStorage 的專案。

您可能會想知道,為何先前的範例會將 _Default 記錄匯出端的目的地設為專案,而不是該專案中的 _Default 記錄值區。主要原因是簡單和一致性。將記錄項目轉送至專案時,目的地專案中的記錄接收器會控制要儲存哪些記錄項目,以及儲存位置。也就是說,您將篩選器和目的地功能集中管理。如果您想變更儲存的記錄項目或儲存位置,只需修改一個專案中的記錄接收器即可。

集中稽核記錄的記錄儲存空間

您可以集中儲存與 _Required 記錄檔接收器相符的記錄項目。如要集中儲存這些記錄項目,請執行下列任一操作:

  • 建立記錄接收器,將符合 _Required 記錄接收器的記錄項目轉送至集中式記錄資料夾。

  • 按照前兩個範例設定記錄接收器,然後在目的專案中新增記錄接收器,將符合 _Required 記錄接收器的記錄項目轉送至記錄值區。您也可以在 _Default 記錄匯入器中編輯篩選器。

實施這類策略前,請先詳閱價格規範。

定價

如要瞭解 Cloud Logging 的定價,請參閱 Google Cloud Observability 定價

後續步驟

如要瞭解如何轉送及儲存 Cloud Logging 資料,請參閱下列文件: