Dokumentation

Monitoring (Sentry)

Sentry-Fehlerüberwachung — Setup, Performance-Traces, Source Maps und Produktions-Debugging.

Öffnen inChatGPT (öffnet in neuem Tab)Claude (öffnet in neuem Tab)Cursor (öffnet in neuem Tab)Sentry-Fehlerüberwachung — Setup, Performance-Traces, Source Maps und Produktions-Debugging.

Motoko Base nutzt Sentry für Fehlerüberwachung in Produktion. Es gibt kein Monitoring-Dashboard in der App — nutze die Sentry-Web-UI.

Official docs: Sentry Next.js documentation

Setup

  1. Erstelle ein Sentry-Projekt (Plattform: Next.js)
  2. Kopiere den DSN aus Project Settings → Client Keys
  3. Für Source Maps (Produktions-Builds) erstelle ein Auth-Token mit Release-Upload-Berechtigung
  4. Setze Env-Vars:
VariableScopePurpose
NEXT_PUBLIC_SENTRY_DSNPublicEnables Sentry when set
SENTRY_AUTH_TOKENCI / buildSource map upload
SENTRY_ORGCI / buildOrganization slug
SENTRY_PROJECTCI / buildProject slug

Lass den DSN unset, um Monitoring vollständig zu deaktivieren.

Development vs production

Sentry ist während next dev aus (auch mit gesetztem DSN), um Webpack-Listener-Rauschen zu vermeiden. Zum lokalen Testen:

pnpm build && pnpm start

Performance-Sampling: 10% in Produktion, sonst 0%. Session Replay und User Feedback sind standardmäßig aus.

Errors & performance

  • Unbehandelte Exceptions werden automatisch erfasst (Client + Server)
  • App-Router-Fehler: src/app/global-error.tsx, src/app/dashboard/error.tsx
  • Manuelles Capture für abgefangene Fehler:
import { captureException } from "@/lib/monitoring";

try {
  // ...
} catch (error) {
  captureException(error); // fail-open — never throws
}

Melde keine erwarteten Ergebnisse (Validierungsfehler, signed-out, not-found, fehlende Config).

Die authentifizierte User-ID wird beim Sign-in angehängt (Sentry.setUser({ id })) und beim Sign-out gelöscht.

Source maps

next.config.ts umschließt den Build mit withSentryConfig. Wenn SENTRY_AUTH_TOKEN, SENTRY_ORG und SENTRY_PROJECT in CI gesetzt sind:

  • Source Maps werden während next build hochgeladen
  • Client-Maps werden nach dem Upload gelöscht
  • Stack Traces lösen in Sentry Issues zu TypeScript auf

Builds gelingen ohne Upload-Credentials — du erhältst nur keine lesbaren Stacks.

Browser-Events können über /sentry-tunnel getunnelt werden (hilft bei Adblockern).

Production debugging

  1. Öffne Sentry → Issues
  2. Filtere nach environment: production
  3. Klicke ein Issue → Stack Trace, Breadcrumbs, User-ID
  4. Reproduziere mit pnpm build && pnpm start lokal gegen ein Nicht-Produktions-Sentry-Projekt

Sensible Daten werden bereinigt (src/lib/monitoring/scrub.ts) — keine Passwörter, Tokens, API-Keys oder KI-Prompts.

Where to change this

WhatWhere
Enable rules & samplingsrc/lib/monitoring/config.ts
Scrubbingsrc/lib/monitoring/scrub.ts
Shared init optionssrc/lib/monitoring/options.ts
captureException, user contextsrc/lib/monitoring/index.ts
Client initsrc/instrumentation-client.ts
Server/edge initsrc/instrumentation.ts, sentry.server.config.ts, sentry.edge.config.ts
Build / source mapsnext.config.ts

Environment Variables — alle Sentry-Env-Vars.