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.

Error Reporting is automatically enabled.

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.

When Error Reporting analyzes log entries

Error Reporting is a global service built on Cloud Logging and can analyze log entries when all of the following are true:

  • Assured workloads are disabled. For more information, see Overview of Assured Workloads.
  • Customer-managed encryption keys (CMEK) is disabled on all log buckets that store the log entry. For information about how to determine the CMEK configuration for a log bucket, see Verify key enablement.
  • The log bucket satisfies one of the following:
    • The log bucket is stored in the same project where the log entries originated.
    • The log entries were routed to a project, and then that project stored those log entries in a log bucket that it owns.
If you are storing your log entries in log buckets with CMEK enabled, then you can still use Error Reporting. However, you must use the Error Reporting client libraries or the Error Reporting API. For more information, see the Error Reporting API overview and Error Reporting client libraries.

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 rules 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.

Data regionality

If you set up Assured Workloads for data-residency or Impact Level 4 (IL4) requirements, then Google Cloud automatically disables Error Reporting.

In Cloud Logging, you can regionalize your logs by routing them to a specific location. On the Error Groups page, Error Reporting organizes and shows error groups based on the region of the log bucket that contains the log entries. Because Error Reporting is a global service, error groups can be accessed from any region. This behavior isn't configurable.

What's next