Error Reporting overview

Error Reporting aggregates errors produced in your running cloud services. These errors are either reported by the Error Reporting API or are inferred to be errors when Error Reporting inspects log entries for common text patterns such as stack traces. Error Reporting groups errors which are considered to have the same root cause.

Cloud Logging automatically enables Error Reporting when an ingested user log matches any of these patterns.

Because Error Reporting is a global service, it can only analyze log entries that are stored in Cloud Logging buckets that are in the global region, where the source and destination Google Cloud projects are the same, and where customer-managed encryption keys (CMEK) are disabled. If you route logs to a different Google Cloud project, regionalized buckets, or enable CMEK, then Error Reporting doesn't capture and analyze those logs.

Error Reporting samples up to 1,000 errors per hour. When this limit is reached, the displayed counts are estimated. If too many events are received, then Error Reporting samples up to 100 errors per hour and continue to extrapolate the counts.

How errors are grouped

When Error Reporting evaluates log entries, it ignores log entries with the following conditions:

  • On App Engine standard environment, errors logged with a severity lower than ERROR are ignored.
  • Stack frames which are not owned by the user are ignored (for instance, those that belong to public libraries).
  • Any repeating sequence of one or more stack frames is replaced by a single occurrence of that sequence.
  • Compiler-introduced methods and symbols are removed.

Next, Error Reporting follows these general patterns to group errors:

  • Exceptions are grouped together if they have the same exception type and similar stacks.
  • The stack trace is ignored for exceptions that are typically unrelated to the source location where they occur.
  • Errors without an exception stack are grouped together if they were created by the same log entry, approximated by the source location it was reported from (reportLocation).

Specifically, the following grouping rules are applied in this order:

Error type Grouped by
Errors caused by a general problem in the environment.

For example, App Engine specific problems:

com.google.apphosting.runtime.HardDeadlineExceededError
com.google.appengine.api.datastore.DatastoreTimeoutException

Java problems:

java.util.concurrent.CancellationException
Grouped by exception type.
Errors with a stack trace. In the case of nested exceptions, the innermost exception is considered.

For example:

runtime error: index out of range
package1.func1()
      file1:20
package2.func2()
      file2:33
Grouped by exception type and the 5 top-most frames.
Errors without a stack trace, but with a message.

For example:

runtime error: index out of range
    func1()
Grouped by message and (if present) function name. Only the first 3 literal tokens of the message are considered. In the example to the left, these are runtime, error, and index.

What's next