Verlauf um Swap und Temperatur ergänzen, Netz p42 als externes Netz

/api/history liefert zusätzlich swapPercent und tempMaxCelsius (für den
2-Tage-Verlauf im Dashboard). Das Docker-Netz p42 legt update-docker.sh
bei Bedarf an, damit die Startreihenfolge mit P42-F.W. egal ist.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
guyg1474andClaude Opus 5.5 committed 2026-10-14 16:22:48 +02:00
1 parent 21fbb4ad14
commit a1beee3d85
4 files changed
+13 -18

No files matched your search

+7 -18
View File
@@ -39,7 +39,7 @@ curl -H "Authorization: Bearer $(grep ^SM_TOKEN= .env | cut -d= -f2)" http://127
docker compose stop # anhalten
docker compose start # wieder starten
docker compose restart # nach Änderungen an .env: besser "docker compose up -d"
docker compose down # Container entfernen (Netz "p42" wird mit entfernt, falls unbenutzt)
docker compose down # Container entfernen (das Netz "p42" bleibt bestehen)
docker compose ps # Status inkl. healthy/unhealthy
docker compose logs -f # Log: nur Start, Fehler und abgelehnte Anfragen
docker stats p42-sm # Verbrauch des Agenten selbst (wenige MB RAM)
@@ -66,22 +66,10 @@ sein (`id -u <user>`). Netzlaufwerke (NFS/SMB) werden bewusst nicht gemessen.
### Erreichbarkeit
**A) Dashboard läuft als Container auf demselben Server (empfohlen):** P42-S.M. legt das Docker-Netz `p42` an.
In der `docker-compose.yml` von P42-F.W. ergänzen:
```yaml
services:
p42:
# ... wie bisher ...
networks: [default, p42]
networks:
p42:
external: true
```
Danach erreicht das Dashboard-Backend den Dienst unter **`http://p42-sm:9142`**. Ein offener Port nach außen
ist dafür nicht nötig. P42-S.M. muss zuerst gestartet sein, da es das Netz anlegt.
**A) Dashboard läuft als Container auf demselben Server (empfohlen):** Beide hängen im Docker-Netz `p42`,
das die `update-docker.sh` beider Projekte bei Bedarf anlegt (Reihenfolge egal). Das Dashboard erreicht den
Dienst darin unter **`http://p42-sm:9142`**, ohne offenen Port nach außen. Im Dashboard unter Monitoring
→ „+ Server hinzufügen“ → Prüfung „Server-Auslastung (P42-S.M.)“, Adresse `http://p42-sm:9142`, Token aus `.env`.
**B) Dashboard läuft auf einem anderen Rechner:** In `.env` `SM_BIND` auf die LAN-IP des Servers setzen.
Die Adresse lautet dann `http://<server-ip>:9142`. Per Firewall sollte nur der Dashboard-Rechner zugreifen dürfen.
@@ -159,7 +147,8 @@ Hinweise zu den Feldern:
{
"intervalSeconds": 5,
"points": [
{ "timestamp": "2026-10-14T14:58:59+02:00", "cpuPercent": 5.0, "memoryPercent": 40.9, "load1m": 0.81,
{ "timestamp": "2026-10-14T14:58:59+02:00", "cpuPercent": 5.0, "memoryPercent": 40.9, "swapPercent": 0.0,
"tempMaxCelsius": 51.0, "load1m": 0.81,
"rxBytesPerSec": 2769, "txBytesPerSec": 6111, "readBytesPerSec": 0, "writeBytesPerSec": 2757518 }
]
}
+2
View File
@@ -310,6 +310,8 @@ def history_point(snap: dict) -> dict:
"timestamp": snap["timestamp"],
"cpuPercent": snap["cpu"]["percent"],
"memoryPercent": snap["memory"]["percent"],
"swapPercent": snap["swap"]["percent"],
"tempMaxCelsius": max((t["celsius"] for t in snap["temperatures"]), default=None),
"load1m": snap["cpu"]["load"]["1m"],
"rxBytesPerSec": snap["network"]["rxBytesPerSec"],
"txBytesPerSec": snap["network"]["txBytesPerSec"],
+3
View File
@@ -21,6 +21,9 @@ if [ ! -f .env ]; then
grep '^SM_TOKEN=' .env | cut -d= -f2
fi
# Gemeinsames Netz mit P42-F.W. – wer zuerst startet, legt es an
docker network inspect p42 >/dev/null 2>&1 || docker network create p42 >/dev/null
docker compose up -d --build
docker image prune -f >/dev/null
+1
View File
@@ -29,3 +29,4 @@ networks:
# unter http://p42-sm:9142, ohne dass ein Port nach außen offen sein muss.
p42:
name: p42
external: true # legt deploy/update-docker.sh bei Bedarf an (auch das von P42-F.W.)