Documentation
Monitoring (Sentry)
Surveillance d'erreurs Sentry — configuration, traces de performance, source maps et débogage en production.
Motoko Base utilise Sentry pour la surveillance d'erreurs en production. Il n'y a pas de dashboard de monitoring dans l'app — utilisez l'UI web Sentry.
Official docs: Sentry Next.js documentation
Setup
- Créez un projet Sentry (plateforme : Next.js)
- Copiez le DSN depuis Project Settings → Client Keys
- Pour les source maps (builds de production), créez un auth token avec permission de release upload
- Définissez les variables d'environnement :
| Variable | Scope | Purpose |
|---|---|---|
NEXT_PUBLIC_SENTRY_DSN | Public | Enables Sentry when set |
SENTRY_AUTH_TOKEN | CI / build | Source map upload |
SENTRY_ORG | CI / build | Organization slug |
SENTRY_PROJECT | CI / build | Project slug |
Laissez le DSN non défini pour désactiver entièrement le monitoring.
Development vs production
Sentry est désactivé pendant next dev (même avec DSN défini) pour éviter le bruit des listeners webpack. Pour tester en local :
pnpm build && pnpm startÉchantillonnage de performance : 10 % en production, 0 % sinon. Session Replay et User Feedback sont désactivés par défaut.
Errors & performance
- Les exceptions non gérées sont capturées automatiquement (client + serveur)
- Erreurs App Router :
src/app/global-error.tsx,src/app/dashboard/error.tsx - Capture manuelle pour les échecs capturés :
import { captureException } from "@/lib/monitoring";
try {
// ...
} catch (error) {
captureException(error); // fail-open — never throws
}Ne reportez pas les résultats attendus (erreurs de validation, signed-out, not-found, config manquante).
L'user id authentifié est attaché à la connexion (Sentry.setUser({ id })), effacé à la déconnexion.
Source maps
next.config.ts enveloppe le build avec withSentryConfig. Lorsque SENTRY_AUTH_TOKEN, SENTRY_ORG et SENTRY_PROJECT sont définis en CI :
- Les source maps sont uploadés pendant
next build - Les maps client sont supprimés après l'upload
- Les stack traces se résolvent en TypeScript dans Sentry Issues
Les builds réussissent sans credentials d'upload — vous n'aurez simplement pas de stacks lisibles.
Les événements navigateur peuvent passer par le tunnel /sentry-tunnel (aide contre les ad blockers).
Production debugging
- Ouvrez Sentry → Issues
- Filtrez par
environment: production - Cliquez sur un issue → stack trace, breadcrumbs, user id
- Reproduisez avec
pnpm build && pnpm starten local contre un projet Sentry non productif
Les données sensibles sont nettoyées (src/lib/monitoring/scrub.ts) — pas de mots de passe, tokens, clés API ni prompts IA.
Where to change this
| What | Where |
|---|---|
| Enable rules & sampling | src/lib/monitoring/config.ts |
| Scrubbing | src/lib/monitoring/scrub.ts |
| Shared init options | src/lib/monitoring/options.ts |
captureException, user context | src/lib/monitoring/index.ts |
| Client init | src/instrumentation-client.ts |
| Server/edge init | src/instrumentation.ts, sentry.server.config.ts, sentry.edge.config.ts |
| Build / source maps | next.config.ts |
Environment Variables — toutes les variables Sentry.