Error Reporting 会按根本原因汇总和分组应用错误事件,帮助您识别、确定优先级和分诊云服务中的问题。错误事件表示应用错误的一次发生,并捕获其时间戳、执行上下文和错误消息。
Error Reporting 会自动启用,并开始检测错误,无需手动设置。它会直接从 Error Reporting API收集错误事件,或者通过扫描日志条目的堆栈轨迹和常见错误模式来推断 错误事件。
为了优化性能,Error Reporting 每小时最多采集 1000 个错误样本,并在达到此阈值时估算计数。如果事件量超出容量,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 会先进行以下修改,然后再推断错误事件:
- 将一个或多个堆栈帧的所有重复序列替换为该序列的单个匹配项。
- 移除编译器引入的方法和符号。
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 个字面量令牌。 |
数据地区化
如果您因数据驻留或影响级别 4 (IL4) 要求而设置了Assured Workloads ,则 Google Cloud 会自动停用 Error Reporting。
在 Cloud Logging 中,您可以通过将日志路由到特定位置来对日志进行地区化。在错误组 页面上,Error Reporting 会根据包含日志条目的日志存储桶的区域来整理和显示错误组。例如,在 us-central1 下列出的错误组仅包含属于 us-central1 中日志存储桶的错误日志。全局错误组仅包含属于 global 区域中日志存储桶的错误日志。
如需过滤错误组 页面上显示的错误组的区域,请从区域 菜单中选择一个值。此菜单的默认值为 global。
