Zum Hauptinhalt springen
Alle Beiträge

Sentry auf Astro + Cloudflare Pages: DSGVO-konformes Error-Tracking

· 3 Min. Lesezeit ·

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:

VariableHinweise
SENTRY_DSNSecret — nur server-seitig genutzt
PUBLIC_SENTRY_DSNPlaintext — gleicher Wert, wird für das Client-seitige Init benötigt
SENTRY_AUTH_TOKENSecret — 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.

Mehr zum Thema

Sehen Sie, was eine moderne Astro-Website für Ihr Unternehmen leisten kann, transparent kalkuliert.

Mehr erfahren