9b18b11f32
Add token- and IP-protected ingest.php, boka status checks in monitor.php, and document the two-repo push workflow. Todo 04 marked complete. Co-authored-by: Cursor <cursoragent@cursor.com>
2.0 KiB
2.0 KiB
04 — Monitoring Push (boka → Webspace)
Priorität: medium
Status: erledigt (2026-06-12)
Abhängigkeiten: 01, 03 (ingest + stale-Check)
Siehe auch: ../MONITORING.md Ebene 2
Ziel
Interne Metriken von boka an 0012.de pushen; Alarm wenn kein Push seit 15 Min.
Checkliste
Webspace
public/ingest.php— POST JSON, Token-Prüfung (MONITOR_INGEST_TOKEN) + IP-Whitelist (BOKA_IP)- Payload speichern:
private/data/boka-status.json+ Timestamp - In
monitor.php: wennlast_push> 15 Min → Alarm „boka silent“ - Schwellen:
disk_percent > 85,containers_unhealthy > 0 - Backup-Heartbeat-Feld
backup_last_success— Alarm wenn > 25h alt (nur wenn Feld gesetzt)
boka
- Skript
~/server/scripts/push-status.sh - Sammelt: load, disk %, mem,
docker psrunning/unhealthy - POST an
INGEST_URLmit curl - Crontab:
*/5 * * * * - Nach erfolgreichem Backup: Push mit aktualisiertem
backup_last_success(wenn Backups existieren)
Token
- Starkes Token in
.env/server.env - Identisch in boka
~/server/config/push.env(PUSH_TOKEN)
Beispiel-Payload
{
"token": "...",
"load": [1.2, 0.8, 0.5],
"disk_percent": 55,
"mem_available_mb": 4700,
"containers_running": 38,
"containers_unhealthy": 0,
"backup_last_success": "2026-06-10T03:00:00+02:00"
}
Akzeptanzkriterien
- Push von boka aktualisiert JSON auf Webspace (HTTP 200, 2026-06-12)
- Stale-Alarm — Logik in
monitor-lib.php; Live-Test bewusst übersprungen
Notizen
- Skript liegt im boka-Repo (
~/server); Webspace-Repo:ingest.php+monitor-lib.php - SSH-Sync:
frank@frank-schwenk.de— push.env, Crontab,webspace/-Kopien - Bugfix in
push-status.sh: Env-Vars müssen vorpython3stehen (nicht danach) - boka-Agent: verifiziert (grünes Licht)
- Gitea-Remote für
~/server: später (User) - Backup-Hook in
push-status.sh: offen bis Backups existieren