NEWS
ESXi Host in ioBroker überwachen.
-
Hallo,
wie kann ich im ioBroker den Status des ESX Servers bzw. der anderen WMs auslesen.
Welche Möglichkeiten gibt es?Viele Grüße Sebastian
-
@Bastoly da es leider keinen ESXi Adapter gibt, wie z.B. für Proxmox habe ich es per Power-CLI gelöst.
Auf meinem Host läuft eine Windows10 VM, auf der eine Powershell-Skript läuft, welches den ESXi auswertet und die Infos per Simple-API an den ioBroker übergibt.
Die Werte sehen so aus:
-
@Kuddel said in ESXi Host in ioBroker überwachen.:
Power-CLI
Das hört sich nach einer sehr guten Lösung an.
Vielen Dank. -
@Kuddel Hab auch dein Powershell-Skript im Forum gefunden.
Bekomme aber bei der Übergabe an ioBroker noch eine Fehlermeldung.
Invoke-WebRequest -Uri http://10.9.77.172:8087/set/javascript.0.ressourcen.esx.esxi_mem_usage?value=$esxi_ram | Out-Null
Invoke-WebRequest : "error: datapoint "javascript.0.ressourcen.esx.esxi_mem_usage" not found"
In Zeile:1 Zeichen:1- Invoke-WebRequest -Uri http://10.9.77.172:8087/set/javascript.0.resso ...
-
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
Was muss ich im ioBroker noch vorbereiten? So wie es aussieht findet mein Windows Host den Pfad zum ioBroker nicht.
Muss ich im ioBroker diesen Pfad anlegen? Der simple.API Adapter hat kein Objekt angelegt. -
@Bastoly du musst die Datenobjekte, in die per API die Werte geschrieben werden, vorher noch anlegen
-
Hallo Zusammen,
ich versuche gerade genau das selbe. Allerdings bekomme ich beim Übergeben der Werte über API den Fehler "not implemented".
Könnt ihr mir vielleicht einen Tipp geben?Vielen Dank im Voraus
lg
Martin
-
Hallo Martin,
ja da sind wir schon zu zweit
Bekomme jetzt keine Fehlermeldung von dem Powershell-Skript selbst. Jedoch kommen keine Daten an. -
@Kuddel
Hab den Pfad soweit angelegt und das Powershell-Script soweit angepasst.
Das Script gibt mir keinen Fehler mehr an. Ich denke der Adapter muss noch wissen wie er das verarbeiten soll.
Hast du noch einen Hinweis für mich? -
@Bastoly das Skript übergibt irgendwie den Befehl an sich und nicht den Wert.
nimm mal Ende das | Out-Null weg.
Dann bekommt man eine Anzeige
-
@Kuddel ohne | Out-Null sehe ich mehr
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/out-null?view=powershell-7
morgen weiter.
Danke dir. -
@Kuddel jetzt läuft das ganze.
Super cool, ich danke für die Hilfe. -
@Bastoly
-
@MartinG an welcher Stelle bekommst du die Fehlermeldung?
-
@Kuddel bei deinem Script ist mir aufgefallen, dass bei der Dauerschleife eine sehr hohe CPU Last entsteht.
#Dieses Skript übergibt Informationen vom ESX-NUC an den ioBroker #Das Skript läuft im Hintergrund und wird bei der Anmeldung gestartet #sleep 30 #Import der PowerCLI Befehle Import-Module VMware.PowerCLI #Verbindung zum ESX-Host aufbauem Connect-VIServer 10.9.77.5 -user administrator@vsphere.local -Password ! #Dauerschleife while ($env:COMPUTERNAME -eq "mgmt") { #ESXi Infos Abfragen $esxi_infos = get-vmhost #Freier RAM ESXi $esxi_ram = $esxi_infos.MemoryUsageGB Invoke-WebRequest -Uri http://10.9.77.172:8087/set/javascript.0.ressourcen.esx.esxi_mem_usage?value=$esxi_ram | Out-Null $esxi_ram_usage_percent = $esxi_infos.MemoryUsageGB / $esxi_infos.MemoryTotalGB $esxi_ram_usage_percent = $esxi_ram_usage_percent * 100 $esxi_ram_usage_percent = [math]::Round($esxi_ram_usage_percent,0) Invoke-WebRequest -Uri http://10.9.77.172:8087/set/javascript.0.ressourcen.esx.esxi_mem_usage_percent?value=$esxi_ram_usage_percent | Out-Null #CPU Auslastung $esxi_cpu_usage = [INT]$esxi_infos.CpuUsageMhz Invoke-WebRequest -Uri http://10.9.77.172:8087/set/javascript.0.ressourcen.esx.esxi_cpu_usage?value=$esxi_cpu_usage | Out-Null $esxi_cpu_usage_percent = $esxi_infos.CpuUsageMhz / $esxi_infos.CpuTotalMhz $esxi_cpu_usage_percent = $esxi_cpu_usage_percent * 100 $esxi_cpu_usage_percent = [math]::Round($esxi_cpu_usage_percent,0) Invoke-WebRequest -Uri http://10.9.77.172:8087/set/javascript.0.ressourcen.esx.esxi_cpu_usage_percent?value=$esxi_cpu_usage_percent | Out-Null #Speicherauslastung SSD $DataSSD480GB = Get-Datastore DataSSD480GB $DataSSD480GB_usage_percent = $DataSSD480GB.CapacityGB - $DataSSD480GB.FreeSpaceGB $DataSSD480GB_usage_percent = $DataSSD480GB_usage_percent / $DataSSD480GB.CapacityGB $DataSSD480GB_usage_percent = $DataSSD480GB_usage_percent * 100 $DataSSD480GB_usage_percent = [math]::Round($DataSSD480GB_usage_percent,2) Invoke-WebRequest -Uri http://10.9.77.172:8087/set/javascript.0.ressourcen.esx.esxi_DataSSD480GB_usage_percent?value=$DataSSD480GB_usage_percent | Out-Null #Freier Speicher in GB Invoke-WebRequest -Uri http://10.9.77.172:8087/set/javascript.0.ressourcen.esx.esxi_DataSSD480GB_freespace?value=$($DataSSD480GB.FreeSpaceGB) | Out-Null }
Wenn du unter der Schleife noch ein "sleep 1" machst reduziert sich das ganze extrem.
#sleep 30 #Import der PowerCLI Befehle Import-Module VMware.PowerCLI #Verbindung zum ESX-Host aufbauem Connect-VIServer 10.9.77.5 -user administrator@vsphere.local -Password ! #Dauerschleife while ($env:COMPUTERNAME -eq "mgmt") { #ESXi Infos Abfragen $esxi_infos = get-vmhost #Freier RAM ESXi $esxi_ram = $esxi_infos.MemoryUsageGB Invoke-WebRequest -Uri http://10.9.77.172:8087/set/javascript.0.ressourcen.esx.esxi_mem_usage?value=$esxi_ram | Out-Null $esxi_ram_usage_percent = $esxi_infos.MemoryUsageGB / $esxi_infos.MemoryTotalGB $esxi_ram_usage_percent = $esxi_ram_usage_percent * 100 $esxi_ram_usage_percent = [math]::Round($esxi_ram_usage_percent,0) Invoke-WebRequest -Uri http://10.9.77.172:8087/set/javascript.0.ressourcen.esx.esxi_mem_usage_percent?value=$esxi_ram_usage_percent | Out-Null #CPU Auslastung $esxi_cpu_usage = [INT]$esxi_infos.CpuUsageMhz Invoke-WebRequest -Uri http://10.9.77.172:8087/set/javascript.0.ressourcen.esx.esxi_cpu_usage?value=$esxi_cpu_usage | Out-Null $esxi_cpu_usage_percent = $esxi_infos.CpuUsageMhz / $esxi_infos.CpuTotalMhz $esxi_cpu_usage_percent = $esxi_cpu_usage_percent * 100 $esxi_cpu_usage_percent = [math]::Round($esxi_cpu_usage_percent,0) Invoke-WebRequest -Uri http://10.9.77.172:8087/set/javascript.0.ressourcen.esx.esxi_cpu_usage_percent?value=$esxi_cpu_usage_percent | Out-Null #Speicherauslastung SSD $DataSSD480GB = Get-Datastore DataSSD480GB $DataSSD480GB_usage_percent = $DataSSD480GB.CapacityGB - $DataSSD480GB.FreeSpaceGB $DataSSD480GB_usage_percent = $DataSSD480GB_usage_percent / $DataSSD480GB.CapacityGB $DataSSD480GB_usage_percent = $DataSSD480GB_usage_percent * 100 $DataSSD480GB_usage_percent = [math]::Round($DataSSD480GB_usage_percent,2) Invoke-WebRequest -Uri http://10.9.77.172:8087/set/javascript.0.ressourcen.esx.esxi_DataSSD480GB_usage_percent?value=$DataSSD480GB_usage_percent | Out-Null #Freier Speicher in GB Invoke-WebRequest -Uri http://10.9.77.172:8087/set/javascript.0.ressourcen.esx.esxi_DataSSD480GB_freespace?value=$($DataSSD480GB.FreeSpaceGB) | Out-Null sleep 1 }
Du hast nicht zufällig noch ein Script für die VMs selbst?
-
@Bastoly aktuell habe ich auf Grund der CPU Last die Schleife deaktiviert und führe es alle 60 Sekunden aus.
Für die VMs habe ich kein PS Sktipt, da sich der iobroker die Infos direkt per SSH holt
-
@Kuddel said in ESXi Host in ioBroker überwachen.:
Für die VMs habe ich kein PS Sktipt, da sich der iobroker die Infos direkt per SSH holt
Und das machst du wie?
Eventuell hast du das bereits schon beschrieben. Ein Link würde mir schon reichen.
-