Error Reporting 可汇总您运行的云服务中产生的错误。这些错误要么由 Error Reporting API 报告,要么是 Error Reporting 在检查日志条目中是否存在常见文本模式(例如堆栈轨迹)时推断出的错误。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 配置,请参阅验证密钥的启用状态。
- 日志存储桶满足以下条件之一:
- 日志存储桶存储在日志条目源自的同一项目中。
- 日志条目被路由到一个项目,然后该项目将这些日志条目存储在自己拥有的日志存储桶中。
错误如何分组
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 会自动停用 Error Reporting。
在 Cloud Logging 中,您可以将日志路由到特定位置,从而实现日志区域化。在错误组页面上,Error Reporting 会根据包含日志条目的日志存储桶的区域来整理和显示错误组。例如,us-central-1
下列出的错误组仅包含 us-central-1
中日志存储桶的错误日志。全局错误组仅包含属于 global
区域中日志存储桶的错误日志。
如需过滤错误组页面上显示的错误组的区域,请从区域菜单中选择一个值。此菜单的默认值为 global
。