docs: mark Plesk cron todo done; optional heartbeat backlog
Record live monitor.php cron config in HOSTING.md and close todo 05. Move optional */5 heartbeat task to todo/13. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+16
-9
@@ -151,19 +151,26 @@ Ausgehende Mails vom 0012.de-Mailserver (`ha01s019.org-dns.com`) werden von **Tu
|
|||||||
|
|
||||||
## Geplante Aufgaben (Cron)
|
## Geplante Aufgaben (Cron)
|
||||||
|
|
||||||
Plesk: **Websites & Domains → Geplante Aufgaben → Aufgabe planen**
|
Plesk: **Websites & Domains → Geplante Aufgaben**
|
||||||
|
|
||||||
| Einstellung | Empfehlung |
|
**Stand: eingerichtet 2026-06-12** — eine Aufgabe für Pull-Monitoring (`monitor.php`).
|
||||||
|-------------|------------|
|
|
||||||
|
| Einstellung | Ist-Wert |
|
||||||
|
|-------------|----------|
|
||||||
| Aufgabentyp | PHP-Skript ausführen |
|
| Aufgabentyp | PHP-Skript ausführen |
|
||||||
| Skriptpfad | `httpdocs/monitor.php` (nach Deployment) |
|
| Skriptpfad | `httpdocs/monitor.php` |
|
||||||
| PHP-Version | aktuelle verfügbare (z. B. 8.5.x) |
|
| PHP-Version | 8.5.x (höchste stabile in Plesk) |
|
||||||
|
| Status | Aktiv |
|
||||||
| Ausführen | Cron-Stil |
|
| Ausführen | Cron-Stil |
|
||||||
| Schedule Pull-Checks | `*/10 * * * *` (alle 10 Min) |
|
| Schedule | `*/10 * * * *` (alle 10 Min) |
|
||||||
| Schedule Heartbeat-Check | `*/5 * * * *` (Push-Stale-Prüfung, ggf. in monitor.php) |
|
| Benachrichtigen | Nur Fehler (Plesk-Mail bei PHP-Fehler; App-Alerts über SMTP) |
|
||||||
| Benachrichtigen | „Nur Fehler“ für Cron-PHP-Fehler; App-Alerts über eigenes SMTP |
|
| Beschreibung | z. B. „0012 external monitoring pull“ |
|
||||||
|
|
||||||
Screenshot-Referenz: Plesk „Aufgabe planen“ (PHP-Skript, Cron-Stil, PHP-Version).
|
**Lauf:** Im Apache-Access-Log als `GET /monitor.php` mit User-Agent `curl/8.20.0` sichtbar. Enthält HTTPS/SSL-Pull, boka-Stale-Prüfung (15 Min) und Push-Schwellen — kein separater Heartbeat-Cron nötig.
|
||||||
|
|
||||||
|
**Optional:** Zweite Aufgabe `*/5` nur für Push-Stale — [`todo/13-optional-plesk-cron-heartbeat.md`](todo/13-optional-plesk-cron-heartbeat.md) (backlog, nicht umgesetzt).
|
||||||
|
|
||||||
|
**Follow-up:** Cron auf CLI (`php monitor.php`) + HTTP-Token — [`todo/12-monitor-php-token-check.md`](todo/12-monitor-php-token-check.md).
|
||||||
|
|
||||||
Weitere Plesk-Funktionen (Git, Composer, Hosting-Einstellungen): [`PLESK.md`](PLESK.md)
|
Weitere Plesk-Funktionen (Git, Composer, Hosting-Einstellungen): [`PLESK.md`](PLESK.md)
|
||||||
|
|
||||||
|
|||||||
@@ -72,5 +72,5 @@ Offene Arbeiten: [`todo/README.md`](todo/README.md)
|
|||||||
1. `.env.example` → `.env` kopieren und ausfüllen (lokal, FTP)
|
1. `.env.example` → `.env` kopieren und ausfüllen (lokal, FTP)
|
||||||
2. `python3 scripts/sync-server-env.py` → erzeugt `server.env` für den Webspace
|
2. `python3 scripts/sync-server-env.py` → erzeugt `server.env` für den Webspace
|
||||||
3. `./scripts/deploy.sh` — spielt `public/` + `config/` + `server.env` hoch (**.env bleibt lokal**)
|
3. `./scripts/deploy.sh` — spielt `public/` + `config/` + `server.env` hoch (**.env bleibt lokal**)
|
||||||
4. In Plesk: geplante Aufgabe für `monitor.php` (Cron-Stil, z. B. `*/10 * * * *`)
|
4. In Plesk: geplante Aufgabe für `monitor.php` (Cron-Stil, `*/10 * * * *`) — erledigt; Details [`todo/05-plesk-cron.md`](todo/05-plesk-cron.md)
|
||||||
5. Auf boka: Push-Skript + Crontab — erledigt via SSH (`frank@frank-schwenk.de`, Repo `~/server`); Details [`todo/04-monitoring-push-boka.md`](todo/04-monitoring-push-boka.md)
|
5. Auf boka: Push-Skript + Crontab — erledigt via SSH (`frank@frank-schwenk.de`, Repo `~/server`); Details [`todo/04-monitoring-push-boka.md`](todo/04-monitoring-push-boka.md)
|
||||||
|
|||||||
@@ -47,7 +47,7 @@
|
|||||||
|
|
||||||
## Notizen
|
## Notizen
|
||||||
|
|
||||||
- Plesk-Cron: `httpdocs/monitor.php`, `*/10 * * * *`, „Nur Fehler“ (Todo 05)
|
- Plesk-Cron: `httpdocs/monitor.php`, `*/10 * * * *`, „Nur Fehler“ — erledigt (Todo 05, 2026-06-12)
|
||||||
- Browser-Aufruf `https://0012.de/monitor.php` → leere Seite (HTTP 200) ist korrekt
|
- 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
|
- SSL-`warn` auf boka-Hosts nach LE short→long-lived-Wechsel: bekannt, kein Handlungsbedarf auf 0012.de
|
||||||
|
|
||||||
|
|||||||
+19
-12
@@ -1,6 +1,7 @@
|
|||||||
# 05 — Plesk Cron (Geplante Aufgaben)
|
# 05 — Plesk Cron (Geplante Aufgaben)
|
||||||
|
|
||||||
**Priorität:** high
|
**Priorität:** high
|
||||||
|
**Status:** erledigt (2026-06-12)
|
||||||
**Abhängigkeiten:** 01, 03 (Skript muss existieren)
|
**Abhängigkeiten:** 01, 03 (Skript muss existieren)
|
||||||
**Referenz:** Plesk → Websites & Domains → Geplante Aufgaben
|
**Referenz:** Plesk → Websites & Domains → Geplante Aufgaben
|
||||||
|
|
||||||
@@ -10,16 +11,17 @@ Monitoring automatisch alle 5–10 Minuten ausführen.
|
|||||||
|
|
||||||
## Checkliste
|
## Checkliste
|
||||||
|
|
||||||
- [ ] Aufgabe anlegen: **PHP-Skript ausführen**
|
- [x] Aufgabe anlegen: **PHP-Skript ausführen**
|
||||||
- [ ] Skriptpfad: `httpdocs/monitor.php` (Pfad nach Deployment verifizieren)
|
- [x] Skriptpfad: `httpdocs/monitor.php` (Pfad nach Deployment verifizieren)
|
||||||
- [ ] PHP-Version: höchste stabile (z. B. 8.5.7)
|
- [x] PHP-Version: höchste stabile (z. B. 8.5.x)
|
||||||
- [ ] **Aktiv** angehakt
|
- [x] **Aktiv** angehakt
|
||||||
- [ ] Ausführen: **Cron-Stil**
|
- [x] Ausführen: **Cron-Stil**
|
||||||
- [ ] Expression: `*/10 * * * *` (Pull-Checks alle 10 Min)
|
- [x] Expression: `*/10 * * * *` (Pull-Checks alle 10 Min)
|
||||||
- [ ] Beschreibung: z. B. „0012 external monitoring pull“
|
- [x] Beschreibung: z. B. „0012 external monitoring pull“
|
||||||
- [ ] Benachrichtigen: **Nur Fehler** (siehe unten)
|
- [x] Benachrichtigen: **Nur Fehler** (siehe unten)
|
||||||
- [ ] **Jetzt ausführen** — Exit-Code / Log prüfen
|
- [x] **Jetzt ausführen** — Exit-Code / Log prüfen
|
||||||
- [ ] Optional zweite Aufgabe für leichtgewichtigen Heartbeat-Only-Check (`*/5`) — nur wenn von monitor.php getrennt
|
|
||||||
|
Optional zweite Aufgabe für Heartbeat-only (`*/5`): ausgelagert nach [`13-optional-plesk-cron-heartbeat.md`](13-optional-plesk-cron-heartbeat.md) — nicht nötig, Stale-Check läuft im gleichen `monitor.php`-Lauf.
|
||||||
|
|
||||||
## Benachrichtigen: „Nur Fehler“
|
## Benachrichtigen: „Nur Fehler“
|
||||||
|
|
||||||
@@ -45,8 +47,13 @@ Plesk nutzt System-Timezone des Servers.
|
|||||||
|
|
||||||
## Akzeptanzkriterien
|
## Akzeptanzkriterien
|
||||||
|
|
||||||
- Aufgabe läuft scheduled ohne manuellen Klick
|
- [x] Aufgabe läuft scheduled ohne manuellen Klick (Access-Log: `curl/8.20.0` → `GET /monitor.php`)
|
||||||
- `data/last-checks.json` Timestamp bewegt sich
|
- [x] `data/last-checks.json` Timestamp bewegt sich (verifiziert in Todo 03)
|
||||||
|
|
||||||
|
## Notizen
|
||||||
|
|
||||||
|
- Lauf im Access-Log als HTTP-GET sichtbar (Plesk ruft URL per curl auf). Follow-up: CLI + Token — [`12-monitor-php-token-check.md`](12-monitor-php-token-check.md)
|
||||||
|
- Ist-Konfiguration dokumentiert in [`../HOSTING.md`](../HOSTING.md#geplante-aufgaben-cron)
|
||||||
|
|
||||||
## Fehlerbehebung
|
## Fehlerbehebung
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# 13 — Optional: Plesk Cron Heartbeat (`*/5`)
|
||||||
|
|
||||||
|
**Priorität:** backlog (optional)
|
||||||
|
**Status:** nicht umgesetzt — bewusst weggelassen
|
||||||
|
**Abhängigkeiten:** 05 (Haupt-Cron), 04 (Push ingest)
|
||||||
|
**Referenz:** [`05-plesk-cron.md`](05-plesk-cron.md), [`../HOSTING.md`](../HOSTING.md)
|
||||||
|
|
||||||
|
## Ziel
|
||||||
|
|
||||||
|
Optional eine **zweite** geplante Aufgabe in Plesk, die nur die Push-Stale-Prüfung (boka silent) alle 5 Min ausführt — getrennt vom vollen Pull-Check in `monitor.php`.
|
||||||
|
|
||||||
|
## Ausgangslage
|
||||||
|
|
||||||
|
- Haupt-Cron (Todo 05): `*/10 * * * *` → `httpdocs/monitor.php` (HTTPS/SSL + boka-Stale/Schwellen)
|
||||||
|
- boka pusht alle 5 Min; Stale-Schwelle in `monitor-lib.php`: 15 Min
|
||||||
|
- **Aktuell ausreichend:** ein Lauf alle 10 Min reicht für Stale-Erkennung
|
||||||
|
|
||||||
|
## Wann sinnvoll
|
||||||
|
|
||||||
|
- Pull-Checks dauern lang (>5 Min) und sollen seltener laufen, Stale-Alarm aber früher kommen
|
||||||
|
- Eigenes leichtgewichtiges Skript (nur `checkBokaPushStatus()`, kein HTTPS-Roundtrip)
|
||||||
|
|
||||||
|
## Checkliste (falls umgesetzt)
|
||||||
|
|
||||||
|
- [ ] Entscheidung: separates Skript (`monitor-heartbeat.php`) vs. Parameter an `monitor.php`
|
||||||
|
- [ ] Plesk-Aufgabe: Cron-Stil `*/5 * * * *`, PHP-Skript, „Nur Fehler“
|
||||||
|
- [ ] Kein Doppel-Alarm: Retry-/Cooldown-Logik mit Haupt-Monitor abstimmen
|
||||||
|
- [ ] [`../HOSTING.md`](../HOSTING.md) und [`05-plesk-cron.md`](05-plesk-cron.md) aktualisieren
|
||||||
|
|
||||||
|
## Akzeptanzkriterien
|
||||||
|
|
||||||
|
- Stale-Alarm spätestens ~5 Min nach letztem Push (statt bis zu 10 Min + Pull-Laufzeit)
|
||||||
|
- Keine doppelten Mails bei gleichzeitigem Pull- und Heartbeat-Lauf
|
||||||
+5
-2
@@ -8,7 +8,7 @@ Nummerierte Todos für den 0012.de-Webspace. Abhängigkeiten beachten.
|
|||||||
| 02 | [02-email-smtp.md](02-email-smtp.md) | **high** | Postfächer, SMTP für Alerts (0012.de) |
|
| 02 | [02-email-smtp.md](02-email-smtp.md) | **high** | Postfächer, SMTP für Alerts (0012.de) |
|
||||||
| 03 | [03-monitoring-pull-phase1.md](03-monitoring-pull-phase1.md) | **high** | `monitor.php`, HTTPS/SSL-Checks, Alarm |
|
| 03 | [03-monitoring-pull-phase1.md](03-monitoring-pull-phase1.md) | **high** | `monitor.php`, HTTPS/SSL-Checks, Alarm |
|
||||||
| 04 | [04-monitoring-push-boka.md](04-monitoring-push-boka.md) | **medium** | Push von boka → `ingest.php` — erledigt |
|
| 04 | [04-monitoring-push-boka.md](04-monitoring-push-boka.md) | **medium** | Push von boka → `ingest.php` — erledigt |
|
||||||
| 05 | [05-plesk-cron.md](05-plesk-cron.md) | **high** | Geplante Aufgaben in Plesk |
|
| 05 | [05-plesk-cron.md](05-plesk-cron.md) | **high** | Geplante Aufgaben in Plesk — erledigt |
|
||||||
| 06 | [06-site-0012-landing.md](06-site-0012-landing.md) | **medium** | Status-Beacon Landing Page |
|
| 06 | [06-site-0012-landing.md](06-site-0012-landing.md) | **medium** | Status-Beacon Landing Page |
|
||||||
| 07 | [07-mail-domains-external.md](07-mail-domains-external.md) | **medium** | MX für Domains ohne Mailserver |
|
| 07 | [07-mail-domains-external.md](07-mail-domains-external.md) | **medium** | MX für Domains ohne Mailserver |
|
||||||
| 08 | [08-monitoring-phase2.md](08-monitoring-phase2.md) | **medium** | API-Health, Latenz, Backup-Heartbeat |
|
| 08 | [08-monitoring-phase2.md](08-monitoring-phase2.md) | **medium** | API-Health, Latenz, Backup-Heartbeat |
|
||||||
@@ -16,17 +16,20 @@ Nummerierte Todos für den 0012.de-Webspace. Abhängigkeiten beachten.
|
|||||||
| 10 | [10-optional-plesk-git-composer.md](10-optional-plesk-git-composer.md) | backlog | Plesk Git / Composer evaluieren |
|
| 10 | [10-optional-plesk-git-composer.md](10-optional-plesk-git-composer.md) | backlog | Plesk Git / Composer evaluieren |
|
||||||
| 11 | [11-boka-smtp-relay.md](11-boka-smtp-relay.md) | **medium** | boka-Apps über 0012.de-SMTP |
|
| 11 | [11-boka-smtp-relay.md](11-boka-smtp-relay.md) | **medium** | boka-Apps über 0012.de-SMTP |
|
||||||
| 12 | [12-monitor-php-token-check.md](12-monitor-php-token-check.md) | **medium** | HTTP-Zugriff auf `monitor.php` per Token |
|
| 12 | [12-monitor-php-token-check.md](12-monitor-php-token-check.md) | **medium** | HTTP-Zugriff auf `monitor.php` per Token |
|
||||||
|
| 13 | [13-optional-plesk-cron-heartbeat.md](13-optional-plesk-cron-heartbeat.md) | backlog | Optional: separater Heartbeat-Cron `*/5` |
|
||||||
|
|
||||||
## Backlog (ohne Priorität)
|
## Backlog (ohne Priorität)
|
||||||
|
|
||||||
Todo **10** — Plesk Git-Deploy und Composer; dokumentiert in [`../PLESK.md`](../PLESK.md), kein Blocker für 02–09.
|
Todo **10** — Plesk Git-Deploy und Composer; dokumentiert in [`../PLESK.md`](../PLESK.md), kein Blocker für 02–09.
|
||||||
|
|
||||||
|
Todo **13** — optionaler Heartbeat-Cron in Plesk; nicht nötig solange `monitor.php` alle 10 Min läuft.
|
||||||
|
|
||||||
Todo **11** — boka SMTP-Relay; abhängig von erledigtem **02**, kein Blocker für **03**.
|
Todo **11** — boka SMTP-Relay; abhängig von erledigtem **02**, kein Blocker für **03**.
|
||||||
|
|
||||||
## Empfohlene Reihenfolge
|
## Empfohlene Reihenfolge
|
||||||
|
|
||||||
```
|
```
|
||||||
01 → 02 → 05 → 03 → 06
|
01 → 02 → 05 ✓ → 03 ✓ → 06
|
||||||
↘ 04 ✓ (Push ingest.php)
|
↘ 04 ✓ (Push ingest.php)
|
||||||
07 (wenn Domains feststehen)
|
07 (wenn Domains feststehen)
|
||||||
08 → 09
|
08 → 09
|
||||||
|
|||||||
Reference in New Issue
Block a user