Error Reporting 會匯總執行中雲端服務產生的錯誤事件。錯誤事件代表應用程式中單一錯誤的發生。每個事件儲存的資料都包含錯誤相關資訊,例如發生時間、發生時的環境,以及傳回的錯誤訊息。
錯誤事件可透過 Error Reporting API 回報,或由 Error Reporting 在檢查記錄項目時,根據常見的文字模式 (例如堆疊追蹤) 推斷而得。錯誤報告會依據錯誤的起因,將同類型的錯誤事件歸類到同一個組別中。
系統會自動啟用 Error Reporting。
Error Reporting 每小時最多會取樣 1,000 個錯誤。達到這個上限後,系統會顯示預估數量。如果收到過多事件,Error Reporting 每小時最多會取樣 100 個錯誤,並繼續推斷計數。
Error Reporting 分析記錄檔項目時
Error Reporting 是以 Cloud Logging 為基礎建構的全球服務,可分析記錄檔項目,但前提是必須符合下列所有條件:
- Assured Workloads 已停用。詳情請參閱「Assured Workloads 總覽」。
- 客戶自行管理的加密金鑰 (CMEK) 已在儲存記錄項目的所有記錄值區中停用。Error Reporting 無法將記錄項目儲存在已啟用 CMEK 的記錄值區中。如要瞭解如何判斷記錄儲存區的 CMEK 設定,請參閱驗證金鑰是否已啟用。
- 記錄檔 bucket 符合下列其中一項條件:
- 記錄 bucket 儲存在記錄項目來源的專案中。
- 記錄項目已轉送至專案,然後該專案將這些記錄項目儲存在其擁有的記錄 bucket 中。
錯誤事件的分組方式
Error Reporting 評估記錄項目以找出錯誤事件時,會忽略符合下列條件的記錄項目:
- App Engine 標準環境寫入的記錄項目,嚴重程度低於
ERROR。 - 不是由使用者所擁有的堆疊框架 (例如:屬於公開程式庫的錯誤)。
掃描記錄項目時,Error Reporting 會先進行下列修改,再推斷錯誤事件:
- 以序列的單一發生情況取代任何一個或多個堆疊框架的重複序列。
- 移除編譯器引進的方法與符號。
Error Reporting 會依指定順序套用這些規則,將錯誤事件分組:
| 錯誤事件 | 分組依據 |
|---|---|
| 因環境中一般問題所造成的錯誤事件。
例如 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 自動停用 Google Cloud 錯誤報告。
在 Cloud Logging 中,您可以將記錄檔傳送至特定位置,藉此將記錄檔區域化。在「錯誤群組」頁面中,Error Reporting 會根據含有記錄項目的記錄儲存空間區域,整理並顯示錯誤群組。舉例來說,us-central-1 下列的錯誤群組只包含 us-central-1 中記錄檔值區的錯誤記錄。全域錯誤群組只會包含 global 地區記錄檔值區中的錯誤記錄。
如要篩選「錯誤群組」頁面顯示的錯誤群組區域,請從「區域」選單中選取值。這個選單的預設值為 global。
