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 中。
錯誤分類方式
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 個文字符記。在左側範例中,這些符記為 runtime 、error 和 index 。 |
資料的地區性
如果您為資料落地或影響層級 4 (IL4) 需求設定Assured Workloads, Google Cloud 會自動停用錯誤回報功能。
在 Cloud Logging 中,您可以將記錄轉送至特定位置,將記錄區域化。在「錯誤群組」頁面中,Error Reporting 會根據含有記錄項目的記錄資料夾區域,整理並顯示錯誤群組。舉例來說,us-central-1
下方列出的錯誤群組只包含 us-central-1
中記錄檔值區的錯誤記錄檔。全球錯誤群組只包含 global
區域中記錄值區的錯誤記錄。
如要篩選「Error Groups」頁面顯示的錯誤群組區域,請從「Region」選單中選取值。這個選單的預設值為 global
。