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:
1 parent
21fbb4ad14
commit
a1beee3d85
4 files changed
+13
-18
No files matched your search
@@ -39,7 +39,7 @@ curl -H "Authorization: Bearer $(grep ^SM_TOKEN= .env | cut -d= -f2)" http://127
|
|||||||
docker compose stop # anhalten
|
docker compose stop # anhalten
|
||||||
docker compose start # wieder starten
|
docker compose start # wieder starten
|
||||||
docker compose restart # nach Änderungen an .env: besser "docker compose up -d"
|
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 ps # Status inkl. healthy/unhealthy
|
||||||
docker compose logs -f # Log: nur Start, Fehler und abgelehnte Anfragen
|
docker compose logs -f # Log: nur Start, Fehler und abgelehnte Anfragen
|
||||||
docker stats p42-sm # Verbrauch des Agenten selbst (wenige MB RAM)
|
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
|
### Erreichbarkeit
|
||||||
|
|
||||||
**A) Dashboard läuft als Container auf demselben Server (empfohlen):** P42-S.M. legt das Docker-Netz `p42` an.
|
**A) Dashboard läuft als Container auf demselben Server (empfohlen):** Beide hängen im Docker-Netz `p42`,
|
||||||
In der `docker-compose.yml` von P42-F.W. ergänzen:
|
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
|
||||||
```yaml
|
→ „+ Server hinzufügen“ → Prüfung „Server-Auslastung (P42-S.M.)“, Adresse `http://p42-sm:9142`, Token aus `.env`.
|
||||||
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.
|
|
||||||
|
|
||||||
**B) Dashboard läuft auf einem anderen Rechner:** In `.env` `SM_BIND` auf die LAN-IP des Servers setzen.
|
**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.
|
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,
|
"intervalSeconds": 5,
|
||||||
"points": [
|
"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 }
|
"rxBytesPerSec": 2769, "txBytesPerSec": 6111, "readBytesPerSec": 0, "writeBytesPerSec": 2757518 }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -310,6 +310,8 @@ def history_point(snap: dict) -> dict:
|
|||||||
"timestamp": snap["timestamp"],
|
"timestamp": snap["timestamp"],
|
||||||
"cpuPercent": snap["cpu"]["percent"],
|
"cpuPercent": snap["cpu"]["percent"],
|
||||||
"memoryPercent": snap["memory"]["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"],
|
"load1m": snap["cpu"]["load"]["1m"],
|
||||||
"rxBytesPerSec": snap["network"]["rxBytesPerSec"],
|
"rxBytesPerSec": snap["network"]["rxBytesPerSec"],
|
||||||
"txBytesPerSec": snap["network"]["txBytesPerSec"],
|
"txBytesPerSec": snap["network"]["txBytesPerSec"],
|
||||||
|
|||||||
@@ -21,6 +21,9 @@ if [ ! -f .env ]; then
|
|||||||
grep '^SM_TOKEN=' .env | cut -d= -f2
|
grep '^SM_TOKEN=' .env | cut -d= -f2
|
||||||
fi
|
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 compose up -d --build
|
||||||
docker image prune -f >/dev/null
|
docker image prune -f >/dev/null
|
||||||
|
|
||||||
|
|||||||
@@ -29,3 +29,4 @@ networks:
|
|||||||
# unter http://p42-sm:9142, ohne dass ein Port nach außen offen sein muss.
|
# unter http://p42-sm:9142, ohne dass ein Port nach außen offen sein muss.
|
||||||
p42:
|
p42:
|
||||||
name: p42
|
name: p42
|
||||||
|
external: true # legt deploy/update-docker.sh bei Bedarf an (auch das von P42-F.W.)
|
||||||
Reference in new issue
Block a user