Nachdem wir nun die Basis zur Speicherung von Daten geschaffen haben, können wir nun mit dem Einspielen von Daten beginnen. Da ich im ersten Schritt die Verteilung der Windows-Client-Versionen im WSUS auslesen möchte, brauche ich natürlich ein Windows-System. Ob es ein Server oder ein Client-OS ist zählt erstmal nicht. Wichtig ist nur, dass der Client bzw. Server recht aktuell ist. Ich beginne mit meinem Windows 10 zum Test der Verbindung.
Die Installation des benötigten PowerShell-Modules
Das einspielen von Werten in die InfluxDB per Windows PowerShell funktioniert mit einem Modul, was frei zur Verfügung steht und aus dem Modul-Katalog heruntergeladen werden kann.
Informationen zum Modul selbst inkl. einiger Screenshots gibt es hier: Github.com: PowerShell-Influx
Die Installation des Moduls kann in der PowerShell durchgeführt werden mit.
Install-Module Influx
Wie bei der PowerShell üblich, werden hierzu administrative Rechte benötigt. Eine Alternative dazu wäre die Installation im Scope des Users, allerdings ist es dann teilweise nicht möglich, das Modul im Rechte-Level von einem anderen Benutzer zu benutzen.
Die ersten Daten in die Influx-Datenbank einspielen
Um nun die Verbindung zur Influx-Datenbank zu testen, können die folgenden paar Zeilen verwendet werden.
$InfluxDB = "http://<IP>:8086" $username = "<Username>" $password = "<Password>" | ConvertTo-SecureString -asPlainText -Force $Cred = New-Object System.Management.Automation.PSCredential($username,$password) $ValuesList = Get-counter -Counter "\arbeitsspeicher\zugesicherte verwendete bytes (%)","\prozessor(_total)\prozessorzeit (%)" $MemoryActive = [math]::Round($ValuesList.CounterSamples[0].CookedValue,3) $ProcessorActive = [math]::Round($ValuesList.CounterSamples[1].CookedValue,2) $metrics = @{ "cpu active" = $ProcessorActive "Used RAM in percent" = $MemoryActive } Write-Influx -Measure <Clientname> -Tags @{Server=$env:COMPUTERNAME} -Metrics $metrics -Database <DatenbankName> -Server $InfluxDB -Credential $Cred -Verbose
Die paar Zeilen PowerShell machen die folgenden Dinge:
- Zeile 1 definiert den Datenbank-Server
- Zeile 2 und 3 sind Benutzername und Kennwort der Datenbank (dies könnte auch manuell eingegeben werden, damit die Daten nicht im Plaintext im Skript stehen)
- Zeile 4 baut die Credentials so zusammen, dass sie in dem Skript nutzbar sind
- Zeile 6 holt sich die Werte für die CPU-Auslastung und den verwendeten Speicher
- Zeile 7 und 8 speichern den reinen Wert (z.B. 41,52 für die prozentuale CPU-Auslastung)
- Zeile 10 bis 13 schreibt diese Werte in ein Array und definiert dafür den Namen, der später in Grafana als Datenquellwert angewählt werden kann (z.B. cpu active).
- Zeile 15 schreibt die beiden Werte in die InfluxDB
Wichtig bei der Arbeit mit Grafana und InfluxDB ist, dass immer einzelne Werte gesammelt und dann in die Datenbank geschrieben werden. Die Anzahl der Messpunkte hängt davon ab, was sinnvoll ist und wie schnell und häufig sich ein Wert ändert. Manchmal reicht ein Messwert in fünf Minuten, manchmal müssen es hunderte pro Sekunde sein. Das hängt ganz allein davon ab, was gemessen wird und welche Informationen benötigt werden.
Der erste Aufruf
Läuft alles glatt, sieht der erste Aufruf von dem kleinen Skript wie folgt aus:
Die beiden Werte wurden gesammelt und erfolgreich an die Datenbank übermittelt. Gibt es an dieser Stelle eine Fehlermeldung, sollten die Zugangsdaten sowie die Namen und IPs überprüft werden. Stehen die Geräte nicht im gleichen Subnetz, könnte auch eine Firewall das Problem sein.
Wir haben nun einen einzigen Punkt in der Datenbank. Sollen mehr Werte hinzugefügt werden, kann das Skript problemlos weitere Male ausgeführt werden. Jeder Aufruf erzeugt einen weiteren Messpunkt und Eintrag in der Datenbank. Wie genau das aussieht, sehen wir bei der Erstellung von einem Dashboard.
Fazit
Wir haben nun die ersten Daten in unserer Datenbank gespeichert, im nächsten Teil schauen wir uns einmal an, wie wir diese Daten abrufen können und ein eigenes kleines Dashboard erstellen können.
Jan Kappen arbeitet sein 2005 in der IT.
Mach aus sein -> seit.
Ist korrigiert, danke für den Hinweis 🙂