本文件說明如何建立匯總sink。匯總接收器可讓您將貴機構或資料夾中Google Cloud 資源產生的記錄檔合併並轉送至集中位置。
事前準備
建立接收器前,請確認下列事項:
您熟悉匯總接收器的行為。如要瞭解這些接收器,請參閱「匯總接收器總覽」。
您有一個 Google Cloud 資料夾或機構,其中含有記錄項目,您可以在記錄檔探索工具中查看這些項目。
您擁有以下任一 IAM 角色,用於您要將記錄項目導向的Google Cloud 機構或資料夾。
- 擁有者 (
roles/owner
) - Logging Admin (
roles/logging.admin
) - Logs Configuration Writer (
roles/logging.configWriter
)
這些角色包含的權限可讓您建立、刪除或修改匯流程。如要瞭解如何設定身分與存取權管理角色,請參閱 Logging 的存取權控管指南。
- 擁有者 (
匯總接收器的目的地已存在,或您可以建立這個目的地。
如果目的地是 Google Cloud 專案,該專案可以位於任何組織中。所有其他目的地都可以位於任何組織的任何專案中。
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
詳情請參閱 Google Cloud 驗證說明文件中的「驗證以使用 REST」。
建立匯總接收器
如要設定匯總接收器,請建立接收器,然後授予接收器寫入目的地的權限。本節說明如何建立匯總匯出端。如要瞭解如何授予接收端權限,請參閱本頁「設定目的地權限」一節。
每個資料夾或機構最多可建立 200 個接收器。
控制台
如要為資料夾或機構建立匯總資料集,請按照下列步驟操作:
-
在 Google Cloud 控制台中,前往「Log Router」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。
選取現有的資料夾或機構。
選取「Create Sink」(建立接收器)。
在「Sink details」面板中,輸入下列詳細資料:
接收器名稱:提供接收器的 ID。請注意,建立接收器後,您無法重新命名接收器,但可以刪除接收器並建立新的接收器。
Sink 說明 (選填):說明 Sink 的用途或用途。
在「Select sink service」選單中,選取目的地類型,然後完成對話方塊,指定目的地。您可以選取現有目的地或建立目的地。
針對攔截用接收器,請選取 Google Cloud 專案,然後輸入目標 Google Cloud 專案的完全合格名稱:
logging.googleapis.com/projects/DESTINATION_PROJECT_ID
針對非攔截匯流程,請選取目的地,然後輸入目的地的完整名稱。系統支援下列目的地:
Google Cloud project
logging.googleapis.com/projects/DESTINATION_PROJECT_ID
Cloud Logging 值區
logging.googleapis.com/projects/DESTINATION_PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME
BigQuery 資料集
您必須輸入啟用寫入權限的資料集完整名稱。資料集可以是日期區塊或分區資料表。請勿輸入已連結資料集的名稱。連結的資料集為唯讀。
bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID
Cloud Storage 值區
storage.googleapis.com/BUCKET_NAME
Pub/Sub 主題
pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID
Splunk
輸入 Splunk 服務的 Pub/Sub 主題。
在「Choose logs to include in sink」面板中,選取要納入接收器的資源。
針對攔截匯流程,請選取「攔截這個機構和所有子資源擷取的記錄」。
如果是未攔截的接收器,請選取「收錄這個資源和所有子資源擷取的記錄」。
在「Build inclusion filter」欄位中,輸入篩選器運算式,與您要納入的記錄項目相符。如果未設定篩選器,所選資源的所有記錄項目都會轉送至目標位置。
舉例來說,您可能想建立篩選器,將所有資料存取稽核記錄路由至單一記錄桶。這個篩選器如下所示:
LOG_ID("cloudaudit.googleapis.com/data_access") OR LOG_ID("externalaudit.googleapis.com/data_access")
如需篩選器範例,請參閱本頁的「建立匯總匯出端的篩選器」一節。
請注意,篩選器的長度不得超過 20,000 個半形字元。
選用步驟:如要確認您輸入的篩選器是否正確,請選取「Preview logs」。系統會在新分頁中開啟 Logs Explorer,並預先填入篩選條件。
選用:在「Choose logs to exclude from the sink」面板中,執行下列操作:
在「排除篩選器名稱」欄位中輸入名稱。
在「Build an exclusion filter」欄位中,輸入與您想排除的記錄項目相符的篩選器運算式。您也可以使用
sample
函式選取要排除的部分記錄項目。舉例來說,如要排除特定專案的記錄項目,以免將其路由至目的地,請新增下列排除篩選器:
logName:projects/PROJECT_ID
如要排除多個專案的記錄項目,請使用邏輯 OR 運算子連結
logName
子句。
每個匯入可建立最多 50 個排除篩選器。請注意,篩選器的長度不得超過 20,000 個半形字元。
選取「Create Sink」(建立接收器)。
如要完成匯總接收器的設定,請將寫入記錄項目至接收器目的地的權限授予接收器的服務帳戶。詳情請參閱「設定目的地權限」。
gcloud
如要建立匯總接收器,請使用
logging sinks create
指令:如要建立匯流程,請呼叫
gcloud logging sinks create
指令,並確保加入--include-children
選項。使用下列指令前,請先替換以下項目:
- SINK_NAME:記錄接收器的名稱。建立後即無法變更接收器名稱。
- SINK_DESTINATION:您要將記錄項目轉送至的服務或專案。如要瞭解這些目的地的格式,請參閱「目的地路徑格式」。
- INCLUSION_FILTER:接收器的納入篩選器。如需篩選器範例,請參閱「為匯總接收器建立篩選器」。
- FOLDER_ID:資料夾 ID。如要在機構層級建立接收器,請將
--folder=FOLDER_ID
替換為-- organization=ORGANIZATION_ID
。
執行
gcloud logging sinks create
指令:gcloud logging sinks create SINK_NAME \ SINK_DESTINATION --include-children \ --folder=FOLDER_ID --log-filter="INCLUSION_FILTER"
您也可以提供下列選項:
- 如要建立攔截接收器,請加入
--intercept-children
選項。
舉例來說,如果您要在資料夾層級建立匯總接收端,且目的地是 Pub/Sub 主題,指令可能會如下所示:
gcloud logging sinks create SINK_NAME \ pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID --include-children \ --folder=FOLDER_ID --log-filter="logName:activity"
授予接收器服務帳戶寫入接收器目的地的權限。詳情請參閱「設定目的地權限」。
REST
如要建立匯總接收器,請使用
organizations.sinks.create
或folders.sinks.create
Logging API 方法。如下準備方法的引數:將
parent
欄位設為要建立接收器的 Google Cloud 機構或資料夾。父項必須是下列其中一項:organizations/ORGANIZATION_ID
folders/FOLDER_ID
在方法要求主體的
LogSink
物件中,執行下列任一操作:將
includeChildren
設為True
。如要建立攔截接收器,請將
interceptChildren
欄位設為True
。
設定
filter
欄位,以符合您要納入的記錄項目。如需篩選器範例,請參閱「為匯總接收器建立篩選器」。
篩選器的長度不得超過 20,000 個半形字元。
設定剩餘的
LogSink
欄位,方法與為任何接收器設定時相同。詳情請參閱「將記錄路由至支援的目的地」。呼叫
organizations.sinks.create
或folders.sinks.create
以建立接收器。授予接收器服務帳戶寫入接收器目的地的權限。詳情請參閱「設定目的地權限」。
對接收器所做的任何變更可能需要幾分鐘才會套用。
匯總接收器的篩選器
本節提供一些篩選器範例,供您在匯總匯出端使用。如需更多範例,請參閱「使用記錄檔探索工具的查詢範例」。
有一些範例使用了下列標記法:
:
是子字串運算子。請勿替換=
運算子。...
代表其他任何篩選器比較。- 變數會以彩色文字表示。以有效的值取代。
篩選器的長度限制為 20,000 個半形字元。
如要進一步瞭解篩選語法,請參閱「Logging 查詢語言」。
選取記錄來源
如要轉送所有子項資源的記錄項目,請勿在接收器的包含和排除篩選器中指定專案、資料夾或機構。舉例來說,假設您為機構設定匯總接收端,並使用下列篩選器:
resource.type="gce_instance"
使用上述篩選器時,如果記錄項目的資源類型為 Compute Engine 執行個體,且寫入該機構的任何子項,則會由匯總匯出來源路由至目的地。
不過,在某些情況下,您可能會想要使用匯總匯出地點,只將特定子項資源的記錄項目重新導向。舉例來說,基於法規遵循的考量,您可能會想將特定資料夾或專案的稽核記錄儲存在各自的 Cloud Storage 值區中。在這種情況下,請設定納入篩選器,指定您要轉送記錄項目的每個子項資源。如果您想轉送資料夾和該資料夾內所有專案的記錄項目,則篩選器必須列出資料夾和該資料夾所含的每個專案,並使用
OR
子句彙整陳述式。下列篩選器會將記錄項目限制為特定 Google Cloud 專案、資料夾或機構:
logName:"projects/PROJECT_ID/logs/" AND ...
logName:("projects/PROJECT_A_ID/logs/" OR "projects/PROJECT_B_ID/logs/") AND ...
logName:"folders/FOLDER_ID/logs/" AND ...
logName:"organizations/ORGANIZATION_ID/logs/" AND ...
舉例來說,如果您只想將寫入 Compute Engine 執行個體的記錄項目導向寫入
my-folder
資料夾的執行個體,請使用下列篩選器:logName:"folders/my-folder/logs/" AND resource.type="gce_instance"
使用先前的篩選器時,系統不會將記錄項目轉送至
my-folder
以外的任何資源,包括寫入 Google Cloud 專案 (為my-folder
的子項) 的記錄項目。選取要監控的資源
如要僅從Google Cloud 專案中的特定受控資源路由記錄項目,請使用多個比較來精確指定資源:
logName:"projects/PROJECT_ID/logs" AND resource.type=RESOURCE_TYPE AND resource.labels.instance_id=INSTANCE_ID
如需資源類型清單,請參閱「受控資源類型」。
選取記錄項目範例
如要將隨機記錄項目樣本轉送,請新增
sample
內建函式。例如,如果只想轉送符合目前篩選器的記錄項目百分之十,請加上以下這一行:sample(insertId, 0.10) AND ...
詳情請參閱
sample
函式。如要進一步瞭解 Cloud Logging 篩選器,請參閱「Logging 查詢語言」。
設定目的地權限
本節說明如何授予記錄 Identity and Access Management 權限,以便將記錄項目寫入接收端的目的地。如需 Logging 角色和權限的完整清單,請參閱「存取權控管」。
建立或更新接收器時,如果要將記錄項目轉送至目前專案中記錄值區以外的任何目的地,就必須為該接收器建立服務帳戶。Logging 會自動為您建立及管理服務帳戶:
- 自 2023 年 5 月 22 日起,如果您建立接收器,但基礎資源沒有服務帳戶,Logging 會建立服務帳戶。Logging 會為基礎資源中的所有接收端使用相同的服務帳戶。資源可以是 Google Cloud 專案、機構、資料夾或帳單帳戶。
- 在 2023 年 5 月 22 日前,Logging 會為每個接收器建立服務帳戶。自 2023 年 5 月 22 日起,Logging 會針對基礎資源中的所有接收端使用共用服務帳戶。
接收端的寫入者身分,是與該接收端相關聯的服務帳戶 ID。除非寫入目前 Google Cloud 專案的記錄值區,否則所有接收端都會有寫入者身分。寫入者身分中的電子郵件地址會標示必須具備寫入目的地資料存取權的主體。
如要將記錄項目路由至受服務範圍保護的資源,您必須將該接收器的服務帳戶新增至某個存取層級,然後將該層級指派至目標服務範圍。但如果是未匯總的匯入端,則不必這麼做。詳情請參閱「VPC Service Controls:Cloud Logging」。
如要設定接收器的權限,以便將資料路由至目的地,請按照下列步驟操作:
控制台
如要取得接收端服務帳戶的相關資訊,請按照下列步驟操作:
-
在 Google Cloud 控制台中,前往「Log Router」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。
選取 more_vert「選單」,然後選取「查看匯流程詳細資料」。作家身分會顯示在「Sink details」面板中。
如果
writerIdentity
欄位的值含有電子郵件地址,請繼續執行下一個步驟。如果值為None
,您就不需要設定目的地權限。將接收器的寫入者身分複製到剪貼簿。以下是寫入者身分的範例:
serviceAccount:service-123456789012@gcp-sa-logging.iam.gserviceaccount.com
-
請將寫入記錄資料至目的地的權限,授予接收器的寫入者身分所指定的使用者:
-
前往 Google Cloud 控制台的「IAM」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「IAM 與管理」的結果。
在 Google Cloud 控制台的工具列中,選取儲存匯集匯流程目的地的專案。如果目的地是專案,請選取該專案。
按一下「授予存取權」圖示
。輸入接收器的寫入者身分指定的主體,然後授予 IAM 角色:
- Google Cloud project:授予記錄寫入者角色 (
roles/logging.logWriter
)。具體來說,主體需要具備logging.logEntries.route
權限。 - 記錄檔值區:授予 Logs Bucket Writer 角色 (
roles/logging.bucketWriter
)。 - Cloud Storage 值區:授予 Storage 物件建立者角色 (
roles/storage.objectCreator
)。 - BigQuery 資料集:授予 BigQuery 資料編輯者角色 (
roles/bigquery.dataEditor
)。 - Pub/Sub 主題 (包括 Splunk):授予 Pub/Sub 發布者角色 (
roles/pubsub.publisher
)。
- Google Cloud project:授予記錄寫入者角色 (
-
gcloud
請確認您具備包含目的地的Google Cloud 專案的擁有者存取權。如果您沒有資料流目的地位置的擁有者存取權,請要求專案擁有者將寫入者身分新增為主要使用者。
如要取得接收端的服務帳戶相關資訊,請呼叫
gcloud logging sinks describe
方法。使用下列指令前,請先替換以下項目:
- SINK_NAME:記錄接收器的名稱。建立後即無法變更接收器名稱。
執行
gcloud logging sinks describe
指令:gcloud logging sinks describe SINK_NAME
如果接收端詳細資料包含標示為
writerIdentity
的欄位,請繼續執行下一個步驟。如果詳細資料不包含writerIdentity
欄位,您就不需要為匯入端設定目的地權限。將接收器的寫入者身分複製到剪貼簿。以下是寫入者身分的範例:
serviceAccount:service-123456789012@gcp-sa-logging.iam.gserviceaccount.com
呼叫
gcloud projects add-iam-policy-binding
指令,將記錄資料寫入目的地,並授予接收器的寫入者身分相關權限。使用下列指令前,請先替換以下項目:
- PROJECT_ID:專案的 ID。選取儲存匯入集目標的專案。如果目的地是專案,請選取該專案。
- PRINCIPAL:您要授予角色的主體 ID。主體 ID 通常採用以下格式:
PRINCIPAL-TYPE:ID
。例如:user:my-user@example.com
。如需PRINCIPAL
可用的完整格式清單,請參閱「主要識別碼」。 ROLE:IAM 角色。根據記錄接收器的目的地,授予接收器的寫入者身分 IAM 角色:
- Google Cloud project:授予記錄寫入者角色 (
roles/logging.logWriter
)。具體來說,主體需要具備logging.logEntries.route
權限。 - 記錄檔值區:授予 Logs Bucket Writer 角色 (
roles/logging.bucketWriter
)。 - Cloud Storage 值區:授予 Storage 物件建立者角色 (
roles/storage.objectCreator
)。 - BigQuery 資料集:授予 BigQuery 資料編輯者角色 (
roles/bigquery.dataEditor
)。 - Pub/Sub 主題 (包括 Splunk):授予 Pub/Sub 發布者角色 (
roles/pubsub.publisher
)。
- Google Cloud project:授予記錄寫入者角色 (
執行
gcloud projects add-iam-policy-binding
指令:gcloud projects add-iam-policy-binding PROJECT_ID --member=PRINCIPAL --role=ROLE
REST
建議您使用 Google Cloud 控制台或 Google Cloud CLI 為服務帳戶授予角色。
後續步驟
瞭解如何在記錄值區建立記錄檢視畫面。您可以透過記錄檢視,授予主體存取記錄值區中儲存的記錄項目子集的讀取權限。
如要瞭解如何管理現有的接收器,請參閱「將記錄轉送至支援的目的地:管理接收器」一文。
如果您在使用接收器轉送記錄時遇到問題,請參閱「排解轉送和接收器問題」。
如要瞭解如何在目的地中查看記錄檔,以及記錄檔的格式和組織方式,請參閱「查看接收器目的地中的記錄檔」一文。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-06-30 (世界標準時間)。
-