Error monitoring (Issues)
Issues are the core of Errora: every exception your app throws is normalized, fingerprinted and grouped, so a thousand occurrences of the same bug are one row you can act on.
Setup
Nothing beyond initializing the SDK — unhandled exceptions are captured automatically:
import sentry_sdk
sentry_sdk.init(dsn="https://<public_key>@<host>/<project_id>", environment="production")
See SDK setup for your platform. To capture something you already handled:
try:
charge(order)
except PaymentError as exc:
sentry_sdk.capture_exception(exc)
How grouping works
- The event is normalized (stack frames, exception values, request, contexts, tags).
- If it is minified JavaScript and you uploaded source maps, it is symbolicated first, so grouping happens on stable original frames.
- A fingerprint is computed from the exception type plus the meaningful stack frames.
- Events with the same fingerprint collapse into one issue, which tracks
times_seen, unique users, first/last seen, and its status.
An event arriving for an issue you already resolved regresses it back to unresolved and
fires the issue.regressed alert event.
The issue list
Issues in the sidebar lists open issues for the selected project, newest activity first, each with a 24h sparkline.
- Search — free text across the title and message, with word-prefix matching:
timefindstimeout. - Filters — status (
unresolved,resolved,ignored), environment, level, time period, and user: pick a person and the list narrows to the issues they hit. The same filter is built into requests, jobs and logs, and the Users page links straight into each of them. - Sort — last seen, first seen, occurrences (the event count shown on every row) or users affected, so the most impactful issues come first.
- Environment scoping — the list shows the selected environment only; an issue's page then lists every other environment it also impacts.
- Bulk actions — select rows to resolve, ignore, reopen, archive, re-prioritize or assign them in one request.
- Trends —
GET /projects/{id}/issues/trends?period=24h|30dpowers the sparklines.
The issue page
- Stack trace with syntax highlighting, the suspect frame highlighted, and surrounding source context for symbolicated frames.
- Trend charts — 24h and 30d.
- Breadcrumbs — including SQL statements with their bindings.
- Request — method, URL, headers, referrer.
- Contexts and tags — runtime, OS, browser, release, environment, plus your own tags.
- Linked data — session replay, user feedback, the trace this event belongs to.
Actions
| Action | Effect |
|---|---|
| Resolve | Closes the issue. A later event regresses it. |
| Ignore | Stops alerting without claiming it is fixed. |
| Archive | Hides it from the default list. |
| Bookmark | Personal star, per user. |
| Assign | Assign to a member of the organization. |
| Copy share URL | A link straight to this issue. |
| Create/link a GitLab issue | See Integrations. |
| AI auto-fix | Draft a patch and open a merge request — see AI auto-fix. |
Reducing noise
before_sendin the SDK — drop or scrub events client-side.ignore_errors/denyUrls— skip known-harmless exceptions and third-party scripts.- Project sample rate — store only a fraction of arriving events (project settings).
- Ignore an issue rather than resolving it, when it is noise you can't remove yet.
- Auto-resolve stale issues — in project settings, resolve issues automatically after 7, 14 or 30 days without a new event. A new event reopens them, exactly as with a manual resolve.
API
GET /api/v1/projects/{project_id}/issues?q=&status=&environment=&user=&ordering=-times_seen
GET /api/v1/projects/{project_id}/issues/{issue_id}
GET /api/v1/projects/{project_id}/issues/environments
GET /api/v1/projects/{project_id}/issues/users?q=&stats_period=7d
GET /api/v1/projects/{project_id}/issues/trends?period=24h|30d
POST /api/v1/projects/{project_id}/issues/bulk
GET /api/v1/projects/{project_id}/issues/{issue_id}/series
POST /api/v1/projects/{project_id}/issues/{issue_id}/resolve|ignore|archive|bookmark|assign
GET /api/v1/projects/{project_id}/events/{event_id}
user takes id:42, email:…, username:…, ip:…, or a bare value matching any of them.
AI agents can do the same over MCP with list_issues, get_issue and
update_issue_status — and reach performance issues with list_performance_issues /
get_performance_issue.
Troubleshooting
| Symptom | Cause / fix |
|---|---|
| Two bugs share one issue | The fingerprint collapsed them — add distinguishing context, or set an explicit fingerprint in the SDK |
| One bug spread over many issues | Frames differ per run (paths with ids, minified bundles) — upload source maps and normalize paths |
| Minified JavaScript frames | Upload source maps for that exact release |
| Events accepted but not stored | Project sample_rate below 1.0, or the wallet is past its credit line |
| Nothing at all | The SDK isn't reaching Errora — check for a 202 response, and see SDK setup |