Skip to main content

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​

  1. The event is normalized (stack frames, exception values, request, contexts, tags).
  2. If it is minified JavaScript and you uploaded source maps, it is symbolicated first, so grouping happens on stable original frames.
  3. A fingerprint is computed from the exception type plus the meaningful stack frames.
  4. 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: time finds timeout.
  • 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|30d powers 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​

ActionEffect
ResolveCloses the issue. A later event regresses it.
IgnoreStops alerting without claiming it is fixed.
ArchiveHides it from the default list.
BookmarkPersonal star, per user.
AssignAssign to a member of the organization.
Copy share URLA link straight to this issue.
Create/link a GitLab issueSee Integrations.
AI auto-fixDraft a patch and open a merge request — see AI auto-fix.

Reducing noise​

  • before_send in 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​

SymptomCause / fix
Two bugs share one issueThe fingerprint collapsed them — add distinguishing context, or set an explicit fingerprint in the SDK
One bug spread over many issuesFrames differ per run (paths with ids, minified bundles) — upload source maps and normalize paths
Minified JavaScript framesUpload source maps for that exact release
Events accepted but not storedProject sample_rate below 1.0, or the wallet is past its credit line
Nothing at allThe SDK isn't reaching Errora — check for a 202 response, and see SDK setup