Files
0012/todo/03-monitoring-pull-phase1.md
T
Frank Schwenk c007d5ebdc feat: external HTTPS monitoring pull via monitor.php
Add cron-ready pull checks for critical URLs with SSL expiry warnings,
retry-before-alert, JSON results in private/data, email alerts, and a
90-day target-list review reminder.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 10:05:43 +02:00

2.2 KiB

03 — Monitoring Pull (Phase 1)

Priorität: high
Status: erledigt (2026-06-12)
Abhängigkeiten: 01, 02, 05
Siehe auch: ../MONITORING.md

Ziel

monitor.php auf dem Webspace: externe HTTPS-/SSL-Checks, Retry, E-Mail-Alarm.

Checkliste

Implementierung

  • config/ — lädt .env (oder config.php außerhalb httpdocs) — bootstrap.php → private/server.env
  • public/monitor.php — CLI/Cron-tauglich, kein Browser-Output nötig
  • URL-Liste aus MONITORING.md Mindestliste konfigurierbar (config/targets.php)
  • Pro URL: HTTP-Status, Timeout ~10s, optional erwarteter Code (200, 301, 401)
  • SSL-Ablauf: Warnung wenn < 14 Tage (warn in JSON, kein Mail-Alarm)
  • Retry: bei Fehler 2 Min warten, zweiter Versuch — Alarm nur wenn beide scheitern
  • Ergebnisse nach data/last-checks.json schreiben (für Landing Page) — private/data/ auf Webspace
  • Bei Alarm: E-Mail an ALERT_EMAIL via SMTP
  • Review-Reminder (90 Tage, last_reviewed_at + Hash-Auto-Reset) — Plan-Ergänzung, in monitor-lib.php
  • Optional: Telegram wenn TELEGRAM_* gesetzt — bewusst Phase 2

Mindest-URLs (Start)

  • https://schwenk.online
  • https://gitea.schwenk.online
  • https://pics.schwenk.online
  • https://medis.schwenk.online
  • https://portainer.schwenk.online — expect [200, 401] (liefert aktuell 200)
  • Eine bsc-gp.de-Subdomain (z. B. score) — https://score.bsc-gp.de
  • https://vfb.red

Sicherheit

  • data/ nicht öffentlich (.htaccess oder außerhalb Document Root) — private/data/
  • Keine Secrets in last-checks.json

Akzeptanzkriterien

  • Manueller Aufruf / „Jetzt ausführen“ in Plesk läuft fehlerfrei
  • Simulierter Down (falsche URL) löst Mail nach Retry aus
  • last-checks.json aktualisiert sich

Notizen

  • Plesk-Cron: httpdocs/monitor.php, */10 * * * *, „Nur Fehler“ (Todo 05)
  • Browser-Aufruf https://0012.de/monitor.php → leere Seite (HTTP 200) ist korrekt
  • SSL-warn auf boka-Hosts nach LE short→long-lived-Wechsel: bekannt, kein Handlungsbedarf auf 0012.de

Geschätzter Aufwand

~1h (laut MONITORING.md Phase 1)