Een Node.js-proces dat crasht wordt door je process manager opnieuw gestart, en niemand merkt iets. Tot het elk uur gebeurt. Een promise zonder catch verdwijnt zelfs helemaal. Met de Sentry SDK voor Node en errors.nl zie je die fouten, met de request en de stacktrace erbij.
1. Maak een project aan
Log in bij errors.nl, maak een organisatie en een project aan en kopieer de DSN. Die ziet eruit als https://<sleutel>@ingest.errors.nl/<project>.
2. Installeer de SDK
npm install @sentry/node
3. Laad hem als eerste
De SDK moet geladen zijn voordat je andere modules importeert. Zet de setup in een eigen bestand, instrument.js:
const Sentry = require("@sentry/node"); Sentry.init({ dsn: process.env.SENTRY_DSN, environment: process.env.NODE_ENV, release: process.env.SENTRY_RELEASE, });
En laad dat bestand als allereerste regel van je app:
require("./instrument"); const express = require("express");
Gebruik je ES modules, start je app dan met node --import ./instrument.mjs app.mjs.
4. Koppel je framework
Voor Express zet je de error handler na al je routes, en voor je eigen error handlers:
const app = express(); // ... je routes Sentry.setupExpressErrorHandler(app);
Voor Fastify gebruik je Sentry.setupFastifyErrorHandler(app), voor Koa Sentry.setupKoaErrorHandler(app).
5. Test het
app.get("/fout-test", () => { throw new Error("Testfout voor errors.nl"); });
Roep de route aan, en binnen een paar seconden staat de fout onder Issues. Onafgehandelde promises en exceptions buiten een request vangt de SDK vanzelf af.
6. Workers en scripts
In een queue-worker of cronscript vang je fouten zelf af en stuur je ze door. Wacht bij een kort script tot alles verstuurd is, voordat het proces stopt:
try { await verwerkFacturen(); } catch (e) { Sentry.captureException(e); await Sentry.flush(2000); process.exit(1); }
Persoonsgegevens
Laat sendDefaultPii uit staan: dan stuurt de SDK geen IP-adressen, cookies of request-body mee. Performance-monitoring doet errors.nl niet; zet je tracesSampleRate niet, dan stuurt de SDK die data ook niet.
errors.nl filtert daarnaast wachtwoorden, tokens, e-mailadressen en rekeningnummers uit elke fout voordat we die opslaan. Meer daarover lees je in Foutmonitoring en de AVG.
Meldingen
Wil je weten wanneer er iets misgaat zonder het dashboard open te hebben? Zet bij je project een melding per e-mail aan, of koppel Slack, Teams, Discord of ntfy voor pushmeldingen op je telefoon.