[ 'enabled' => (bool) env('MONITORING_ALERTS_ENABLED', true), // Ops-Postfach. Fällt auf die zentrale Rechts-/Betreiber-Adresse // zurück, solange kein dediziertes Monitoring-Postfach gesetzt ist. 'mail_to' => env('MONITORING_ALERT_EMAIL', env('LEGAL_CONTACT_EMAIL', 'info@pressekonto.com')), // Zweiter Alarmweg (Monitoring-Plan M3): Push über ntfy, JSON-POST // an die Basis-URL. Ohne URL oder Topic aus. 'ntfy' => [ 'url' => env('MONITORING_NTFY_URL'), 'topic' => env('MONITORING_NTFY_TOPIC'), 'token' => env('MONITORING_NTFY_TOKEN'), 'priority' => (int) env('MONITORING_NTFY_PRIORITY', 4), ], ], /* |-------------------------------------------------------------------------- | Browserfehler (Monitoring-Plan 1.2) |-------------------------------------------------------------------------- | | Eigenes GlitchTip-Projekt für JavaScript-Fehler. Die DSN ist öffentlich | (steht im HTML), sie erlaubt nur das Einliefern von Ereignissen. Ohne | DSN wird kein Skript eingebunden. | */ 'browser' => [ 'dsn' => env('SENTRY_BROWSER_DSN'), 'sample_rate' => (float) env('SENTRY_BROWSER_SAMPLE_RATE', 1.0), ], /* |-------------------------------------------------------------------------- | Health-Endpunkt und Scheduler-Herzschlag (Monitoring-Plan 1.4, 1.5) |-------------------------------------------------------------------------- | | `/health` antwortet nur mit gültigem Token (Bearer-Header oder | `?token=`); ohne konfiguriertes Token gibt es den Endpunkt nicht (404). | Der Scheduler schreibt jede Minute einen Herzschlag; bleibt er aus, ist | der Cron-Eintrag weg oder der Server hängt. | */ 'health' => [ 'token' => env('MONITORING_HEALTH_TOKEN'), 'queue_backlog_critical_seconds' => (int) env('MONITORING_QUEUE_BACKLOG_SECONDS', 300), 'disk_min_free_percent' => (float) env('MONITORING_DISK_MIN_FREE_PERCENT', 10), ], 'scheduler' => [ 'heartbeat_warn_minutes' => 3, 'heartbeat_critical_minutes' => 10, ], ];