Sentry auf Astro + Cloudflare Pages: DSGVO-konformes Error-Tracking
Die meisten Produktionsprobleme auf Astro + Cloudflare Pages-Sites sind ohne Error-Tracking unsichtbar. Der Build läuft durch. Cloudflares Deployment-Logs zeigen Grün. Aber ein Kontaktformular schlägt bei bestimmten Eingaben lautlos fehl, oder ein Stripe-Webhook gibt eine 500 zurück, die niemand sieht. Man erfährt es, wenn ein Kunde eine E-Mail schreibt.
Sentry löst dieses Problem. Für Sites mit echten Nutzern oder Payment-Flows gehört es von Anfang an in den Stack — nicht erst nachträglich, wenn man schon etwas verpasst hat. Das Free-Tier deckt 5.000 Fehler pro Monat ab, was bis zu erheblichem Traffic mehr als ausreichend ist.
Hier ist unsere Einrichtung: EU-gehostet, DSGVO-konform, mit PII-Scrubbing und den Rauschfiltern, die das Monitoring tatsächlich nützlich machen.
Account in der EU-Region anlegen
Das ist für die DSGVO entscheidend. Bei der Registrierung auf sentry.io erscheint die Regionsauswahl auf dem ersten Bildschirm. EU (Frankfurt) wählen. Diese Einstellung kann nach der Account-Erstellung nicht mehr geändert werden — man müsste eine neue Organisation anlegen.
DSGVO-Konformität vor der SDK-Installation
Bevor ein einziges Package installiert wird, zwei Dinge im Sentry-Dashboard erledigen:
DPA unterzeichnen: Settings → Legal → Data Processing Agreement → unterzeichnen. Sentry ist ein Auftragsverarbeiter im Sinne der DSGVO; ohne DPA ist die Nutzung eine Compliance-Lücke.
Data Scrubbing aktivieren: Settings → Security & Privacy → Data Scrubbing → On. Sensible Felder hinzufügen: password, token, email, credit_card, card_number. Das verhindert, dass sensible Daten in Fehlerberichten erscheinen, selbst wenn sie den beforeSend-Filter passieren.
Installation und Konfiguration
pnpm add @sentry/astro @sentry/cloudflare
In astro.config.mjs:
import sentry from '@sentry/astro';
export default defineConfig({
integrations: [
sentry({
dsn: import.meta.env.SENTRY_DSN,
sourceMapsUploadOptions: {
project: 'your-project-slug',
authToken: import.meta.env.SENTRY_AUTH_TOKEN,
},
}),
],
});
sentry.client.config.js im Projekt-Root anlegen:
import * as Sentry from '@sentry/astro';
Sentry.init({
dsn: import.meta.env.PUBLIC_SENTRY_DSN,
tracesSampleRate: 0.1,
beforeSend(event) {
if (event.user) {
delete event.user.ip_address;
delete event.user.email;
delete event.user.username;
}
// Fetch-Fehler von Werbenetzwerken herausfiltern — das ist Ad-Blocker-Rauschen, keine echten Fehler
if (event.exception?.values?.[0]?.value?.includes('doubleclick') ||
event.exception?.values?.[0]?.value?.includes('googlesyndication')) {
return null;
}
return event;
},
});
sentry.server.config.js anlegen:
import * as Sentry from '@sentry/cloudflare';
Sentry.init({
dsn: import.meta.env.SENTRY_DSN,
tracesSampleRate: 0.1,
beforeSend(event) {
if (event.user) {
delete event.user.ip_address;
delete event.user.email;
delete event.user.username;
}
return event;
},
});
Das beforeSend auf der Client-Seite ist entscheidend. Ohne es können Nutzer-IPs und E-Mail-Adressen in Fehlerberichten auftauchen. Der Ad-Netzwerk-Filter verhindert das konstante Rauschen durch Requests, die Ad-Blocker abbrechen — ohne ihn generieren Sites mit AdSense Hunderte von Fake-Fehlern täglich.
Umgebungsvariablen
In Cloudflare Pages → Settings → Environment variables:
| Variable | Hinweise |
|---|---|
SENTRY_DSN | Secret — nur server-seitig genutzt |
PUBLIC_SENTRY_DSN | Plaintext — gleicher Wert, wird für das Client-seitige Init benötigt |
SENTRY_AUTH_TOKEN | Secret — aus Sentry → Settings → Auth Tokens |
Ja, SENTRY_DSN und PUBLIC_SENTRY_DSN müssen denselben Wert haben. Astros import.meta.env.PUBLIC_*-Variablen sind die einzigen, die im Browser-Bundle verfügbar sind.
SSR-Sites benötigen nodejs_compat
Wenn die Site @astrojs/cloudflare für SSR nutzt, benötigt Sentry das Node.js Compatibility Flag. In Cloudflare Pages → Settings → Functions → Compatibility Flags hinzufügen:
nodejs_compat
Oder in wrangler.toml:
compatibility_flags = ["nodejs_compat"]
Statische Sites (SSG) benötigen das nicht.
Source Maps sind automatisch
Source Maps ermöglichen Sentry lesbare Stack Traces anstatt minimierten Produktionscode. Die @sentry/astro-Integration lädt sie automatisch beim pnpm build hoch, wenn SENTRY_AUTH_TOKEN gesetzt ist. Keine zusätzliche Konfiguration nötig.
Nach dem ersten Deploy prüfen: Sentry → Projekt → Releases → dort sollten Deploys erscheinen.
Datenschutzerklärung aktualisieren
Sentry muss in der Datenschutzerklärung unter Error-Tracking erwähnt werden. Nach DSGVO erforderlich, da Sentry Request-Daten verarbeitet, auch mit aktiviertem PII-Scrubbing.
Wir nutzen Sentry (Functional Software, Inc.) zur Überwachung technischer Fehler auf unserer Website. Fehlerberichte werden auf Servern in der EU (Frankfurt) verarbeitet. Es werden keine personenbezogenen Daten absichtlich erfasst. Details: Datenschutzerklärung von Sentry.
CSP-Header
Wenn die Site eine Content Security Policy hat, muss Sentrys Ingest-Endpunkt in connect-src eingetragen werden:
connect-src 'self' https://o4511038991630336.ingest.de.sentry.io
Die Organisations-ID durch die eigene ersetzen — sie ist in der DSN-URL sichtbar.
Wann Sentry sinnvoll ist
Sentry gehört auf jede Site mit Kontaktformularen, Payment-Flows oder authentifizierten Nutzersessions. Für rein statische Content-Sites ohne Formulare oder dynamische Endpunkte ist es überdimensioniert. Ein Sentry-Projekt pro Site hält Alerts übersichtlich und macht sofort klar, welche Site einen Fehler produziert hat.
Sehen Sie, was eine moderne Astro-Website für Ihr Unternehmen leisten kann, transparent kalkuliert.
Mehr erfahren