- GlitchTip über die Sentry-SDKs; Datenschutzfilter (nur User-ID, keine
Request-Bodys, Tokens aus URL/Query/Referer, E-Mails aus Meldungen).
Browser-SDK erst beim ersten Fehler nachgeladen.
- ReportErrorSignals: tote interne Links (404 mit eigenem Referrer), 403/429
für Angemeldete, 419 als gedrosselte Warnung.
- /health (Bearer-Token): DB, Cache, Queue-Rückstau, Scheduler-Herzschlag,
Plattenplatz → 200/503; Scheduler und Plattenplatz auch im Systemstatus.
- OperationalAlert zusätzlich per ntfy (JSON-POST), unabhängig von der Mail.
- Verlauf: login_failed (Grund unbekannt/kein Passwort/falsch),
login_lockout, two_factor_failed; IP nur als gekürzter HMAC.
- Umami: Kundenbereich mit eigenem Schalter und identify('user-<id>'),
nie im Admin/bei Impersonation; Query-Filter auch auf den Webseiten
(signierte Links gingen bisher an Umami).
- queue:prune-failed nach 30 Tagen.
- Versionsnummer: config('app.version') aus APP_VERSION oder Datei RELEASE
(git describe --tags), in GlitchTip, /health, Systemstatus, artisan about.
Plan: dev/betrieb/monitoring-plan.md (Entscheidungen M1–M9).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
14 lines
697 B
PHP
14 lines
697 B
PHP
@props(['build' => 'build/web', 'area' => 'web'])
|
|
{{-- Browserfehler an GlitchTip (Monitoring-Plan 1.2). Ohne SENTRY_BROWSER_DSN
|
|
wird nichts eingebunden; das SDK selbst lädt erst beim ersten Fehler. --}}
|
|
@if (filled(config('monitoring.browser.dsn')))
|
|
<meta name="pk-error-reporting" content="{{ json_encode([
|
|
'dsn' => config('monitoring.browser.dsn'),
|
|
'release' => config('sentry.release'),
|
|
'environment' => config('sentry.environment') ?? app()->environment(),
|
|
'sampleRate' => config('monitoring.browser.sample_rate'),
|
|
'userId' => auth()->id(),
|
|
'area' => $area,
|
|
]) }}" />
|
|
@vite(['resources/js/error-reporting.js'], $build)
|
|
@endif
|