Error Reporting 簡介

Error Reporting 會匯總執行中的雲端服務所產生的錯誤。這些錯誤會由 Error Reporting API 回報,或是在 Error Reporting 檢查堆疊追蹤等常見文字模式的記錄項目時,推斷為錯誤。錯誤報告會將同類型的錯誤歸類到同一個組別中。

系統會自動啟用錯誤回報功能。

Error Reporting 每小時最多會擷取 1,000 個錯誤。達到這個上限時,系統會顯示估計值。如果收到的事件過多,Error Reporting 會每小時擷取最多 100 個錯誤,並繼續推算計數。

Error Reporting 分析記錄項目時

Error Reporting 是建構於 Cloud Logging 的全球服務,可在下列所有情況下分析記錄項目:

  • 已停用 Assured Workloads。詳情請參閱「Assured Workloads 總覽」。
  • 在儲存記錄項目的所有記錄值區中,客戶自行管理的加密金鑰 (CMEK) 都會停用。如要瞭解如何判斷記錄集區的 CMEK 設定,請參閱「驗證金鑰啟用狀態」。
  • 記錄檔 bucket 符合下列其中一個條件:
    • 記錄值區會儲存在記錄項目來源的專案中。
    • 記錄項目會轉送至專案,然後該專案會將這些記錄項目儲存在專案擁有的記錄檔 bucket 中。
如果您在啟用 CMEK 的情況下,將記錄項目儲存在記錄資料夾中,則仍可使用錯誤回報功能。不過,您必須使用 Error Reporting 用戶端程式庫或 Error Reporting API。詳情請參閱「Error Reporting API 總覽」和「Error Reporting 用戶端程式庫」。

錯誤分類方式

Error Reporting 評估記錄項目時,會忽略符合下列條件的記錄項目:

  • 在 App Engine 標準環境中,嚴重性低於 ERROR 的錯誤記錄會被略過。
  • 不是由使用者所擁有的堆疊框架會被略過 (例如:屬於公開程式庫的錯誤)。
  • 以序列的單一發生情況取代任何一個或多個堆疊框架的重複序列。
  • 移除編譯器引進的方法與符號。

接著,Error Reporting 會依據下列規則將錯誤分組:

  • 如果例外狀況具有相同的例外狀況與相似的堆疊,就會分為一組。
  • 系統會略過通常與例外狀況發生來源位置不相關的堆疊追蹤。
  • 如果這些錯誤由相同的記錄項目建立,且回報的來源位置大致相同 (reportLocation),則不含例外狀況堆疊的錯誤會分為一組。

具體來說,系統會依以下順序套用下列分組規則:

錯誤類型 分組依據
因環境中一般問題所造成的錯誤

例如 App Engine 特定問題:

com.google.apphosting.runtime.HardDeadlineExceededError
com.google.appengine.api.datastore.DatastoreTimeoutException

Java 問題:

java.util.concurrent.CancellationException
依例外狀況類型分組。
含有堆疊追蹤的錯誤。以巢狀結構的例外狀況為例,系統會考慮結構最內層的例外狀況。

例如:

runtime error: index out of range
package1.func1()
      file1:20
package2.func2()
      file2:33
依照例外狀況類型與前 5 層最外層的框架分組。
不含堆疊追蹤,但含有訊息的錯誤。

例如:

runtime error: index out of range
    func1()
依照訊息和 (如有) 函式名稱分組。系統僅考慮訊息的前 3 個文字符記。在左側範例中,這些符記為 runtimeerrorindex

資料的地區性

如果您為資料落地或影響層級 4 (IL4) 需求設定Assured Workloads, Google Cloud 會自動停用錯誤回報功能。

在 Cloud Logging 中,您可以將記錄轉送至特定位置,將記錄區域化。在「錯誤群組」頁面中,Error Reporting 會根據含有記錄項目的記錄資料夾區域,整理並顯示錯誤群組。舉例來說,us-central-1 下方列出的錯誤群組只包含 us-central-1 中記錄檔值區的錯誤記錄檔。全球錯誤群組只包含 global 區域中記錄值區的錯誤記錄。

如要篩選「Error Groups」頁面顯示的錯誤群組區域,請從「Region」選單中選取值。這個選單的預設值為 global

「錯誤群組」頁面中的「區域」選單。

後續步驟