Monitoring eines S2D Clusters mit Grafana, InfluxDB und PowerShell (Teil 1) | Hyper-V Server Blog

Monitoring eines S2D Clusters mit Grafana, InfluxDB und PowerShell (Teil 1)

Hallo, Jan hier. Da ich in letzter Zeit einiges in Richtung Monitoring gemacht habe, führe ich diese Erkenntnisse hier mal auf und zeige euch, wie man ein Monitoring-System mit Hilfe von InfluxDB und Grafana aufbaut, um sein S2D-Cluster zu monitoren und die Performance-Werte grafisch dazustellen. Grundsätzlich ist mit dieser Lösung ein Monitoring aller möglichen Dinge machbar, ich z.B. habe die Installation im ersten Schritt dazu genutzt, die Windows 10-Verteilung in der Firma visuell darzustellen.

Die Grundvoraussetzung

Der Aufbau beschränkt sich in meinem Fall auf eine VM mit einem aktuellen Debian 9.8. Keine Angst, die Installation ist schnell gemacht und alle Schritte werden hier zum einfachen kopieren beschrieben.

Die Debian Grundinstallation

Die VM bekommt von mir 2 vCPUs, 4 GB RAM und eine 80 GB große VHDX zugewiesen. Ich nutze eine Generation 2-VM, bei der allerdings das Secure-Boot deaktiviert wurde, da Debian hier noch keine passenden Zertifikate vorhanden sind. Weiterhin sollten Sie darauf achten, dass die virtuelle Netzwerkkarte eine statische MAC-Adresse hat, da Debian es nicht so gerne hat, wenn sich die MAC-Adresse ändert. Falls es zu einer Änderung der MAC-Adresse kommt, kann es hier sein das diese dann als eth1 erkannt wird, eth1 hat keine Konfiguration usw...

Die eigentliche Installation

Hier gibt es eigentlich nicht viel zu beschreiben, es handelt sich um eine gewöhnliche Installation von Debian. Falls dies vollkommen unbekannt ist, gibt es haufenweise Anleitungen im Internet, z.B. von DigitalOcean oder anderen Howto-Seiten.
- Ich bevorzuge die "Install"-Variante ohne die grafische GUI, diese geht schneller von der Hand.
- Die Sprache bleibt bei mir auf Englisch, lediglich die Tastatur wird auf Deutsch gestellt.
- Die komplette Platte wird verwendet, kein Volume Manager, alles auf eine Partition
- Bei der Auswahl der Software wähle ich nichts aus außer SSH und die Standard-Systemtools (d.h. Desktop weg und Print Server weg)

Nach der Grundinstallation beginnen wir mit dem Download und der Installation der benötigten Pakete. Vorab aktualisieren wir die Paketquellen und das gesamte System, so das alles auf dem aktuellen Stand ist.

# Aktualisierung auf den neuesten Stand, Installation von ein paar benötigten Tools und Paketen
apt update && apt install mc htop nano -y && apt upgrade -y && apt dist-upgrade -y
apt-get install -y adduser libfontconfig

# Download der Setup-Dateien
cd /usr/src
wget wget https://dl.influxdata.com/influxdb/releases/influxdb_1.7.4_amd64.deb
wget https://dl.grafana.com/oss/release/grafana_6.0.2_amd64.deb

# Installation
dpkg -i influxdb_1.7.4_amd64.deb
dpkg -i grafana_6.0.2_amd64.deb

# Automatischer Start von Grafana zum Systemstart
/bin/systemctl daemon-reload
/bin/systemctl enable grafana-server

Nun haben wir die reine Grundinstallation abgeschlossen und kommen zur Konfiguration der beiden Applikationen. Dazu editieren wir zuerst die config-Datei der InfluxDB-Datenbank.

nano /etc/influxdb/influxdb.conf

In dieser Datei müssen wir nun den Bereich "HTTP" anpassen. Wir setzen "enabled" auf "true" und aktivieren den port "8086". Das Ergebnis sieht wie folgt aus:

Danach müssen wir den Influx-Dienst einmal durchtreten

service influxd restart

Nun wechseln wir in die Influx-Datenbank und legen einen neuen Benutzer sowie eine neue Datenbank an. "username" muss ersetzt werden durch einen beliebigen Username, ebenso "password" mit einem starken Passwort. Danach verlassen wir influxDB wieder.

influx
CREATE USER "username" WITH PASSWORD 'password' WITH ALL PRIVILEGES
CREATE DATABASE "Datenbankname"
exit

Eine manuelle Test-Verbindung zur Datenbank können wir auch herstellen, hierzu kann der influx-Befehl mit Parametern genutzt werden. Klappt dies, steht einer Nutzung eigentlich nichts mehr im Weg.

influx -username "username" -password "password"

Die Einrichtung von Grafana

Nachdem wir nun die Installation von Grafana und der Datenbank abschlossen haben, können wir mit der Einrichtung starten. Durch die Installation im vorherigen Schritt steht Grafana schon zur Verfügung und lauscht standardmäßig auf Port 3000. Schauen Sie kurz nach, mit welcher IP-Adresse ihr Linux-System online ist:

ip a s

Danach können Sie die Weboberfläche auf Port 3000 aufrufen und sich mit admin und admin anmelden. Sie werden direkt nach der ersten Anmeldung dazu aufgefordert, das Standard-Kennwort zu ändern. Tun Sie dies!

Anbindung der Datenbank-Quelle

Wir müssen nun die vorab installierte InfluxDB als Datenbankquelle hinzufügen, damit die Daten zur Visualisierung genutzt werden können. Direkt nach der ersten Anmeldung können wir die Option "Datenquelle hinzufügen" benutzen, alternativ geht es über das Menü auf der linken Seite.

In den Einstellungen müssen wir die folgenden Optionen angeben:

- Name: Hier geben wir der DB-Quelle einen Namen. z.B. InfluxDB

- URL: Hier tragen wir die lokale Adresse mit dem Port 8086 ein, den wir zuvor aktiviert haben in der Konfiguration: http://localhost:8086

- Auth: Hier wählen wir "with credentials" aus, damit wir eine Anmeldung an der Datenbank machen können.

- InfluxDB Details: Hier tragen wir den Namen der Datenbank, den Benutzernamen und das Kennwort ein, was wir im Vorfeld in der Influx-Datenbank angelegt haben.

Alle weiteren Optionen können wir leer lassen, diese werden an dieser Stelle nicht benötigt.

Nun haben wir eine Datenbank hinzugefügt. Diese Datenbank dient später als Quelle für die Performance-Daten, die wir visualisieren möchten. Zum aktuellen Zeitpunkt befinden sich allerdings noch keine Daten in dieser Datenbank, daher werden wir nun im nächsten Schritt dafür sorgen, dass Daten in die Datenbank gelangen.

Einen oder mehrere Server als Datenquelle hinzufügen

Um nun an die Daten der Windows S2D-Server zu kommen, nutzen wir ein PowerShell-Modul, welches die gewünschten Daten in die vorab eingerichtete Datenbank speichert. Ich beginne in meinem Fall mit dem ersten der beiden Knoten und richte ein kleines Test-Skript ein, welches ein paar Demo-Daten ausliest und speichert. Die Installation erfolgt in einer PowerShell:

Install-Module Influx

Nach der Installation benötigen wir ein kleines Skript, welches die Daten per Perfmon ausliest und in die entsprechende Datenbank schreibt. Anbei eine kleine txt-Datei mit dem Skript.

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

Sind alle Daten korrekt eingetragen, wird ein ersten Datenwert in die Datenbank geschrieben. Diesen Wert önnen wir uns nun in einem neuen Dashboard anzeigen lassen. Final wird es dann so sein, dass über einen geplanten Task kontinuierlich Daten in die Datenbank geschrieben werden, mit Hilfe dieser Punkte können wir uns dann einen Graph erzeugen.

Das erste Dashboard erzeugen

Wir wechseln nun zurück in die Grafana-Oberfläche und erzeugen ein neues Dashboard. Als erstes geben wir die Query-Daten ein, damit das Dashboard weiß, von wo und welche Daten es sich holen soll. Sobald die Daten korrekt eingetragen sind, können wir den einen erzeugten Punkt sehen.

Nachdem nun die korrekte Datenquelle angegeben wurde, können wir nun mit der Formatierung der Anzeige beginnen. Dazu wechseln wir in der linken Seitenleiste auf die Visualisierung.

Hier können wir allerlei Einstellungen vornehmen, die unsere Anzeige verändert und so anpasst, dass wir die Daten optimal sehen können. Ich stelle fast immer unter "Stacking & Null value" die Option "Connected" ein, damit die Punkte untereinander verbunden werden und es keine Null-Werte gibt (die kann es natürlich geben, aber wenn man die RAM-Größe beobachtet, wird diese ja nicht auf Null fallen, nur weil gerade in diesem Moment nichts gemessen wurde :) )

An dieser Stelle sind wir am Ende von Teil 1 angekommen, die Grund-Infrastruktur steht soweit. Im zweiten Teil werden wir uns anschauen, welche relevanten Perfmon-Werte wir uns anschauen und protokollieren sollten. Mit diesen Werten werden wir dann ein Dashboard bauen, welches uns die Latenzen und IOPS-Werte der Volumes anzeigt. Danke fürs Lesen und bis zum nächsten Mal :)

Jan Kappen
 

Jan Kappen ist ausgebildeter Fachinformatiker in der Richtung Systemintegration. Er hat seine Ausbildung im Sommer 2008 abgeschlossen und arbeitete bis August 2018 bei der Rachfahl IT-Solutions GmbH & Co. KG. Seit September 2018 arbeitet er als Senior Netzwerk- und Systemadministrator bei einem großen mittelständischen Unternehmen im schönen Sauerland. Jan Kappen ist unter anderen MCITP Server Administrator, Enterprise Administrator und Enterprise Messaging Administrator 2010 sowie MCTS für System Center Virtual Machine Manager 2008, Windows Server 2008 Active Directory, Windows Server Virtualization und Windows Server 2008 Network Infrastructure. Seit 2015 wird Jan Kappen im Bereich "File System Storage" bzw. "Cloud & Datacenter Management" für seine Expertise und seine Community-Arbeit mit dem MVP Award von Microsoft ausgezeichnet.

>