Google ohne AI
brachte mich auf den Befehl
mpstat. Dieser Befehl beherrscht auch das Ausgabeformat JSON.
Voraussetzung für eine saubere Umsetzung ist das automatische Login per Public/Private Key Verfahren.
Das Paket sysstat muss auf dem Zielsystem installiert sein.
Im Folgenden meine Vorgehensweise dazu:
- ssh Login auf dem openHAB System (als User openhabian oder anderer Admin-User)
- Von dort Login als User openhab (abgefragt wird hier das Passwort des Admin-Users, der schon angemeldet ist)
- Verzeichnis für Schlüsselpaar anlegen und mit korrekten Rechten versehen:
und einmal mit ls -la prüfen, dass das Verzeichnis .ssh vorhanden ist, mit den Besitzrechten drwx------ openhab:openhab
- Mit dem Befehlerzeugst Du ein Schlüsselpaar. Der Default Dateiname sollte /var/lib/openhab/.ssh/id_ed25519 sein, was ok ist.
Keinesfalls ein Passwort vergeben, der Schlüssel soll ja zur automatischen Anmeldung verwendet werden.
Anschließend gibt es im Verzeichnis .ssh zwei Dateien, id_ed25519 und id_ed25519.pub
- Nun loggst Du Dich am besten parallel auf dem Zielsystem ein und installierst sysstat:
Außerdem legst dort einen User openhab an
Vergib für den User ein Passwort, damit Du anschließend den Public Key bequerm kopieren kannst
- Ist der User angelegt, wechselst Du wieder auf das openHAB-System und gibst als User openhab den Befehl
ein, wobei <name-des-zielsystems> der Hostname oder die IP ist.
ssh-copy-id fragt, ob der Rechner in die Liste vertrauenswürdiger Systeme aufgenommen werden soll. Weiter fragt es nach dem Passwort, was Du nun einmalig eingeben musst.
Damit sind alle Vorbereitungen soweit abgeschlossen.
Nun kannst Du testen, ob Der Zugriff funktioniert:
Code: Alles auswählen
ssh <name-des-zielsystems> -i .ssh/openhab_ed25519 mpstat -o JSON
Und als Ergebnis solltest Du sowas zu sehen bekommen:
Code: Alles auswählen
{"sysstat": {
"hosts": [
{
"nodename": "server",
"sysname": "Linux",
"release": "6.5.13-1-pve",
"machine": "x86_64",
"number-of-cpus": 12,
"date": "03.03.2024",
"statistics": [
{
"timestamp": "22:31:03",
"cpu-load": [
{"cpu": "all", "usr": 2.56, "nice": 0.00, "sys": 2.81, "iowait": 0.44, "irq": 0.00, "soft": 0.03, "steal": 0.00, "guest": 0.25, "gnice": 0.00, "idle": 93.91}
]
}
]
}
]
}}
Passt alles, kannst Du Dich vom openHAB-System abmelden und beim User openhab auf dem Zielsystem das Passwort entfernen, dazu solltest Du dort vermutlich als anderer User angemeldet sein
Wenn ein User kein Passwort hat, kann man sich nicht mehr mit Passwort anmelden, die Anmeldung über den Private Key funktioniert hingegen weiterhin.
Nun ist der Rest sozusagen ein Spaziergang, also, fast...
- Installiere das exec Addon
- Installiere das JSONPath Addon
- Lege ein exec:command Thing an
- Gib als command die Zeile an, die Du schon oben erfolgreich getestet hast
- Falls Du den Befehl zyklisch ausführen willst: Dafür gibt es den Parameter interval.
- Die Befehlszeile muss identisch auch in der whitelist hinterlegt werden ($OPENHAB_CONF/misc/exec.whitelist)
- Lege ein Number Item an, welches die CPU-Last anzeigen soll
- Verlinke dieses Item mit dem String Channel output
- Richte im Link ein Profile ein (JSONPATH und als Pfad $.sysstat.hosts.statistics.cpu-load.idle
Ein Wermutstropfen folgt jetzt, der Wert Idle gibt, wie der Name vermuten lässt, an, wie viel der Prozessor sich langweilt. Jedoch wird auch mit anderen Befehlen gewöhnlich nicht die Last ausgegeben, sondern verschiedene Aspekte. Wenn Du aber die Idle Prozentzahl von 100 abziehst, hast Du die Last über alles. Diese Kalkulation sollte machbar sein.
Alternativ könnte man auch ein kleines Script schreiben und es als Profile aufrufen. Das Script könnte dann JSONPath nutzen und "in einem Aufwasch" auch gleich noch den Idle-Wert von 100 abziehen.
Infos über das RAM kannst Du auf ähnliche Weise mittels des Befehls free ermitteln. Leider beherrscht free nicht die Ausgabe über JSON.
Ob Du mit einem Schlüsselpaar arbeitest oder für jeden Rechner ein eigenes Schlüsselpaar erzeugst, bleibt Dir überlassen - sicherer sind mehrere Dateien, andererseits ist die Chance, dass ein einzelnes System korrumpiert wird und Du das mitbekommst und so verhindern kannst, dass sich ein Problem ausweitet, ohnehin eher theoretischer Natur
Du kannst den Public Key übrigens für beliebige Zielsysteme und beliebige User verwenden, allerdings ist dann das Kopieren des Public Key nicht mehr ganz so komfortabel. So oder so benötigst Du auf allen Zielsystemen mindestens normalen Zugriff, um den Befehl mpstat ausführen zu dürfen, und der Befehl muss installiert sein.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet