Error Reporting in Google Cloud

Error Reporting in Google Cloud

A friendly, step-by-step guide to the service that watches your applications for crashes and exceptions, gathers the repeats into tidy groups, and tells you what broke, how often and since when. Learn how errors get in, how they are grouped, how to be alerted, and how to turn a pile of failures into a calm, repeatable fix routine.

Imagine you run an online bakery and your website quietly fails for one customer in fifty. The customer does not phone you. They simply leave. Somewhere inside your software an unexpected problem happened, a short message was written in a log file among millions of other lines, and nobody saw it. Days later your sales dip, and you cannot tell why.

Error Reporting is Google Cloud’s answer to this silent failure. It looks at the problems your applications run into, collects the ones that look like crashes and exceptions, groups the repeats together, counts them, and shows them in a clean list with the details a developer needs. In this guide we begin from zero. We explain what an error and a stack trace are, how Error Reporting finds them, how it decides which belong together, how you get alerted, and how a team can build a calm routine around it. Every new word is explained when it first appears, with everyday comparisons along the way.

WWhat Is Error Reporting in Google Cloud?

A first, simple picture before we open the details.

Error Reporting is a Google Cloud service that counts, analyses and aggregates the crashes and exceptions in your running cloud services. In plain words, it is a tidy inbox for application errors. Instead of reading raw log lines, you open a page that lists each distinct problem once, with how many times it happened, how many users it touched, when it first appeared, when it last appeared, and where in the code it came from.

It belongs to Google Cloud’s observability family, the set of tools that help you see what is happening inside your systems. Its neighbours are Cloud Logging for storing log messages, Cloud Monitoring for numbers and alerts, and Cloud Trace for following a request through many services. Error Reporting sits on top of logs: it reads the entries that look like errors and turns them into a structured, human-friendly view.

Everyday analogy

Think of a hospital emergency room. Hundreds of people arrive with problems. A triage nurse does not read every patient’s full life story. The nurse groups cases (“another broken wrist”), notes how many there are, flags new kinds of problem and tells doctors which need attention first. Error Reporting is the triage nurse for your software.

What it does for you

  • Detects errors from logs and from direct reports, with no heavy setup in many environments.
  • Groups similar errors so one bug appears as one line, not ten thousand.
  • Counts occurrences over time and shows trends in a small chart.
  • Shows details such as the stack trace, the service, the version and a sample log entry.
  • Notifies you when a new error appears or when a resolved one comes back.
  • Tracks status so a team can mark errors as acknowledged, resolved or muted.
  • Links each error group to a ticket in your issue tracker so everyone can follow progress.
1 line
Per distinct problem, not per occurrence
Seconds
Typical delay from error to list, depending on the path
Few steps
To start in many Google Cloud services
i
Remember

Error Reporting does not fix errors and it does not stop them from happening. It makes them visible, sorted and shareable so the right person can fix them quickly.

TThe Problem: Errors Hidden in an Ocean of Logs

Why reading raw logs is a poor way to find bugs.

Too much noise

A busy application can write millions of log lines a day. Most are routine messages such as “request received” or “order saved.” A real error is a needle in a haystack. Searching for the word “error” helps a little, but it also finds harmless warnings, expected failures and old problems everyone already knows about.

One bug, a thousand lines

When a bug affects many users, it writes the same failure again and again. Reading ten thousand copies of the same message does not teach you anything the first copy did not. What you really want to know is: how many different problems exist, and which is biggest?

Users do not report most errors

Many people never complain. They close the page, uninstall the app or go to a competitor. Without automatic detection, a team learns about problems only through angry emails or falling revenue, which is slow and costly.

Everyday analogy

Imagine a city where every broken streetlight sends the council a letter, and the letters pile up unread in a warehouse. A single dark street could generate a thousand identical letters. Error Reporting is the clerk who sorts the letters into piles by street, counts them, and puts the busiest piles on the mayor’s desk.

Slow, scattered investigation

Without a central view, developers hunt for the right log, the right time window, the right server and the right version. Valuable minutes disappear while customers wait. Having one place that says “this problem began after yesterday’s release and affects the checkout service” shortens the whole investigation.

Need

Visibility

See errors even if no user ever reports them.

Need

Grouping

Turn many events into a few meaningful problems.

Need

Priority

Know which problem hurts the most users right now.

Need

Context

Get the stack trace, version, service and example request in one place.

Need

Notification

Be told quickly when something new breaks.

Need

Teamwork

Share status, link tickets and avoid duplicate work.

!
Honest note

Error Reporting shows what your code reports as failures. It cannot see problems that are silent, such as a page that loads but shows wrong numbers. Use it together with monitoring of business results.

EErrors, Exceptions and Stack Traces for Complete Beginners

The few programming ideas you need before the service makes sense.

What is an error?

When a program is running and meets a situation it cannot handle, such as dividing by zero, reading a missing file or calling a service that does not answer, it raises a signal that something went wrong. In many languages this signal is called an exception. If nothing catches and handles the exception, the program may stop or return a failure to the user. Programmers also use the word error loosely for any such failure.

Everyday analogy

A kitchen worker finds the sugar tin is empty in the middle of baking. They can shout for the manager (raise an exception). If a supervisor is ready to deal with it (“fetch more sugar”), the cake carries on. If nobody handles it, the baking stops and the order fails.

Handled and unhandled

A handled exception is one the code expects and deals with, for example showing “please try again.” An unhandled exception is a surprise that travels all the way up and crashes the request or the whole program. Error Reporting is most useful for unhandled and unexpected problems, though applications can deliberately report handled ones when they matter.

What is a stack trace?

Programs are made of functions that call other functions. At any moment the running code has a chain of calls, with the newest at the top, a bit like a stack of plates. When an exception occurs, the language can print this chain. That printout is called a stack trace. It lists the files, functions and line numbers that were active, so a developer can see exactly where the failure happened and how the code got there.

flowchart TD
  A["User clicks Place Order"] --> B["checkout function"]
  B --> C["calculate total function"]
  C --> D["apply discount function"]
  D --> E["Failure: discount value is missing"]
  E -.-> F["Stack trace lists D, C, B, A with line numbers"]
    
Figure 1: A stack trace is the chain of function calls that led to a failure, listed from the point of failure back to the start.

Reading the diagram

The user’s click starts a chain: checkout calls a total calculation, which calls a discount step, which fails because a value is missing. The stack trace records that chain. A developer reading it sees the failing line first and the story of how the program arrived there behind it. Error Reporting uses this chain as the “fingerprint” of the problem, which is why a good stack trace is so important.

Other terms you will meet

  • Log entry: one recorded message, with a time, a severity and a text or structured body.
  • Severity: a label such as info, warning or error that says how serious a log entry is.
  • Crash: the program stops completely because of an unhandled failure.
  • Regression: a problem that was fixed and later returns, often after a new release.
  • Release or version: a numbered snapshot of your code that you deploy.
i
Start with the top line

When you read a stack trace, begin with the first lines. They name the type of failure and the place it happened. Lines far below are usually the framework code that started the request.

CCore Concepts: Events, Groups, Services and Versions

The small vocabulary of the Error Reporting console.

Concept

Error event

One single occurrence of a failure at one moment, with its stack trace and context.

Concept

Error group

A bundle of error events that Error Reporting decides are the same underlying problem.

Concept

Service

The name of the application or component that produced the error, such as checkout or search.

Concept

Version

The release label of the code that produced the error, such as a build number.

Concept

Occurrences

How many events a group has received in the chosen time window.

Concept

Affected users

The number of distinct users who met the error, when the application reports a user identifier.

Concept

First seen and last seen

Timestamps for when a group first appeared and when it most recently occurred.

Concept

Resolution status

A label showing whether the team is handling the group: open, acknowledged, resolved or muted.

Events versus groups

This pair is the most important idea. An event is a single happening. A group is a family of similar events. If one bug is triggered 5,000 times by 800 users, Error Reporting shows one group with 5,000 occurrences and 800 affected users. You work with groups; the events are the evidence inside them.

Everyday analogy

Each time a customer complains that the shop door sticks, that is an event. The note on the manager’s board that says “door sticks: 37 complaints this week” is the group. You fix the door once, not thirty-seven times.

Service and version context

Every error is stamped with the service name and version. This stamp is called the service context. It lets you ask useful questions: “Did this error exist before version 2.4?” or “Does it only affect the payments service?” Without it, errors from different applications blur together.

Time windows

The console lets you view errors over different time ranges, such as the last hour, day, week or custom periods, up to the limit of how long the service keeps data. A short window shows what is happening now. A long window shows slow trends and old, quiet problems.

Question you askWhere to look
What is breaking right now?The list sorted by recent occurrences, short time window
What is new since the release?Groups with a recent first-seen time and the new version label
What hurts the most people?Sort by affected users
Is an old problem returning?Groups marked resolved that show new occurrences
Which service is the noisiest?Filter by service

HHow Error Reporting Works: The Big Picture

From a failing line of code to a row in the console.

flowchart LR
  APP["Your application: Cloud Run, Functions, App Engine, GKE, VMs"] --> LOG["Cloud Logging"]
  APP -.-> API["Error Reporting API: direct report"]
  LOG --> DET["Error detection: finds exception-like entries"]
  API --> ING["Error Reporting ingestion"]
  DET --> ING
  ING --> GRP["Grouping engine"]
  GRP --> CON["Console: list, details, trends"]
  GRP --> NOT["Notifications"]
  CON --> TEAM["Your team"]
  NOT --> TEAM
    
Figure 2: Errors reach Error Reporting either through Cloud Logging or through the Error Reporting API. They are grouped and then shown or sent to people.

Reading the diagram

Your application runs on a Google Cloud service. Most of these services send what the program prints, including stack traces, to Cloud Logging automatically. Error Reporting looks at those log entries, recognises the ones that contain an exception or stack trace, and ingests them. Alternatively, your code can call the Error Reporting API directly and hand over an error on purpose. After ingestion, a grouping engine decides which events belong together. The result appears in the console, and notifications can be sent.

The journey in steps

1

A failure happens

Code raises an exception while serving a request or running a job.

2

The failure is written down

The runtime or logging library writes the exception message and stack trace as a log entry, usually with error severity.

3

Cloud Logging stores it

The entry is collected and stored with details such as time, service and resource labels.

4

Error Reporting recognises it

The service scans entries for the shape of an exception and stack trace in supported languages and formats.

5

The event is grouped

The stack trace and context are compared with existing groups, and the event joins one or starts a new group.

6

You see and are told

The group’s counts update in the console, and a new-error notification may be sent.

Everyday analogy

It works like a newsroom. Reporters (your applications) write stories into the archive (Cloud Logging). An editor (Error Reporting) scans the archive for breaking-news stories, groups related ones, puts them on the front page and rings the duty manager if the story is new.

?
Dependence on logging

Because most errors arrive through Cloud Logging, anything that stops logs reaching Cloud Logging, such as exclusion rules or missing permissions, can also hide errors from Error Reporting. We return to this in the troubleshooting chapter.

WWhere Errors Come From: Automatic Capture and Direct Reports

The two roads into Error Reporting.

Road one: automatic capture from logs

Many Google Cloud runtimes forward your program’s output to Cloud Logging without extra work. When a printed message contains a recognisable exception and stack trace, Error Reporting can pick it up. This is the easiest path: for several managed services you may need only to make sure the application logs its exceptions, and that the API is enabled in the project.

Road two: reporting directly

Your code can also send errors on purpose, in one of three ways:

  • Client libraries: Google provides libraries for several programming languages that wrap the reporting call, so one line sends an exception along with context.
  • The Error Reporting API: any program that can make a secure web request can report an event, including languages without a ready-made library.
  • Structured log entries: your logging code can write an entry in a documented shape that includes the message, the service context and the stack trace, and Error Reporting treats it as an error event.
PathEffortControlBest for
Automatic from logsLowestLimited: depends on log formatGetting started quickly on managed services
Structured log entryLowHigh: you choose fieldsTeams already using structured logging
Client libraryLow to mediumHighHandled exceptions you still want to track
Direct API callMediumCompleteUnusual languages, devices or batch jobs
Everyday analogy

Automatic capture is a security camera that records everything and lets the guard notice trouble afterwards. Direct reporting is a staff member pressing the alarm button on purpose. Both are useful, and some events are only caught by one of them.

Reporting handled errors on purpose

Sometimes your code catches an exception so a user sees a friendly message, yet the situation is still a bug worth fixing. If nothing reports it, the failure disappears. A good practice is to catch, tell the user kindly, and also report the error so it appears in your list.

i
Report with context

Include the service name, the version, and where possible an anonymous user or request identifier. These small details are what make grouping, counting users and finding regressions possible.

SSupported Environments and Languages

Where Error Reporting works, and what it expects from your code.

Google Cloud environments

Serverless

Cloud Run and Cloud Run functions

Container and function output flows to Cloud Logging automatically, so exceptions are often detected with little setup.

Platform

App Engine

Application logs are collected by the platform, and errors can appear without extra configuration for supported languages.

Containers

Google Kubernetes Engine

Container logs are collected by the cluster logging agent when logging is enabled.

Machines

Compute Engine

Needs an agent that sends application logs to Cloud Logging, or direct reporting from code.

Anywhere

Other clouds and on-premises

Applications elsewhere can use the client libraries or the API with proper credentials.

Mobile and web

Client applications

Dedicated crash reporting products exist for mobile apps. Check what is recommended for front-end and mobile errors.

Languages

Error Reporting understands stack traces from several popular languages, commonly including Go, Java, Node.js, PHP, Python, Ruby and .NET. Each language prints stack traces in its own style, so the service has a recognition rule for each. If your language is not on the list, you can still send structured events with the stack trace as plain text through the API, though automatic recognition may be weaker. The list of supported languages and formats evolves, so confirm it in the official documentation.

Everyday analogy

Different languages write stack traces the way different countries write addresses. The postal clerk (Error Reporting) knows the common formats and can read them quickly. A very unusual format needs the sender to fill in a standard form (the API) so nothing is misread.

Make exceptions look like exceptions

  • Log the full stack trace in a single log entry, not split across many lines that reach the logger separately.
  • Use the standard exception logging methods of your language and logging library, which print traces in the format expected.
  • Avoid trimming or reformatting the trace text before logging it.
  • Set severity to error for entries that represent genuine failures.
  • Use structured logging with a field for the trace and a field for the service context when possible.
!
Split traces break grouping

Some logging setups write every line of a stack trace as a separate log entry. Then Error Reporting sees fragments, not a trace, and the error may not be detected or grouped well. Check how your logs look in Cloud Logging.

GGetting Started: Enabling the Service and Granting Access

The short setup checklist, in words.

1

Choose the project

Error Reporting works per Google Cloud project. Pick the project that holds the application you want to watch.

2

Enable the API

Switch on the Error Reporting API for that project. In some environments the console offers to do this when you first open the page.

3

Make sure logs flow

Confirm that your application’s output reaches Cloud Logging, and that no exclusion rule throws away error entries.

4

Check the runtime identity

The service account your application runs as needs permission to write logs, or to report errors if you call the API directly.

5

Cause a test error

Trigger a harmless, deliberate failure in a test environment and watch for it in the console.

6

Give your team access

Grant viewing and management roles to the people who will use the console.

Who can do what

Access is controlled by IAM, Google Cloud’s identity and access management system. Predefined roles exist for the main jobs. Names and exact permissions can change, so confirm the current ones, but the idea is stable:

Role ideaTypical abilityGive it to
ViewerSee error groups, events and statisticsDevelopers, support, managers
UserViewer abilities plus change status, such as resolve or mute, and set the issue linkThe team that fixes errors
WriterReport new error events through the APIApplication service accounts
AdministratorEverything, including deleting groups and changing settingsA small number of owners
Everyday analogy

It is like a library. Visitors may read books (viewer). Librarians may re-shelve and stamp them (user). Delivery people may drop new books at the back door (writer). The head librarian may remove books from the collection (administrator).

i
Applications should only write

The service account your application uses needs only the ability to send errors, not to read or delete them. Giving applications the smallest role limits the damage if their credentials are ever stolen.

SService Context: Naming Your Service and Version

The two small labels that make errors much easier to understand.

The service context has two parts: a service name and a version. Managed platforms often fill these in for you from their own settings, such as the Cloud Run service name and revision. When you report errors yourself, you should provide them deliberately.

Why they matter

  • Separation: errors from the website, the payment system and the nightly job are shown apart, so one noisy component does not hide the others.
  • Release tracking: if the version label changes with each deploy, you can see which version first produced an error.
  • Responsibility: a service name tells you which team to contact.
  • Filtering: the console lets you narrow the list by service and version.
Everyday analogy

A complaint letter that says “the food was bad” is hard to act on. A letter that says “the lasagne at the Downtown branch on Friday night” can be handled at once. Service and version are the branch and the date for your errors.

Choosing good names

Naming

Stable service names

Use a short name that does not change between releases, such as “checkout-api.”

Naming

Meaningful versions

Use a release number, a short code revision or a build identifier that matches your deployment records.

Naming

Separate environments

Keep test, staging and production apart, ideally in different projects, so test noise never mixes with real problems.

Naming

Avoid unique values

Do not put random or per-request identifiers in the service or version, or every error looks new.

!
A common mistake

Using the full build timestamp or a container hash that changes every minute as the version creates a flood of “new” versions and makes release comparison meaningless. Choose a version label that changes only when you intentionally release.

TA Tour of the Console: List and Details

What you see when you open Error Reporting, and how to read it.

The error list

The first page shows a table of error groups for the selected time range. Each row is one group and typically shows:

  • Resolution status: a label such as open, acknowledged, resolved or muted.
  • Occurrences: how many events arrived in the time range, often with a small trend chart.
  • Users: how many distinct users were affected, if user identifiers are available.
  • Error: a short title, usually the exception type and message, plus the place in the code.
  • Seen in: the services and versions where it appeared.
  • First seen and last seen: when it began and when it last occurred.
  • Response: a link to a ticket, if one has been attached.

Above the table you can filter by time, service, version and status, and sort by the columns that matter, such as most recent or most users.

The group details page

Clicking a row opens the group in detail. You will find a larger chart of occurrences, the list of affected services and versions, the status controls, the link field for a ticket, and a section of samples. Each sample is one real event with its full stack trace, and a link that opens the matching log entry in Cloud Logging, so you can see the surrounding messages around the same moment.

Everyday analogy

The list is the departure board at an airport: every flight in one table, delays highlighted. The details page is the gate information for one flight: who is on it, what went wrong, and what is being done.

How to triage the list in five minutes

1

Set a sensible window

Start with the last day, or the time since your latest release.

2

Filter to production

Pick the service and, if needed, the version you care about.

3

Sort by impact

Look at users affected first, then occurrences.

4

Spot the new ones

Groups with a very recent first-seen time are the most suspicious.

5

Open and decide

Read a sample, decide whether to fix now, schedule, mute or acknowledge, and record that decision.

i
Use the log link

The stack trace tells you where the failure happened. The linked log entries often tell you why, because the lines just before the error show which request, which input and which earlier step led to it.

HHow Errors Are Grouped Together

The clever part that turns noise into a short list.

Grouping is the service’s most valuable trick. When a new event arrives, Error Reporting compares it with existing groups. Two events are usually considered the same problem when they share the same type of failure and the same essential shape of stack trace, meaning the same functions in the same order, within the same service. Details that change on every occurrence, such as specific numbers in the message, are ignored for this comparison where possible.

flowchart TD
  EV["New error event arrives"] --> N["Normalise: strip changing details"]
  N --> FP["Build a fingerprint from exception type and stack frames"]
  FP --> M{"Matches an existing group?"}
  M -->|"Yes"| ADD["Add to group: update counts, last seen, users"]
  M -->|"No"| NEW["Create new group: mark first seen, may notify"]
  ADD --> UI["Console shows updated group"]
  NEW --> UI
    
Figure 3: Grouping builds a fingerprint from the shape of the error and either joins an existing group or starts a new one.

An illustration

Suppose the message says “Order 1001 not found” for one user and “Order 2093 not found” for another. A good grouping step recognises these as the same problem with different numbers, and puts them in one group. If two different functions each fail with a missing value, they have different stack traces and form two groups, even if the words look similar.

Everyday analogy

Think of sorting photographs by the building they show, not by the people standing in front of it. People change in every photo, but the building stays the same. The stack trace is the building; the message numbers are the passers-by.

When grouping goes wrong

  • Over-splitting: one bug appears as many groups, often because the stack trace differs slightly, for example when it contains generated code names or random identifiers.
  • Over-merging: different bugs share a group because they pass through the same shared helper function that appears at the top of both traces.
  • Missing traces: events without a stack trace are grouped by the message alone, which can be crude.

How to improve grouping

ProblemWhat helps
Messages contain unique identifiersKeep identifiers out of the exception message; log them separately as fields
Wrapper exceptions hide the real causePreserve the original cause so the useful frames appear in the trace
Everything fails in one shared helperRaise specific exception types for different failures
No stack trace at allLog the exception object, not just a custom text message
Minified or compiled code makes traces unreadableUse source maps or symbol files where your language supports it
?
Grouping is a best effort

No automatic grouping is perfect. Treat the list as a very good first sort, and use judgement. If two groups are really one bug, link both to the same ticket.

LThe Life of an Error: Status and Workflow

A shared way for a team to say who is handling what.

Each error group has a resolution status that the team can change. These labels turn the list into a simple workflow board.

stateDiagram-v2
  [*] --> Open: New error group appears
  Open --> Acknowledged: Someone takes ownership
  Acknowledged --> Resolved: Fix is released
  Open --> Muted: Known and accepted
  Acknowledged --> Muted: Decided not to fix
  Resolved --> Open: Error returns after the fix
  Muted --> Open: Team un-mutes it
    
Figure 4: The status life cycle of an error group. A resolved group that reappears is reopened automatically.
Status

Open

New or unhandled. Nobody has taken it yet. This is the default state.

Status

Acknowledged

Someone has seen it and is working on it or has scheduled it. Notifications about it are reduced.

Status

Resolved

The team believes it is fixed. If it occurs again, it returns to open and can trigger a notification, which reveals regressions.

Status

Muted

Hidden from the default view and from notifications, for known or accepted noise. Use sparingly.

Everyday analogy

Think of a repair shop with tags on each job: “waiting,” “being worked on,” “finished” and “customer says ignore.” When a finished car comes back with the same noise, the tag flips back to “waiting” and the manager hears about it.

Good habits for the workflow

  • Mark a group resolved only after the fix is deployed, not when the code is merged.
  • Add a note or ticket link whenever you acknowledge, so colleagues know who is on it.
  • Review muted groups on a schedule. A muted group can hide a growing problem.
  • Keep the open list short. A list of hundreds of ignored open groups is no longer useful.
  • Agree a team rule: how long may an open group wait before someone must look at it?
!
Muting is not fixing

Muting is a way to quieten known noise, not to dispose of real bugs. Teams that mute everything to make the list look clean end up blind. Always record why a group was muted.

CCollaboration: Linking Errors to Your Issue Tracker

Turning a detected error into tracked, assigned work.

Each error group has a field where you can attach a link to a ticket in your issue tracker. This link appears in the list, so anyone can tell at a glance whether a problem has an owner. The tracker can be any system that has web addresses for issues, such as Jira, GitHub Issues, GitLab, Linear or an internal tool.

A typical flow

1

Notice

A notification or the daily review reveals a new group.

2

Create a ticket

The developer opens a ticket that includes the group address and a short summary, with the sample stack trace.

3

Link back

The ticket address is saved on the error group, and the status becomes acknowledged.

4

Fix and release

The code is repaired and deployed under a new version label.

5

Resolve and watch

The group is marked resolved, and the team watches for a return.

Everyday analogy

It is like attaching a repair-request number to a broken-streetlight report. Anyone who looks at the report sees that request number 4821 is already assigned, and nobody sends a second repair crew.

Sharing outside the console

  • Each group has its own web address that you can paste into chat messages, tickets and incident notes.
  • Colleagues need viewer access to open it, so combine sharing with appropriate roles.
  • Teams often add the group address to deployment notes, so reviewers can check whether a release reduced the error.
i
One group, one owner

Name a single person or team responsible for each acknowledged group. Shared responsibility often means no responsibility.

NNotifications: Being Told Without Staring at a Screen

How Error Reporting reaches out to people.

Nobody wants to refresh a web page all day. Error Reporting can send notifications when something worth attention happens. The usual triggers are a new error group appearing, or a resolved group reappearing, because both suggest a change in behaviour rather than ordinary background noise.

Typical channels

Channel

Email

Project members can receive messages about new errors in the projects they care about.

Channel

Mobile app

The Google Cloud mobile app can show notifications and let you look at groups on the go.

Channel

Chat and paging tools

Through Cloud Monitoring notification channels, you can reach services such as Slack, PagerDuty or webhooks, depending on how you configure alerting.

Controlling the noise

  • Send notifications for production projects only, not for every test project.
  • Use the acknowledged and muted statuses to reduce repeats once a group is being handled.
  • Let on-call people receive urgent alerts, and let others read a daily summary.
  • Review who is subscribed whenever people join or leave the team.
Everyday analogy

A smoke alarm that beeps for burnt toast every morning is soon ignored, and a real fire is missed. Alerts must be rare enough, and meaningful enough, that people always take them seriously.

!
Alert fatigue is real

If every new error pages the on-call engineer at night, people will start muting or ignoring alerts. Reserve urgent notifications for what is truly urgent, such as high-volume or user-facing failures, and use quieter channels for the rest.

AAlerting with Cloud Monitoring and Log-Based Metrics

When you need rules more precise than “a new error appeared”.

Error Reporting’s own notifications are simple. For richer control, teams use Cloud Monitoring. A log-based metric counts log entries that match a filter, for example entries with error severity from the checkout service. Monitoring can chart that count over time and raise an alert when it crosses a threshold, such as more than fifty errors in five minutes.

flowchart LR
  LOGS["Cloud Logging: error entries"] --> LBM["Log-based metric: count matching entries"]
  LBM --> MON["Cloud Monitoring chart"]
  MON --> POL["Alert policy: threshold and duration"]
  POL --> CH["Notification channels: email, chat, pager"]
  LOGS --> ER["Error Reporting groups and details"]
  CH --> ONC["On-call engineer"]
  ONC --> ER
    
Figure 5: Monitoring alerts tell you something is wrong in volume; Error Reporting tells you what the problem is.

When to use which

NeedBest tool
Know that a brand-new kind of error appearedError Reporting new-error notification
Know that error volume has jumpedAlert on a log-based metric or error-rate metric in Cloud Monitoring
Alert only when a specific error text occursLog-based alert with a precise filter
See which bug is behind the volumeError Reporting list and details
Alert on slow responses or failed health checksCloud Monitoring metrics and uptime checks
Everyday analogy

Monitoring is the alarm that says “the building temperature is rising.” Error Reporting is the inspector who tells you “it is the kitchen oven in the east wing.” You want both: the alarm to wake you, and the inspector to point you.

Alert design tips

  • Alert on user impact, such as an error rate, rather than on any single error.
  • Use a duration, so a one-minute blip does not wake anyone.
  • Include a link to the Error Reporting list in the alert’s documentation text.
  • Test alerts by simulating a failure in a non-production project.

RRelationship to Cloud Logging, Monitoring and Trace

Four observability tools, each answering a different question.

flowchart TD
  P["Production problem"] --> M["Monitoring: Is something wrong, and how big?"]
  M --> E["Error Reporting: Which errors, where in the code?"]
  E --> L["Logging: What happened around that moment?"]
  L --> T["Trace: Which request path and which service was slow or failing?"]
  T --> F["Fix, deploy, verify"]
    
Figure 6: A typical investigation moves from numbers, to grouped errors, to logs, to request traces.
ToolMain questionData it holds
Cloud MonitoringIs the system healthy right now?Numbers over time: rates, latencies, usage
Error ReportingWhat are the distinct failures and who is affected?Grouped exception events with stack traces
Cloud LoggingWhat exactly happened?Every log message, searchable
Cloud TraceWhere did a request spend time or fail across services?Timed steps of a request path
Cloud ProfilerWhich code uses the most CPU or memory?Continuous performance profiles
Everyday analogy

Imagine a car. Monitoring is the dashboard with the warning lights. Error Reporting is the mechanic’s list of faults found, grouped by part. Logging is the complete service history. Trace is the route map of one journey. You use the lights to know a problem exists, the fault list to know what it is, and the history to understand how it started.

Practical links between them

  • From an Error Reporting sample, jump to the exact log entry in Cloud Logging.
  • If your logs include a trace identifier, you can open the same request in Cloud Trace.
  • Use log-based metrics to feed counts of matching errors into Monitoring charts and alerts.
  • Put an Error Reporting widget or link on the same dashboard as your key service metrics.
i
Add a request identifier

Write one identifier per request into every log message and every reported error. When an error appears, you can pull up the whole story of that single request in seconds.

WWriting Code That Reports Errors Well

Habits for developers that make the console far more useful.

Habit

Log the exception object

Pass the real exception to the logger so the full stack trace is included, instead of building your own message string.

Habit

Keep messages stable

Put variable data in separate fields, not in the message text, so occurrences of one bug look alike.

Habit

Preserve the cause

When you wrap an exception, keep the original so the root cause stays in the trace.

Habit

Use specific exception types

Create meaningful types for meaningful problems, rather than one generic failure for everything.

Habit

Report user context safely

Include a pseudonymous user or session identifier, never raw personal data.

Habit

Set severity honestly

Use error severity for real failures and warning for recoverable oddities, so the signal stays strong.

Do not report everything

Not every exception is a bug. A user typing a wrong password is a normal event. A missing page requested by a web crawler is expected. If your code reports these as errors, the real problems drown in noise. Decide which situations deserve a place in the error list, and log the rest at a lower severity or count them as metrics instead.

Everyday analogy

A restaurant manager wants to be told when the freezer breaks, not every time a diner changes their mind about dessert. Teach your code the difference between “something is broken” and “someone made a choice.”

Global handlers as a safety net

Most frameworks let you register a single place that catches any exception nobody else handled. Connect that place to your error reporting, so even surprising failures are reported with the right service context. Then add specific reporting for important handled cases.

Batch jobs and background work

Scheduled tasks and queue workers have no user looking at a screen. If they fail quietly, nobody knows. Make sure their exceptions flow into the same error list, with a service name that makes clear which job failed, and consider an alert if an expected job does not run at all.

!
Never swallow exceptions

An empty handler that catches an exception and does nothing is the most common reason errors are invisible. At the very least, log it. If it matters, report it.

RReleases, Regressions and Safe Deployments

Using error data to judge whether a new version is healthy.

Every release is a small gamble. Error Reporting lets you check the result quickly. After deployment, compare the new version’s errors with the old one: Are there new groups whose first-seen time matches the deploy? Has an old group grown? Did a group you meant to fix disappear?

sequenceDiagram
  participant D as Developer
  participant P as Pipeline
  participant S as Service v2
  participant E as Error Reporting
  D->>P: Merge change
  P->>S: Deploy small share of traffic
  S->>E: Report any new errors with version v2
  D->>E: Check new groups and counts for v2
  alt Healthy
    D->>P: Increase traffic to v2
  else Unhealthy
    D->>P: Roll back to v1
  end
  D->>E: Mark fixed groups as resolved
    
Figure 7: A canary release checked against Error Reporting before the new version takes all traffic.

Regression watch

A regression is a bug that returns. Because a resolved group reopens when it occurs again, the console becomes an automatic regression detector. Together with version labels, you can see exactly which release brought the problem back.

Everyday analogy

Releasing carefully is like trying a new recipe on a few guests before serving the whole party. If someone makes a face, you change the recipe. Error Reporting tells you which guests made a face and why.

A release checklist

1

Before the deploy

Note the current top error groups and their rates as a baseline.

2

During the rollout

Watch for groups first seen on the new version, especially with many users affected.

3

After the rollout

Compare rates against the baseline over several hours of normal traffic.

4

Close the loop

Resolve fixed groups and file tickets for new ones.

SSecurity and Privacy: Keeping Secrets Out of Errors

Error messages and stack traces can leak more than you expect.

What can leak

  • Personal data in messages, such as names, emails or phone numbers from a failed form.
  • Secrets in error text, such as connection strings, tokens or passwords that appear in a failed request.
  • Internal details such as file paths, server names and library versions in stack traces.
  • Business data embedded in a query or payload that is printed when it fails.

Because errors are stored and shown to many team members, anything printed into them becomes widely visible and long-lived. This matters under privacy laws and company rules.

Everyday analogy

A hospital incident report should say “patient in room 4 fell” and not include the patient’s full medical history. Error messages should describe what failed, not copy in the sensitive things the program was holding.

Protection measures

MeasureWhat it does
Scrub before loggingRemove or mask sensitive fields in your own code before an exception message is written
Use identifiers, not valuesLog an order number or hashed user key instead of the real details
Least-privilege accessGive console access only to people who need it; use viewer roles by default
Separate projectsKeep production errors in a restricted project, apart from development
Data loss prevention toolsScan or redact logs for sensitive patterns where your policy requires it
Audit loggingRecord who viewed or changed error data
Encryption and locationData is encrypted in transit and at rest; confirm region and residency rules for your needs
!
Check your compliance rules

If you handle health, payment or children’s data, ask your compliance team what may appear in logs and error reports. Confirm Google’s current commitments for Error Reporting regarding data location and retention in the official documentation.

DData Retention, Scale and Limits

How long errors stay, and what happens when volumes grow.

Error Reporting does not keep data forever. Error events are retained for a limited period, commonly described as about thirty days, after which old events fall away from the view. Exact numbers can change, so confirm in the documentation. Error groups with recent activity remain visible, while very old, inactive ones eventually disappear.

Why this matters

  • If you need to analyse trends over many months, export the underlying logs to storage or BigQuery, where you control the retention.
  • For audits, keep your own record of significant incidents, not only the console view.
  • When investigating an old incident, you may find the stack trace gone from Error Reporting but still present in Cloud Logging, depending on log retention settings.
Everyday analogy

Error Reporting is the whiteboard in the office: great for the current week, regularly wiped to stay readable. Logs exported to storage are the filing cabinet where you keep records for years.

Scaling and limits

Limit

Reporting rate

The API has request limits. Very chatty applications should sample or aggregate rather than report every single occurrence.

Limit

Message size

Very large messages or traces may be truncated. Keep error text focused.

Limit

Number of groups

Extremely many distinct groups, often caused by unique messages, can overwhelm the list and slow people down.

Limit

Delay

Events can take a short time to appear. Do not assume instant, to-the-second accuracy.

?
Look up the numbers

Quotas, retention periods and size limits change. Check the quotas page in the console and the current documentation before you design anything that depends on a specific value.

An error storm

A single failing dependency can make every request fail at once, creating millions of events in minutes. This is called an error storm. Grouping keeps the console readable, but your reporting code and quotas still feel the load. Guard against storms by rate limiting reports from one process, and by using circuit breakers that stop calling a broken dependency for a while.

CCost: What You Pay For and What Is Free

Understanding where the money may go.

Error Reporting itself has historically been offered without a separate charge, but nearby services may cost money. In particular, the log entries that carry your errors are stored in Cloud Logging, which has its own pricing for ingested and retained data above free allowances. Alerts and metrics in Cloud Monitoring can also have costs, and calling an API from outside can add network charges. Pricing changes, so always check the current pricing pages.

Logs
Usually the main cost: volume of stored entries
Metrics
Custom or log-based metrics may be billed
Time
The hidden cost of noisy, unread lists

Habits that keep it economical

1

Fix noisy errors

A bug that writes thousands of identical stack traces costs money in logs and wastes everyone’s attention. Fixing it saves both.

2

Log at the right level

Do not log debug detail at error severity.

3

Exclude test traffic

Keep development and load-test errors out of production projects or filter them.

4

Set log retention wisely

Keep detailed logs as long as you need and no longer, exporting what must be archived to cheaper storage.

5

Watch the bill

Set budgets with alerts that warn when logging volume jumps.

Everyday analogy

The inspector’s report is free, but the paper it is printed on and the warehouse that stores every copy are not. A leaky pipe that sends a thousand identical reports a day costs more in paper and storage than a plumber would cost to fix it.

WWhy Is My Error Missing? A Troubleshooting Path

What to check when you expect an error and the console shows nothing.

flowchart TD
  S["Expected error not shown"] --> A{"Is the API enabled in this project?"}
  A -->|"No"| A1["Enable it"]
  A -->|"Yes"| B{"Does the error appear in Cloud Logging?"}
  B -->|"No"| B1["Fix logging: agent, permissions, exclusion filters, severity"]
  B -->|"Yes"| C{"Is it one log entry with a full stack trace?"}
  C -->|"No"| C1["Fix log format: single entry, standard exception logging"]
  C -->|"Yes"| D{"Is the time range and filter in the console correct?"}
  D -->|"No"| D1["Widen time range, clear service and status filters, include muted"]
  D -->|"Yes"| E["Check reporting identity permission, API quotas and retention"]
    
Figure 8: A step-by-step path for finding out why an error does not appear in Error Reporting.
SymptomLikely causeWhat to try
Nothing appears at allAPI not enabled, wrong project or logs not flowingCheck project, enable API, confirm entries in Cloud Logging
Errors in logs but not in the listTrace split across entries or unsupported formatMake the trace one entry in the standard language format
Direct reports rejectedMissing permission or wrong credentialsGrant the writer role to the service account; check authentication
Error appears under the wrong serviceService context missing or incorrectSet service and version explicitly
Hundreds of groups for one bugUnique values in the message or traceMove identifiers to separate fields; stabilise messages
Group seems to have disappearedMuted, resolved or outside time rangeChange status filter and time range
Notifications not arrivingNot subscribed, wrong channel or the group is acknowledged or mutedCheck notification settings and channel configuration
Delay before errors showNormal processing delayWait a few minutes and refresh
i
Check logs first

When in doubt, open Cloud Logging. If the error is not in the logs, Error Reporting cannot show it. If it is in the logs, the problem is in format, permissions or filters.

TA Triage Playbook for Teams

A simple, repeatable routine for handling errors every day.

Tools help only when people use them consistently. A short playbook keeps everyone in step, especially for teams that rotate on-call duty.

Daily routine

  1. Open the list for production, last twenty-four hours, sorted by affected users.
  2. Check for new groups first. Each one needs a decision: fix now, schedule, or accept.
  3. Check for reopened groups, which mean a regression.
  4. For the top three by impact, make sure each has an owner and a ticket.
  5. Review muted groups weekly for any that have grown.

Severity guide

LevelSignsResponse
CriticalMany users affected, core flow such as payment or login failing, rapid growthPage on-call, consider rollback, open an incident
HighNew error on a major feature, moderate user countFix in the current working day
MediumSteady, low-volume error with limited impactSchedule into the next sprint
LowRare, harmless, or caused by bad inputReduce logging severity, handle gracefully, or mute with a note
Everyday analogy

It is a restaurant kitchen’s end-of-shift routine. Someone always checks the fridge temperatures, the cleaning list and the notes for tomorrow. The routine is boring on purpose, because boring routines catch the problems that heroic effort misses.

?
Measure the routine

Track simple team measures: time from first appearance to acknowledgement, number of open groups older than a week, and number of regressions per month. Improvement in these numbers shows the process is working.

AA Worked Example: The Missing Discount Bug

Following an imaginary online shop through one real-looking incident.

“Lotus Home” is an imaginary online kitchenware shop. On Tuesday at 10:05 the team releases version 3.8 of its checkout service on Cloud Run. By lunchtime, sales are a little lower than usual, but no customer has complained. Here is how Error Reporting helps.

sequenceDiagram
  participant C as Customer
  participant S as Checkout v3.8
  participant L as Cloud Logging
  participant E as Error Reporting
  participant T as Team
  C->>S: Place order with promo code
  S->>S: Discount value missing, exception raised
  S->>L: Log exception with stack trace
  L->>E: Error entry detected
  E->>E: New group created for version 3.8
  E->>T: New error notification
  T->>E: Open group, read stack trace and samples
  T->>S: Deploy fix as v3.9
  T->>E: Mark group resolved
    
Figure 9: How one bug travels from a customer’s click to a fix, with Error Reporting at the centre.
1

The notification

At 10:20 an email arrives: a new error group in the checkout service. The title mentions a missing discount value.

2

Open the group

The details page shows that the group first appeared at 10:07, only in version 3.8, with 140 occurrences and 120 distinct users already.

3

Read the stack trace

The top lines point to the discount step inside the total calculation, in code changed by the latest release.

4

Look at the surrounding logs

Using the log link, the developer sees that every failing request carried a promo code, and requests without codes succeeded.

5

Decide

Because it affects a core flow and is growing, the team labels it critical, acknowledges the group and links a ticket.

6

Respond

They roll traffic back to version 3.7 within minutes, then fix the code and release 3.9 the next morning.

7

Verify and close

After 3.9, no new events arrive for the group. They mark it resolved and keep an eye on it for a week.

8

Learn

A new automated test for promo codes is added, and the release checklist now includes a look at Error Reporting during rollout.

Everyday analogy

Without Error Reporting, the shop would have discovered the problem from a monthly sales report, after hundreds of customers had given up. With it, the team learned of the problem within fifteen minutes, like a shop assistant who rushes over the moment a till stops working.

i
The value of the version label

Seeing that the error existed only in version 3.8 told the team instantly which release to suspect and which release to return to. That one label saved hours.

AAdvantages, Disadvantages and Trade-offs

An honest balance sheet before you rely on it.

Advantages

  • Turns floods of events into a short, prioritised list
  • Very little setup on many managed Google Cloud services
  • Stack traces, versions and users in one place
  • Notifications for new and returning errors
  • Status workflow and ticket links aid teamwork
  • Connected to logging, monitoring and trace
  • Reveals problems users never report

Disadvantages

  • Only sees what code reports as exceptions or error entries
  • Grouping is automatic and sometimes imperfect
  • Limited retention for long-term analysis
  • Depends on good log formats and service context
  • Simple alerting compared with dedicated monitoring tools
  • Not designed for every front-end or mobile crash scenario
  • Can leak sensitive data if messages are careless

Key trade-offs

Trade-offOne sideThe other side
Automatic versus explicit reportingAutomatic capture is quick and needs no codeExplicit reporting gives context and covers handled errors
Completeness versus noiseReporting everything misses nothingReporting selectively keeps the list useful
Immediate alerts versus calmFast notifications catch problems earlyToo many alerts cause fatigue
Detail versus privacyRich messages help debuggingMinimal messages protect sensitive data
Convenience versus depthBuilt-in service is simple and integratedSpecialist third-party tools may offer more features

DDesign Patterns and Anti-patterns

Habits that help, and habits that hurt.

Helpful patterns

Pattern

One project per environment

Keep production errors separate from test noise, with separate access.

Pattern

Central exception handler

Catch unexpected failures in one place and report them with full context.

Pattern

Release-aware monitoring

Check error groups during every rollout and use rollback when a new version misbehaves.

Pattern

Error budget thinking

Agree acceptable error levels, and slow feature work when the budget is spent.

Pattern

Daily triage ritual

A fixed five-minute review keeps the list healthy and nothing forgotten.

Pattern

Ticket-linked groups

Every acknowledged group carries a ticket address and an owner.

Anti-patterns to avoid

AP-1Avoid
Never opening the console

Setting up reporting and then ignoring the list gives a false sense of safety. Errors only help if someone reads them.

AP-2Avoid
Muting to look tidy

Muting real bugs to produce a clean list hides growing problems. Mute only known noise, with a recorded reason.

AP-3Avoid
Secrets and personal data in messages

Printing request bodies or credentials into exceptions spreads them to many readers and long-term storage.

AP-4Avoid
Unique values in every message

Putting random identifiers into messages defeats grouping and floods the list with near-duplicates.

AP-5Avoid
Reporting expected events as errors

Wrong passwords, missing pages from crawlers and normal validation failures are not bugs. Reporting them buries the real failures.

AP-6Avoid
Swallowing exceptions silently

Empty handlers hide failures entirely. Always log, and report what matters.

BBest Practices and Common Mistakes

A checklist you can use from your first day.

Best practices

  • Enable the API and confirm that logs reach Cloud Logging in every production project.
  • Set clear service names and release-based version labels everywhere.
  • Log full exceptions in a single, standard-format entry.
  • Keep messages stable and move changing values into separate fields.
  • Report handled errors that still represent bugs, and skip purely expected events.
  • Give console access by role, and keep application identities write-only.
  • Agree who triages, how often and what counts as critical.
  • Use Cloud Monitoring alerts on error rates for urgent cases.
  • Link every acknowledged group to a ticket with an owner.
  • Scrub sensitive data before it is logged.
  • Export logs if you need long-term history.
  • Verify current features, limits and prices in official documentation.

Common mistakes

  • Using a constantly changing value as the version label.
  • Mixing test and production errors in one project.
  • Splitting stack traces across many log entries.
  • Treating the notification email as the whole process.
  • Marking groups resolved before the fix is actually deployed.
  • Letting open groups pile up until nobody trusts the list.
  • Expecting Error Reporting to catch silent logic bugs that raise no exception.
  • Forgetting background jobs and scheduled tasks.
i
A good first week

Day one: enable the service and send a test error. Day two: set service and version labels. Day three: agree who triages. Day four: add a Monitoring alert on error rate. Day five: run your first triage and clean the open list.

RReal-World Patterns Across Teams

Illustrative ways teams typically use Error Reporting.

Small product teams

A handful of developers use email notifications and a five-minute morning check to catch regressions after each release, without needing a dedicated operations staff.

Platform and reliability teams

Pair Error Reporting with Monitoring alerts and service objectives. Error groups guide where reliability work is needed first and feed post-incident reviews.

Teams running many microservices

Use service names to separate dozens of components, then view a project-wide list sorted by impact to find which service is the weakest link on any day.

Serverless and event-driven applications

Functions and containers scale up and down invisibly. Error Reporting provides the one place to see failures across short-lived instances that leave no server to log into.

Data and batch pipelines

Nightly jobs report failures under clear job names, so the morning team sees which step failed without scanning raw logs.

Support and customer success

Support staff with viewer access check whether a customer complaint matches a known error group, and quote the group address in tickets to speed up engineering handover.

Security and compliance reviews

Reviewers inspect error samples for leaked secrets or personal data, then require scrubbing rules before code can ship.

?
About these examples

These are typical patterns, not claims about specific companies. For named customer stories, see the case studies published by Google Cloud.

QQuick Decision Guide: Where Does Error Reporting Fit?

A short set of questions to decide how to use it in your own project.

flowchart TD
  S["Your application runs on Google Cloud?"] -->|"Yes"| A{"Do exceptions with stack traces reach Cloud Logging?"}
  S -->|"No, elsewhere"| X["Use client libraries or the API with credentials"]
  A -->|"Yes"| B["Enable the API and watch the console"]
  A -->|"No"| C["Fix logging format or report errors directly from code"]
  B --> D{"Need alerts on error volume?"}
  X --> D
  C --> D
  D -->|"Yes"| E["Add log-based metrics and Monitoring alert policies"]
  D -->|"No"| F["Use new-error notifications and daily triage"]
  E --> G["Agree owners, statuses and a triage routine"]
  F --> G
    
Figure 10: A quick path from your situation to a sensible Error Reporting setup.

Questions to ask your team

  • Who will read the list? A tool nobody reads is only a cost. Name a person or a rota.
  • What counts as an error here? Decide in advance which events deserve a place in the list, and which are normal.
  • How will we tell versions apart? Agree a version label that changes with each release and stays stable between releases.
  • What may be written in messages? Set a simple rule for sensitive data, and check it in code review.
  • How fast must we respond? Link response times to severity levels, so urgent and non-urgent errors are treated differently.
  • How long must we keep history? If longer than the service retains, plan a log export.
Everyday analogy

Buying a smoke detector is easy. Deciding who tests the battery, where it hangs and what the family does when it sounds is the real safety plan. Error Reporting is the detector; the answers to these questions are the plan.

i
Start small, then grow

Begin with one production service, one owner and one daily check. Once the routine feels natural and the list stays healthy, extend the same habits to your other services.

GGlossary of Terms

Quick definitions of the words used in this guide.

TermPlain meaning
Error ReportingA service that gathers, groups and shows application errors
ExceptionA signal raised by code when something unexpected goes wrong
Stack traceThe chain of function calls active when a failure occurred
Error eventOne single occurrence of a failure
Error groupA bundle of events judged to be the same problem
Service contextThe service name and version attached to an error
FingerprintThe shape of an error used to decide which group it belongs to
Resolution statusOpen, acknowledged, resolved or muted
RegressionA fixed problem that comes back
Log entryOne recorded message in Cloud Logging
SeverityA label saying how serious a log entry is
Log-based metricA count made from log entries that match a filter
Alert policyA rule that notifies people when a metric crosses a threshold
ObservabilityBeing able to understand a system from its logs, metrics and traces
Canary releaseSending a small share of traffic to a new version first
RollbackReturning to a previous version
Error stormA sudden flood of errors, often from one failing dependency
IAMThe system that decides who may do what
Alert fatigueIgnoring alerts because there are too many of them

FFrequently Asked Questions

1Do I need to change my code to use Error Reporting?

Often not. On many managed Google Cloud services, exceptions written to the logs with a stack trace are detected automatically. For more control, use client libraries, the API or structured log entries.

2Does it work outside Google Cloud?

Yes, applications elsewhere can report through the API or client libraries with suitable credentials and a Google Cloud project to receive the errors.

3How is it different from Cloud Logging?

Logging stores every message. Error Reporting extracts the failures, groups them, counts them and tracks their status. Think of logging as the archive and Error Reporting as the summarised front page.

4How is it different from Cloud Monitoring?

Monitoring watches numbers and alerts on thresholds. Error Reporting explains which specific errors exist and where in the code they happen. Use them together.

5Why are my errors split into many groups?

Usually because messages contain changing values or stack traces differ slightly. Keep messages stable and put variable details in separate fields.

6What happens when a resolved error comes back?

The group returns to open, and a notification can be sent, which helps you catch regressions.

7How long are errors kept?

For a limited time, commonly around thirty days of event data. Export logs if you need longer history, and confirm the current retention period in the documentation.

8Is there a cost?

The service has typically been offered without a separate fee, but logging, monitoring and network usage around it can cost money. Check current pricing pages.

9Can it catch mobile app and browser crashes?

Error Reporting is mainly designed for server-side applications. For mobile apps and browsers, dedicated crash reporting tools are usually better; check current guidance for your platform.

10Can I send errors to Slack or a pager?

Yes, through Cloud Monitoring notification channels connected to alert policies, and sometimes through other integrations. Configure them according to the current documentation.

11What should I do if sensitive data appears in an error?

Fix the code so the data is not logged, restrict access to the affected project, and ask your security team about deleting the exposed entries according to your policy.

SSummary and Key Takeaways

The whole guide in one short page.

Error Reporting turns the raw noise of application failures into a short, prioritised list of distinct problems. It collects exceptions from Cloud Logging or directly through its API, groups the repeats using the shape of the stack trace, counts occurrences and affected users, and labels each problem with the service and version where it appeared. Statuses, ticket links and notifications turn the list into a shared workflow, while Cloud Monitoring adds precise alerts. The service works best when your code logs full exceptions in standard formats, names its services and versions sensibly, keeps sensitive data out of messages, and when a team reviews the list on a regular routine.

Key takeaways

  • Error Reporting groups many error events into a few meaningful problems, showing counts, users, first seen and last seen.
  • Errors arrive automatically from Cloud Logging on many Google Cloud services, or through client libraries, the API and structured log entries.
  • Always set a stable service name and a release-based version so you can separate components and spot regressions.
  • Log full exceptions as single entries with stable messages, and never put secrets or personal data into error text.
  • Use statuses and ticket links as a workflow, and keep the open list short with a regular triage routine.
  • Combine new-error notifications with Cloud Monitoring alerts on error rates, and avoid alert fatigue.
  • Remember limited retention, nearby logging costs and changing limits, and confirm current details in the official documentation.