Error Reporting 概览

Error Reporting 会汇总您正在运行的云服务中产生的错误。这些错误要么由 Error Reporting API 报告,要么在 Error Reporting 检查日志条目中是否存在常见文本模式(如堆栈轨迹)时推断为错误。Error Reporting 会将根本原因相同的错误分为一组。

当提取的用户日志与其中任一模式匹配时,Cloud Logging 会自动启用 Error Reporting。

由于 Error Reporting 是一项全球服务,因此它只能分析存储在 global 区域的 Cloud Logging 存储分区中的日志条目,其中源 Google Cloud 项目和目标 Google Cloud 项目相同,并且客户管理的加密密钥 (CMEK) 已停用。如果您将日志路由到其他 Google Cloud 项目、区域化存储分区或启用 CMEK,则 Error Reporting 不会捕获和分析这些日志。

Error Reporting 每小时最多采样 1,000 个错误。 在达到此上限后,系统将估算显示的计数。如果收到的事件过多,Error Reporting 每小时最多抽样 100 个错误,并继续推断计数。

错误如何分组

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

后续步骤