NEWS
[Gelöst] CPU Temperatur von Proxmox VM
-
Wie kann ich die CPU Temperatur von meinem Intel Nuc, in meine Iobroker VM unter Proxmox einlesen?
Also damit ich die Temperatur unter Iobroker überwachen kann.
Hat das schon jemand umgesetzt ?
-
Ja, ich lasse mir im Host im Host per cron jede Minute folgende Skript-Datei aufrufen die mir in den (nutzlosen) Datenpunkt vom Info-Adapter alle 10 Sekunden die Systemtemperatur einträgt.
#!/bin/bash #ioBroker-Datenpunkt DP=info.0.sysinfo.cpu.temperature.main #Name des Datenpunktes #ioBroker-IP:Port IPP=192.168.1.*:8082 #Ziel-IP von ioBroker #Systemtemperatur abfragen SQL=$(sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3) #an ioBroker senden curl http://${IPP}/set/${DP}?value={$SQL} #alle 10 Sekunden den aktuellen Wert übertragen: sleep 10 SQL=$(sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value={$SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value={$SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value={$SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value={$SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value={$SQL}
Davor muss noch 'sensors' im Host installiert werden und der Datenpunkt für 'schreiben' freigegeben (oder eben ein eigener Datenpunkt angelegt) werden.
-
@Dr-Bakterius sagte in CPU Temperatur von Proxmox VM:
Ja, ich lasse mir im Host im Host per cron jede Minute folgende Skript-Datei aufrufen die mir in den (nutzlosen) Datenpunkt vom Info-Adapter alle 10 Sekunden die Systemtemperatur einträgt.
#!/bin/bash #ioBroker-Datenpunkt DP=info.0.sysinfo.cpu.temperature.main #Name des Datenpunktes #ioBroker-IP:Port IPP=192.168.1.*:8082 #Ziel-IP von ioBroker #Systemtemperatur abfragen SQL=$(sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3) #an ioBroker senden curl http://${IPP}/set/${DP}?value={$SQL} #alle 10 Sekunden den aktuellen Wert übertragen: sleep 10 SQL=$(sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value={$SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value={$SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value={$SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value={$SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value={$SQL}
Davor muss noch 'sensors' im Host installiert werden und der Datenpunkt für 'schreiben' freigegeben (oder eben ein eigener Datenpunkt angelegt) werden.
Sensor sind Installiert.
Wie gebe ich den Datenpunkt frei ?Wie erstelle ich ein Chronjob dür die Datei?
In welchem Verzeichnis speichere ich das skript ?
-
Ich habe mich etwas belesen und habe nun das Skript unter /usr/local/bin/ gespeichert.
Datenpunkt vom Info Adapter "Schreiben erlaubt"Wenn ich den Script ausführe komm das :
root@pve:/usr/local/bin# bash cpu_temp_send_iobroker.sh curl: (3) [globbing] unmatched brace in column 73curl: (3) [globbing] unmatched close brace/bracket in column 3 curl: (3) [globbing] unmatched brace in column 73curl: (3) [globbing] unmatched close brace/bracket in column 3 curl: (3) [globbing] unmatched brace in column 73curl: (3) [globbing] unmatched close brace/bracket in column 3 curl: (3) [globbing] unmatched brace in column 73curl: (3) [globbing] unmatched close brace/bracket in column 3
Funktioniert nicht, kannst du mir weiterhelfen?
-
Eine Alternative wäre evtl. auch noch der SNMP Adapter. Ich frage mit der OID 1.3.6.1.4.1.2021.13.16.2.1.3.3 die CPU Temperatur meiner NUCs ab (auf denen auch PROXMOX läuft).
-
@marcuskl Was passiert denn wenn du den Curl-Befehl direkt eingibst? Also z.B.:
curl http://192.168.1.10:8082/set/info.0.sysinfo.cpu.temperature.main?value=99
(Die IP und den Datenpunkt natürlich für dich anpassen.)
Ist curl bei dir überhaupt installiert?
Was passiert bei Eingabe von:
sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3
Und poste doch mal dein Skript.
-
@Dr-Bakterius ich probiere auch gerade den curl Befehl aus. Welche IP und welchen Port muss ich da nehmen? IP wo proxmox läuft, nehme ich an. Aber welcher port?
-
@lobomau Nein, die IP und den Port von ioBroker.
-
@Dr-Bakterius ok. Aber welcher port? bei mir geht über 8082 web.0, 8081 ist admin.
Bei beiden kommt die Antwort: curl: (52) Empty reply from serverEdit: liegt wohl daran, dass bei mir 8081 und 8082 über https läuft.
Habe 8083 getestet, wo web.1 über http läuft. Dann kommt:File info.0.sysinfo.cpu.temperature.main not found: Not existsiobroker@iobroker:~$
-
@Dr-Bakterius sagte in CPU Temperatur von Proxmox VM:
die IP und den Port von ioBroker.
Das ergibt doch keinen Sinn!?
Das ist doch eine VM, die hat keine Temp-sensoren
-
@Homoran ja, wahrscheinlich ist es das Unter Objekte info.0.sysinfo.cpu.temperature: alles leer
Andererseits sind die anderen Werte richtig gefüllt, wie CPU speed, Anzahl cores -
@integer63 kannst du mir genauer sagen, was ich auf Proxmox einrichten muss und was auf der ioBroker-VM? Muss ich im iobroker zusätzlich zum SNMP-Adapter noch den SNMP-Client im Debian installieren/konfigurieren?
-
@Dr-Bakterius sagte in CPU Temperatur von Proxmox VM:
@marcuskl Was passiert denn wenn du den Curl-Befehl direkt eingibst? Also z.B.:
curl http://192.168.1.10:8082/set/info.0.sysinfo.cpu.temperature.main?value=99
(Die IP und den Datenpunkt natürlich für dich anpassen.)
Ist curl bei dir überhaupt installiert?
Was passiert bei Eingabe von:
sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3
Und poste doch mal dein Skript.
Beim ersten befehl kommt fehler und der 2 funktioniert.
Hier die Ausgabe:root@pve:~# curl http://192.168.0.195:8081/set/info.0.sysinfo.cpu.temperature.main?value=99 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Error</title> </head> <body> <pre>Cannot GET /set/info.0.sysinfo.cpu.temperature.main</pre> </body> </html> root@pve:~# sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3 49 /A root@pve:~#
Mein Skript sieht so aus:
#!/bin/bash #ioBroker-Datenpunkt DP=info.0.sysinfo.cpu.temperature.main #Name des Datenpunktes #ioBroker-IP:Port IPP=192.168.0.195:8081 #Ziel-IP von ioBroker #Systemtemperatur abfragen SQL=$(sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3) #an ioBroker senden curl http://${IPP}/set/${DP}?value={$SQL} #alle 10 Sekunden den aktuellen Wert übertragen: sleep 10 SQL=$(sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value={$SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value={$SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value={$SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value={$SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value={$SQL}
-
@Homoran Von dir hätte ich schon erwartet zu wissen was der curl-Befehl macht.
Aber für dich und alle anderen:
Im Proxmox-Host wird per 'sensors' die Temperatur (des NUC) ausgelesen. Weil in der Ausgabe viel mehr als nur die gewünschte Information steht, wird mit 'grep', 'awk' und 'cut' der reine Zahlenwert der aktuellen Systemtemperatur "herausgeschnitten".
Dann wird mit 'curl' der ermittelte Wert an ioBroker gesendet. Dazu braucht man natürlich die IP und den Port von ioBroker. Ob das auch per https:// funktioniert habe ich nicht getestet. Was ich zuvor noch vergessen hatte: unter ioBroker muss man den 'simpleAPI Adapter' installiert haben!
So kann man jeden Datenpunkt von "außen" setzen.
-
@lobomau sagte in CPU Temperatur von Proxmox VM:
Andererseits sind die anderen Werte richtig gefüllt, wie CPU speed, Anzahl cores
Ja, aber das sind die Werte aus der virtuellen Maschine! Wenn man die des Hosts haben möchte, kann man den 'Proxmox'-Adapter verwenden. Bei dem sind aber leider auch keine Systemtemperaturen dabei.
-
@Dr-Bakterius also muss man auch den port auf den simpleAPI hört nehmen? Der ist bei mir 8087. Aber wie gesagt bei mir ist das Objekt eh leer wo temperature sein sollte.
-
@marcuskl Okay, sieht ja schon mal gut aus auf der Proxmox-Seite. Was ich noch vergessen hatte: ist in ioBroker der 'simpleAPI Adapter' installiert?
-
@Dr-Bakterius sagte in CPU Temperatur von Proxmox VM:
@marcuskl Okay, sieht ja schon mal gut aus auf der Proxmox-Seite. Was ich noch vergessen hatte: ist in ioBroker der 'simpleAPI Adapter' installiert?
Ok über den Port vom Simple Api Adapter funktioniert der curl befehl.
Hatte de Adapter schon installiert.
Ich habe das Skript auch angepasst, aber es funktioniert immernoch nicht.root@pve:/usr/local/bin# bash cpu_temp_send_iobroker.sh curl: (3) [globbing] unmatched brace in column 73curl: (3) [globbing] unmatched close brace/bracket in column 3 ^Pcurl: (3) [globbing] unmatched brace in column 73 curl: (3) [globbing] unmatched close brace/bracket in column 3 curl: (3) [globbing] unmatched brace in column 73curl: (3) [globbing] unmatched close brace/bracket in column 3 curl: (3) [globbing] unmatched brace in column 73curl: (3) [globbing] unmatched close brace/bracket in column 3 curl: (3) [globbing] unmatched brace in column 73curl: (3) [globbing] unmatched close brace/bracket in column 3 curl: (3) [globbing] unmatched brace in column 73curl: (3) [globbing] unmatched close brace/bracket in column 3 root@pve:/usr/local/bin# bash cpu_temp_send_iobroker.sh
-
@lobomau Hm, bei mir ist der Port der gleiche wie der wo ich den Startscreen von ioBroker finde - der Standard-Port 8082. Dass der Datenpunkt leer ist, ist klar - schließlich kann der info-Adapter keine Werte ermitteln. Du kannst auch selbst einen Datenpunkt unter 'javascript.0' anlegen und den Temperaturwert dorthin schreiben.
-
Der curl Befehl funktioniert bei mir mit dem simpleAPI port. Damit habe ich den Wert auf 99 gestellt.
Das Problem ist der zweite Befehl mit
sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3
->
Command 'sensors' not found, but can be installed with:
sudo apt install lm-sensors
Installation schlägt fehl:
iobroker@iobroker:~$ sudo apt install lm-sensors
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Paket lm-sensors ist nicht verfügbar, wird aber von einem anderen Paket
referenziert. Das kann heißen, dass das Paket fehlt, dass es abgelöst
wurde oder nur aus einer anderen Quelle verfügbar ist.E: Für Paket »lm-sensors« existiert kein Installationskandidat.