排解轉送及儲存記錄的問題

如果轉送或儲存記錄項目時發生問題,您可以使用Google Cloud 控制台診斷設定錯誤、檢查錯誤訊息,以及解決記錄遺漏的問題。

如要瞭解如何在記錄檔資料到達目的地後查看,請參閱「查看接收器目的地中的記錄檔」。

排解記錄轉送問題

本節說明如何排解轉送記錄項目時的常見問題。

建立接收器失敗,發生不明的服務錯誤

您嘗試建立記錄檔接收器,但指令失敗並顯示 INVALID_ARGUMENT (HTTP 400) 錯誤。錯誤訊息包含以下內容:

Sink.destination with unknown service name: [SERVICE_DOMAIN]. Supported services are bigquery.googleapis.com,pubsub.googleapis.com,storage.googleapis.com,logging.googleapis.com

如要解決這個錯誤,請使用其中一項支援服務的全域端點。記錄檔接收器目的地無法指定區域服務端點 (REP),例如 pubsub.LOCATION.rep.googleapis.com。

接收器設定錯誤訊息指出不允許主題區域

發生下列其中一種情況:

  • 您會收到主旨為 [ACTION REQUIRED] Cloud Logging sink configuration error in [PROJECT_ID] 的電子郵件,其中包含錯誤代碼 topic_region_not_allowed。電子郵件中會包含類似下列的訊息:

    主題的訊息儲存政策要求在傳輸過程中強制執行,但 Pub/Sub 伺服器在不允許的區域收到發布要求。請透過與允許區域對應的區域 Cloud Logging 端點發布,或更新主題的訊息儲存政策。

  • 您發現記錄項目的嚴重性等級為 ERROR,錯誤代碼為 "topic_region_not_allowed",文字酬載類似下列內容:

    Cloud Logging sink configuration error in [PROJECT_ID], sink [SINK_NAME]: topic_region_not_allowed ()
    

這些訊息表示接收器的目的地是強制執行傳輸中限制的 Pub/Sub 主題,且 Logging 從主題政策不允許的區域轉送記錄項目。您可以在個別主題的訊息儲存政策中設定傳輸中限制,也可以使用 constraints/pubsub.enforceInTransitRegions 組織政策限制,在整個組織中強制執行。

如要解決這些失敗問題,請採取下列任一做法:

  • 更新目的地 Pub/Sub 主題的訊息儲存政策,停用傳輸中強制執行功能,或擴大允許的永久儲存區域。
  • 如果組織政策強制執行傳輸中限制,請更新組織政策,或要求豁免專案。
  • 更新接收器,將記錄項目轉送至其他目的地。

目的地含有不必要的記錄項目

您正在查看轉送至目的地的記錄項目,並判斷目的地是否包含不想要的記錄項目。

如要解決這個問題,請更新接收器的排除篩選器,將記錄項目轉送至目的地。「排除」篩選器可讓您排除所選記錄項目,不轉送至目的地。

舉例來說,假設您建立匯總接收器,將組織中的記錄項目轉送至目的地。如要排除特定專案的記錄項目,不轉送至目的地,請在接收器中新增下列排除篩選器:

logName:projects/PROJECT_ID

您也可以使用邏輯 OR 運算子連結 logName 子句,排除多個專案的記錄項目。

目的地缺少記錄項目

最常見的接收器相關問題,可能是接收器目的地似乎缺少記錄項目。

在某些情況下,系統不會產生錯誤,但您可能會發現,嘗試在目的地存取記錄項目時,無法存取這些項目。如果您懷疑接收器未正確轉送記錄項目,請檢查接收器的系統記錄指標:

  • exports/byte_count:已轉送的記錄項目位元組數。
  • exports/log_entry_count:已轉送的記錄項目數量。
  • exports/error_count:無法轉送的記錄項目數量。

指標具有標籤,可依接收器名稱和目的地名稱記錄計數,並讓您瞭解接收器是否成功轉送記錄項目。

如果 sink 指標顯示 sink 的效能不如預期,以下列出一些可能原因和處理方式:

延遲

  • 自您建立或更新接收器以來,尚未收到任何相符的記錄項目;系統只會轉送新的記錄項目。

    請等候一小時,然後再次檢查目的地。

  • 相符的記錄項目會延遲送達。

    記錄項目可能要過一段時間才會顯示在目的地。請稍候幾小時,再重新檢查目的地。

查看範圍/篩選器有誤

  • 您用來查看記錄檔 bucket 中儲存的記錄項目範圍不正確。

    請按照下列方式,將搜尋範圍限定在一或多個記錄檢視:

    • 如果您使用的是 Logs Explorer,請使用「Refine scope」(縮小範圍) 按鈕。

    • 如果使用 gcloud CLI,請執行 gcloud logging read 指令並加上 --view=AllLogs 旗標。

  • 您用來選取及查看接收器目的地資料的日期範圍太小。

    在接收器目的地選取資料時,請嘗試擴大時間範圍。

接收器篩選器發生錯誤

  • 接收器的篩選器不正確,未擷取您預期在目的地看到的記錄項目。

    在 Google Cloud 控制台中使用記錄檔路由器編輯接收器的篩選器。如要確認輸入的篩選器正確無誤,請在「Edit sink」(編輯接收器) 面板中選取「Preview logs」(預覽記錄)。系統會在新分頁中開啟 Logs Explorer,並預先填入篩選器。如需查看及管理接收器的操作說明,請參閱「管理接收器」。

查看錯誤

針對每個支援的接收器目的地,Logging 會為設定不當的接收器提供錯誤訊息。

查看這些接收器相關錯誤的方法有幾種,詳情請參閱下列各節:

錯誤記錄檔

如要詳細檢查接收器相關錯誤,建議您查看接收器產生的錯誤記錄項目。如要進一步瞭解如何查看記錄項目,請參閱「使用 Logs Explorer 查看記錄檔」。

您可以在 Logs Explorer 的查詢編輯器窗格中使用下列查詢,查看接收器的錯誤記錄。相同的查詢也適用於 Logging API 和 gcloud CLI。

複製查詢前,請將變數 SINK_NAME 替換為要排解問題的接收器名稱。您可以在 Google Cloud 控制台的「Log Router」(記錄檔路由器) 頁面找到接收器名稱。

logName:"logging.googleapis.com%2Fsink_error"
resource.type="logging_sink"
resource.labels.name="SINK_NAME"

舉例來說,如果接收器名稱為 my-sink-123,記錄項目可能如下所示:

{
   errorGroups: [
   0: {
   id: "COXu96aNws6BiQE"
   }]
   insertId: "170up6jan"
   labels: {
      activity_type_name: "LoggingSinkConfigErrorV2"
      destination: "pubsub.googleapis.com/projects/my-project/topics/my-topic"
      error_code: "topic_not_found"
      error_detail: ""
      sink_id: "my-sink-123"
   }
   logName: "projects/my-project/logs/logging.googleapis.com%2Fsink_error"
   receiveTimestamp: "2024-07-11T14:41:42.578823830Z"
   resource: {
   labels: {
      destination: "pubsub.googleapis.com/projects/my-project/topics/my-topic"
      name: "my-sink-123"
      project_id: "my-project"
   }
   type: "logging_sink"
   }
   severity: "ERROR"
   textPayload: "Cloud Logging sink configuration error in my-project, sink my-sink-123: topic_not_found ()"
   timestamp: "2024-07-11T14:41:41.296157014Z"
}

LogEntry 欄位 labels 及其巢狀鍵/值資訊可協助您找出接收器錯誤的來源,其中包含受影響的資源、受影響的接收器和錯誤代碼。labels.error_code 欄位包含錯誤的簡短說明,可讓您瞭解接收器的哪個元件需要重新設定。

如要解決這項錯誤,請編輯接收器。舉例來說,您可以使用「Log Router」(記錄檔路由器) 頁面編輯接收器:

前往「Log Router」(記錄檔路由器)

電子郵件通知

重要聯絡人會將接收器設定錯誤電子郵件通知,傳送給指派至 Google Cloud 專案或其父項資源技術通知類別的聯絡人。如果資源未設定技術通知聯絡人,系統會將電子郵件通知傳送給列為資源 IAM 專案擁有者 roles/owner 的使用者。

針對記錄檔接收器名稱和錯誤的每種組合,系統每天會傳送一則通知。

電子郵件訊息包含下列資訊:

  • 資源 ID:設定接收器的 Google Cloud 專案或其他Google Cloud 資源名稱。
  • 接收器名稱:含有設定錯誤的接收器名稱。
  • 接收器目的地:接收器轉送目的地的完整路徑,例如 pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID
  • 錯誤代碼:錯誤類別的簡短說明,例如 topic_not_found。
  • 錯誤詳細資料:錯誤的詳細資訊,包括排解基礎錯誤的建議。

這封電子郵件的寄件者是 logging-noreply@google.com。

主旨類似於:Subject: [ACTION REQUIRED] Cloud Logging sink configuration error in my-project

如要查看及管理接收器,請使用「Log Router」(記錄檔路由器) 頁面:

前往「Log Router」(記錄檔路由器)

適用於資源的任何接收器設定錯誤都會在清單中顯示為 Cloud Logging sink configuration error。每項錯誤都包含一個連結,指向由故障接收器產生的其中一個記錄項目。如要詳細檢查基礎錯誤,請參閱「錯誤記錄」一節。

接收器目的地不正確

如果您設定了接收器,但在 Logging 嘗試轉送記錄項目時,看到找不到目的地的設定錯誤,可能的原因如下:

  • 接收器設定中指定的接收器目的地有拼寫錯誤或其他格式錯誤。

    您必須更新接收器設定,正確指定現有目的地。

  • 指定的目的地可能已刪除。

    您可以變更接收器設定,改用其他現有目的地,或重新建立同名目的地。

如要解決這類失敗問題,請編輯接收器。舉例來說,您可以使用「Log Router」(記錄檔路由器) 頁面編輯接收器:

前往「Log Router」(記錄檔路由器)

找到目的地,且 Logging 收到符合篩選條件的新記錄項目時,接收器就會開始轉送記錄項目。

接收器停用問題

如果您停用接收器,停止將記錄項目儲存在記錄檔 bucket,但仍看到記錄項目轉送,請稍候幾分鐘,讓接收器的變更生效。

接收器的權限問題

如果接收器嘗試轉送記錄項目,但缺少接收器目的地的適當 IAM 權限,接收器就會回報錯誤 (您可以查看),並略過記錄項目。

建立接收器時,必須將適當的目的地權限授予接收器的服務帳戶。如果您在Google Cloud 專案的 Google Cloud 控制台中建立接收器, Google Cloud 控制台通常會自動指派這些權限。不過,如果您在其他Google Cloud 專案中建立接收器,或使用 gcloud CLI 或 Logging API 建立接收器,則必須手動設定權限。

如果接收器出現權限相關錯誤,請新增必要權限,或更新接收器,改用其他目的地。如要瞭解如何更新這些權限,請參閱「目的地權限」。

建立接收器後,需要稍等片刻,才能使用接收器的新服務帳戶,授權寫入目的地。修正權限後,Logging 收到符合篩選條件的新記錄項目時,接收器就會開始轉送記錄項目。

接收器的組織政策問題

如果您嘗試轉送記錄項目,但遇到組織政策限制 Logging 寫入接收器的目的地,則接收器無法轉送至所選目的地,並會回報錯誤。

如果看到與組織政策相關的錯誤,可以採取下列做法:

  • 更新目的地的組織政策,移除會阻止接收器轉送記錄項目的限制。這項操作的前提是您具備更新組織政策的適當權限。

    您可以檢查是否存在資源位置限制 (constraints/gcp.resourceLocations)。這項限制會決定資料的儲存位置。此外,部分服務支援可能影響記錄檔接收器的限制。舉例來說,選取 Pub/Sub 目的地時,可能會有多項限制。如需可能限制的清單,請參閱「組織政策限制」。

    如需操作說明,請參閱「建立及編輯政策」。

  • 如果無法更新組織政策,請在「Log Router」(記錄檔路由器) 頁面中更新接收器,改用符合規定的目的地。

    前往「Log Router」(記錄檔路由器)

當組織政策不再禁止接收器寫入目的地,且 Logging 收到符合篩選條件的新記錄項目時,接收器就會開始轉送記錄項目。

接收器的加密金鑰問題

如果您使用加密金鑰 (無論是由 Cloud Key Management Service 管理,還是由您自行管理) 加密接收器目的地中的資料,可能會看到相關錯誤。以下列出一些可能的問題和修正方法:

  • 找不到 Cloud KMS 金鑰。

    • 找不到 Google Cloud 專案,該專案含有設定為加密資料的 Cloud KMS 金鑰。

    • 請使用現有Google Cloud 專案中有效的 Cloud KMS 金鑰。

  • Cloud KMS 金鑰的位置與目的地位置不符。

    • 如果包含 Cloud KMS 金鑰的 Google Cloud 專案所在區域與目的地所在區域不同,加密作業就會失敗,且接收器無法將資料轉送至該目的地。

    • 使用 Google Cloud 專案中的 Cloud KMS 金鑰,且專案區域與接收器目的地相符。

  • 接收器的服務帳戶無法存取加密金鑰。

    • 即使已使用正確的服務帳戶權限成功建立接收器,如果接收器目的地使用的加密金鑰未授予服務帳戶足夠的權限來加密或解密資料,系統仍會顯示這則錯誤訊息。

    • 針對接收器 writerIdentity 欄位中指定的服務帳戶,授予 Cloud KMS CryptoKey 加密者/解密者角色,用於目的地使用的金鑰。並確認 Cloud KMS API 已啟用。

接收器配額問題

接收器寫入記錄項目時,會套用匯出和目的地配額。視目的地而定,配額會強制套用至建立接收器的資源 (例如 Pub/Sub),或目的地本身 (例如 BigQuery)。如果配額用盡,接收器就會停止將記錄項目轉送至目的地。

  • 將記錄項目轉送至 Pub/Sub 主題的接收器,限制為每分鐘 60 GB。如果記錄項目數量超出匯出率配額,系統會寫入含有 topic_over_quota 錯誤代碼的記錄項目。

匯總接收器也適用配額。這些接收器會轉送建立時所在資料夾或組織,以及子項資源的記錄項目。

如要解決配額用盡的問題,請嘗試下列做法:

  • 更新接收器的篩選器,減少符合條件的記錄項目,降低轉送的記錄資料量。您可以在篩選器中使用 sample 函式,選取記錄項目總數的一部分。

  • 提出支援要求,提高配額。

如要進一步瞭解轉送記錄項目時可能適用的限制,請查看適當目的地的配額資訊:

轉送至 Cloud Logging 值區時發生錯誤

您可能會在 Logs Explorer 中,看到已透過接收器排除的記錄項目。如果符合下列任一條件,您仍可查看這些記錄項目:

  • 您是在產生記錄項目的 Google Cloud 專案中執行查詢。

    如要修正這個問題,請確認您是在正確的Google Cloud 專案中執行查詢。

  • 排除的記錄項目已傳送至多個記錄檔 bucket;您看到的是要排除的相同記錄副本。

    如要修正這個問題,請在「Log Router」(記錄檔路由器) 頁面中檢查接收器,確認其他接收器的篩選器未納入記錄項目。

  • 您有權存取記錄項目傳送至的記錄檔 bucket 中的檢視畫面。在這種情況下,您預設會看到這些記錄項目。

    如要避免在 Logs Explorer 中看到這些記錄項目,可以縮小搜尋範圍,只搜尋來源 Google Cloud 專案或 bucket。

排解記錄儲存問題

為什麼無法刪除這個 bucket?

如要刪除 bucket,請按照下列步驟操作:

  • 請確認您具備刪除 bucket 的適當權限。如需所需權限清單,請參閱「使用 IAM 控管存取權」。

  • 列出 bucket 的屬性,判斷 bucket 是否已鎖定。如果 bucket 已鎖定,請查看 bucket 的保留期限。在值區中的所有記錄檔都達到值區的保留期限之前,您無法刪除鎖定的值區。

哪些服務帳戶會將記錄檔轉送至我的值區?

如要判斷是否有任何服務帳戶具備 IAM 權限,可將記錄轉送至 bucket,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「IAM」頁面:

    前往「IAM」

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「IAM & Admin」(IAM 與管理) 的結果。

  2. 在「權限」分頁,依「角色」查看。您會看到一個表格,其中列出與Google Cloud 專案相關聯的所有 IAM 角色和主體。

  3. 在資料表的「Filter」(篩選器)文字方塊中,輸入「Logs Bucket Writer」(記錄檔 bucket 寫入者)。

    您會看到具備「記錄檔 bucket 寫入者」角色的主體。如果主體是服務帳戶,其 ID 會包含 字串。

  4. 選用:如要移除服務帳戶,使其無法將記錄轉送至 Google Cloud 專案,請選取服務帳戶的核取方塊,然後按一下「Remove」(移除)。

為什麼我已將 Google Cloud 專案從_Default接收器中排除,卻仍看到該專案的記錄?

您可能是在集中式 Google Cloud 專案的記錄檔 bucket 中查看記錄檔,該專案會匯總整個組織的記錄檔。

如果您使用 Logs Explorer 存取這些記錄,並看到從_Default接收器排除的記錄,則檢視畫面可能設為Google Cloud 專案層級。

如要修正這個問題,請在「Refine scope」(縮小範圍) 選單中選取「Log view」(記錄檢視),然後選取與Google Cloud 專案中_Default bucket 相關聯的記錄檢視。您應該不會再看到排除的記錄。