Starterkit: Serverraum-Überwachung 2.0

Features

Beschreibung

Das Starterkit: Serverraum-Überwachung 2.0 ist ein Open Source Kit um Serverraum-Installationen zu überwachen. Das Basiskit ist mit folgenden Sensoren ausgestattet: Ambient Light Bricklet 3.0 (überwacht z.B. die Raumbeleuchtung), Humidity Bricklet 2.0 (überwacht Luftfeuchtigkeit), Temperature Bricklet 2.0 (überwacht die Temperatur) und ein PTC Bricklet 2.0 mit Pt100 Temperaturfühler (z.B. zum Überwachen der Temperatur in einem Server). Um Meldungen oder Fehlercodes anzeigen zu können wird das Kit bereits in der Basis Version mit einem E-Paper 296x128 Bricklet (schwarz/weiß/rot) und einem Segment Display 4x7 Bricklet 2.0 ausgeliefert.

Das Kit-Gehäuse kann direkt in einem 19" Server Rack befestigt werden (1HE). Mit weiteren Modulen des Tinkerforge Baukastensystems, wie zum Beispiel Bewegungsdetektoren, Ein-/Ausgabe Modulen (um Computer ein-/auszuschalten oder um Türen zu überwachen), kann das Kit flexibel an die eigenen Anforderungen angepasst werden.

Für einen eigenständigen Aufbau kann unser RED Brick oder ein Raspberry Pi mit dem HAT Brick zur Steuerung des Starterkit: Serverraum-Überwachung 2.0 verwendet werden. Für beide Fälle ist ausreichend Platz vorgesehen sowie extra Bohrungen für den Raspberry Pi vorhanden.

Das Gehäuse bietet zusätzlich die Möglichkeit die Verkabelung auf die Rückseite des Gehäuses zu verlegen sodass an der Front lediglich die Displays zu sehen sind und dadurch eine glatte Front entsteht.

Die Basis jeder Ausstattungsvariante ist das Standardkit und besteht aus folgendem Inhalt:

Das Kit kann in drei verschiedenen Ausführungen bestellt werden:

  1. Nicht-Eigenständige Überwachung (Standardkit + Ethernet Extension (mit PoE))

    Alle Sensoren des Kits können aus der Ferne von anderen Rechnern per Ethernet über die angebotenen APIs (C/C++, C/C++ für Mikrocontroller, C#, Delphi/Lazarus, Go, Java, JavaScript, LabVIEW, Mathematica, MATLAB/Octave, MQTT, openHAB, Perl, PHP, Python, Ruby, Rust, Shell, Visual Basic .NET) abgefragt werden. Somit können individuelle Lösungen einfach realisiert werden. Beispiele für Bash und Nagios/Icinga demonstrieren die Nutzungsmöglichkeiten.

  2. Eigenständige Überwachung für Raspberry Pi (Standardkit + HAT Brick, exkl. Raspberry Pi)

    Das Kit kann mit dem eigenen Raspberry Pi betrieben werden. Einfach den HAT Brick auf den Minicomputer stecken und die Bricklets anschließen. Bei dieser Zusammenstellung wird die Ethernet Verbindung des RaspPi genutzt um von außen auf den Aufbau zuzugreifen. Mit einem eigens geschriebenen Programm kann die eigene Überwachungslösung realisiert werden.

    Für eine schnelle Inbetriebnahme haben wir für die Nutzung eines Raspberry Pis bereits ein Beispielskript für Python erstellt, dass einfach auf dem RaspPi ausgeführt werden kann.

  3. Eigenständige Überwachung mit RED Brick (Standardkit + Ethernet Extension (mit PoE) + RED Brick)

    Wird zusätzlich ein RED Brick im Kit verbaut, so kann das Kit auch ohne externen Rechner betrieben werden. Über die Brick Viewer Software kann, ganz ohne Programmieraufwand, die eigene Überwachungslösung realisiert werden.

    Dazu müssen nur, mittels einfacher Schieberegler, für jeden Sensor Wertebereiche definiert werden. Wird der definierte Wertebereich verlassen, so kann unter anderem eine Benachrichtigung per E-Mail erfolgen. Es können Regeln sowohl für direkt angeschlossene Sensoren, aber auch für andere, über das Netzwerk verfügbare, Tinkerforge Sensoren konfiguriert werden. Intern läuft dazu eine Nagios-Installation, die über den Brick Viewer konfiguriert wird. Das Nagios Web Interface ist über die Ethernetverbindung des RED Bricks erreichbar und ermöglicht die Ansicht der aktuellen Messwerte und eventueller Probleme. Weitere Informationen können im RED Brick Kapitel der Serverraum-Überwachungsdokumentation gefunden werden.

    Erfahrene Nutzer können darüber hinaus die im Hintergrund laufende Nagios Installation modifizieren und über die Möglichkeiten des Brick Viewers hinaus konfigurieren.

Die Stromversorgung des Kits kann per Power over Ethernet (PoE) oder USB (z.B. USB Steckernetzteil) oder bei der Raspberry Pi Variante über die Stromversorgung des HATs mit einem entsprechenden Netzteil erfolgen.

Sowohl Software als auch Hardware des Kits können modifiziert werden. Das Gehäuse besteht, mit Ausnahme der pulverbeschichtetem Aluminium Frontblende, aus PMMA. Ausreichend Befestigungslöcher für verschiedene Bricks, Bricklets und den Raspberry Pi sind bereits vorhanden.

Zusätzlich gibt es noch eine Befestigungsmöglichkeit für ein Motion Detector Bricklet 2.0 an der Frontblende.

Technische Spezifikation

Eigenschaft Wert
Beleuchtungsstärke 0Lux - 64000Lux in 0,01Lux Schritten
Temperatur (Ambient) -40°C - 85°C in 0,01°C Schritten
Pt100 Sensor -20°C - 450°C
PTC Bricklet 2.0 0,03125°C (15Bit) Auflösung
Humidity Bricklet 2.0 0% - 100% relative Luftfeuchtigkeit
   
Abmessungen (L x B x H) 482 x 92 x 44mm (19.0 x 3.62 x 1.75")
Gewicht 250g

Ressourcen

Erste Tests, Firmware-Aktualisierung und Konfiguration

Als ersten Schritt sollten die Bricks und Bricklets getestet werden und deren Firmware gegebenenfalls aktualisiert werden.

Dazu muss der Brick Daemon und der Brick Viewer installiert werden.

Als nächstes sollte das PTC Bricklet 2.0 konfiguriert und der Temperaturfühler (2-Leiter) angeschlossen werden. Wie dies funktioniert ist hier und hier dokumentiert.

Anschließend wird die Ethernet Extension auf den Master Brick gesteckt und alle Bricklets angeschlossen. Der Master Brick wird per USB mit dem PC verbunden. Mit dem Brick Viewer können nun die Module getestet. Anschließend kann über den Brick Viewer bestimmt werden, ob alle Firmwares aktuell sind. Falls nicht so sollten diese aktualisiert werden (Bricks aktualisieren, Bricklets aktualisieren):

Serverraum-Überwachung Hardware Update im Brick Viewer

Im nächsten Schritt sollte jedes Modul überprüft werden. Im Brick Viewer besitzt jedes Modul einen Reiter über dem eine modulspezifische Ansicht geöffnet werden kann. Zeigen alle Ansichten sinnvolle Werte, funktioniert alles wie erwartet. Als nächstes sollte die Ethernet Extension konfiguriert werden. In den folgenden Beispielen ist diese auf den Hostnamen "ServerMonitoring" und DHCP konfiguriert. Zur Konfiguration muss der Master Brick Reiter geöffnet werden. Die weitere Konfiguration ist hier beschrieben.

Nach den Tests und der Konfiguration ist sichergestellt, dass die Hardware auch nach dem Einbau in das 19" Rack Gehäuse wie gewünscht funktioniert.

Konstruktion

Der Aufbau der Basisversion des Kits ist hier beschrieben.

RED Brick

Wenn das Kit zusammen mit einem RED Brick benutzt wird, kann Nagios auf dem RED Brick direkt über den Brick Viewer konfiguriert werden.

Nagios Konfiguration im Brick Viewer

Der Server Monitoring Service (benötigt RED Brick Image >= 1.6 und Brick Viewer >= 2.2.3) kann im Services Tab aktiviert werden.

Wenn der Server Monitoring Service aktiviert ist, ist es möglich Regeln hinzuzufügen. Eine Regel besteht aus dem Typ des Bricklets (Temperature, Ambient Light, Humidity oder PTC), dessen UID und einem Wertebereich für Warning und Critical. Es können so viele Regeln hinzugefügt und konfiguriert werden wie benötigt.

Es ist zusätzlich möglich automatische E-Mail-Benachrichtigungen für die Warning/Critical Bereiche zu aktivieren. Dazu muss einfach die Enable Email Notification Checkbox angeklickt und die benötigten Informationen eingetragen werden.

Durch Klicken des Save Buttons wird die Konfiguration auf dem RED Brick gespeichert. Nun kann über die Seite http://<red-brick-ip>/nagios/ oder http://<red-brick-ip>/nagios3/ (für RED Brick Image Version 1.9 und älter) der aktuelle Zustand von Nagios abgerufen werden.

Nagios Webseite

Die Standardeinstellung für Username:Password lautet nagiosadmin:tf. Das Passwort kann über die Console durch folgenden Befehl geändert werden:

sudo htpasswd -c -b /usr/local/nagios/etc/htpasswd.users nagiosadmin <PASSWORT>

RED Brick Image Version 1.9 und älter:

sudo htpasswd -c -b /etc/nagios3/htpasswd.users nagiosadmin <PASSWORT>

Jede der Regeln wird in Nagios als ein Service angezeigt. Die Übersicht aller Nagios Services kann über den Services Link in der Kategorie Current Status erreicht werden.

Raspberry Pi + HAT Brick

Bemerkung

Das Raspberry Pi Beispiel befindet sich noch in der Entwicklung

Für spezielle Anforderungen kann das Beispielprogramm nach den eigenen Vorstellungen angepasst werden. Standardmäßig sind folgende Regeln aktiviert:

  • TBD
  • TBD
  • TBD
  • TBD

Projekte

Es gibt verschiedene Anwendungen für das Starterkit: Serverraum-Überwachung 2.0. Nachfolgend werden Beispiele präsentiert, die als Startpunkt für eigene Projekte dienen können.

Einfaches Monitoring

In diesem Beispiel werden die Shell Bindings genutzt um die Sensoren des Kits auszulesen.

Enumerierung der Bricks und Bricklets ("Ist alles angeschlossen?"):

$ tinkerforge --host ServerMonitoring enumerate
uid=5VGUhR
connected-uid=0
position=0
hardware-version=2,1,0
firmware-version=2,4,10
device-identifier=master-brick
enumeration-type=available

uid=Jn6
connected-uid=5VGUhR
position=a
hardware-version=1,0,0
firmware-version=2,0,1
device-identifier=e-paper-296x128-bricklet
enumeration-type=available

uid=Jk3
connected-uid=5VGUhR
position=b
hardware-version=1,0,0
firmware-version=2,0,1
device-identifier=temperature-v2-bricklet
enumeration-type=available

uid=HyH
connected-uid=5VGUhR
position=c
hardware-version=1,0,0
firmware-version=2,0,1
device-identifier=ambient-light-v3-bricklet
enumeration-type=available

uid=Dkq
connected-uid=5VGUhR
position=d
hardware-version=1,0,0
firmware-version=2,0,6
device-identifier=humidity-v2-bricklet
enumeration-type=available

uid=6esErP
connected-uid=5VGUhR
position=1
hardware-version=2,1,0
firmware-version=2,4,10
device-identifier=master-brick
enumeration-type=available

uid=JmM
connected-uid=6esErP
position=a
hardware-version=1,0,0
firmware-version=2,0,2
device-identifier=motion-detector-v2-bricklet
enumeration-type=available

uid=Jop
connected-uid=6esErP
position=b
hardware-version=1,0,0
firmware-version=2,0,1
device-identifier=segment-display-4x7-v2-bricklet
enumeration-type=available

uid=J7d
connected-uid=6esErP
position=c
hardware-version=1,0,0
firmware-version=2,0,2
device-identifier=ptc-v2-bricklet
enumeration-type=available

Auslesen der verbundenen Sensoren (die UID ist anzupassen):

$ tinkerforge --host ServerMonitoring call temperature-v2-bricklet Jk3 get-temperature
temperature=2460

$ tinkerforge --host ServerMonitoring call ambient-light-v3-bricklet HyH get-illuminance
illuminance=410

$ tinkerforge --host ServerMonitoring call ptc-v2-bricklet J7d get-temperature
temperature=2389

Die Shell Bindings unterstützen die Ausführung von weiteren Shell Befehlen mit der --execute Option (siehe Shell Bindings für weitere Informationen). Das nachfolgende Skript zeigt ein Beispiel wie der Rückgabewert in Grad Celsius umgerechnet und anschließend in einer Variable für die weitere Benutzung gespeichert werden kann.

#!/bin/sh

HOST=ServerMonitoring
TEMP_UID=Jk3

temp=$(tinkerforge --host $HOST call temperature-v2-bricklet $TEMP_UID get-temperature\
       --execute "echo '{temperature} / 100' | bc -l | xargs printf '%.2f\n'")
echo $temp

Das nächste Skript zeigt, wie Text auf ein angeschlossenes E-Paper 296x128 Bricklet ausgegeben werden kann.

#!/bin/sh

HOST=ServerMonitoring
E_PAPER_UID=Jn6

tinkerforge --host $HOST call e-paper-296x128-bricklet $E_PAPER_UID fill-display 1
tinkerforge --host $HOST call e-paper-296x128-bricklet $E_PAPER_UID draw-text 0 0 4 2 0 $1
tinkerforge --host $HOST call e-paper-296x128-bricklet $E_PAPER_UID draw

Durch Kombination der des letzten Skripts (gespeichert als print_e_paper.sh) mit dem folgenden kann die aktuelle Temperatur auf dem E-Paper Bricklet angezeigt werden.

#!/bin/sh

HOST=ServerMonitoring
TEMP_UID=Jk3

temp=$(./tinkerforge_shell --host $HOST call temperature-v2-bricklet $TEMP_UID get-temperature\
       --execute "echo '{temperature} / 100' | bc -l | xargs printf '%.2f\n'")
./print_e_paper.sh "Temperature:$temp\xF8C"

Serverraum-Überwachung mit Nagios oder Icinga

Bemerkung

Ein fertiges Icinga Check Plugin welches von Netways getwartet wird kann im icinga exchange gefunden werden: https://exchange.icinga.com/netways/check_tinkerforge

Icinga und Nagios sind Computer Überwachungswerkzeuge. Icinga ist ein Fork von Nagios und gilt als rückwärtskompatibel zu Nagios. Die dokumentierten Beispiele beziehen sich auf die Nagios API sind aber ebenfalls mit Icinga kompatibel.

Beide Überwachungswerkzeuge nutzen Plugins, instantiiert als Service, um die Auslastung des Prozessors, die Speicherbelegung, spezifische Software Prozesse oder physikalische Werte wie die Temperatur zu überwachen.

In diesem Beispiel wird ein eigenes Plugin geschrieben welches die Temperatur überwacht. Mit ein paar Modifikationen kann dieses Plugin genutzt werden um andere Tinkerforge Module auszulesen und so eine spezifische Überwachung zu ermöglichen.

Icinga Screenshot

Die vollständige Projektbeschreibung kann hier hier gefunden werden.

Der Abschnitt über Erweiterungsmöglichkeiten beinhaltet weitere Nagios/Icinga Beispiele.

Erweiterungsmöglichkeiten

Gerne führen wir hier Mods, Erweiterungen oder Verbesserungen des Kits auf. Bitte gebt uns Bescheid, wir verlinken hier gerne eure Projekte.

Bewegungsmelder und Fehlercode Anzeige

Das 19" Gehäuse ist bereits mit einer Aussparung für ein Motion Detector Bricklet 2.0 versehen. Das Motion Detector Bricklet 2.0 kann dazu genutzt werden Bewegung im Server Raum zu detektieren. Mittels des Segment Display 4x7 Bricklets können spezifische Fehlercodes angezeigt werden. Außerdem ist es möglich mit dem E-Paper Bricklet den Fehlercode, selbst bei einem Stromausfall, dauerhaft anzuzeigen zu lassen.

Die vollständige Projektbeschreibung kann hier gefunden werden.

Erweiterte Version des Kits

Remote Ein/Aus Schalter

Ein Industrial Quad Relay kann dazu genutzt werden einen Computer Ein- bzw. Auszuschalten. Dazu muss nur der entsprechende Schalter des Computers mit einem der Relais des Industrial Quad Relay Bricklets überbrückt werden. Als Software kann eine modifizierte Variante der zuvor vorgestellten Beispiele genutzt werden. Eine Anleitung wie ein Schalter mit dem Quad Relay überbrückt werden kann, kann im Hardware Hacking für Anfänger Tutorial gefunden werden.

Kit Mit Industrial Quad Relay Bricklet

Serverschranktür-Überwachung mit Distance IR Bricklet

Martin Seener hat einen Check für Nagios entwickelt, der mittels Distance IR Bricklet überwacht, ob die Serverschranktür geöffnet wurde. Dazu ist das Distance IR Bricklet im Serverschrank montiert und misst die Distanz zur geschlossenen Tür. Ändert sich die Distanz signifikant wurde die Tür geöffnet.

Um einen passenden Schwellwert für den Check zu ermitteln wird über einen längeren Zeitraum die Standardabweichung der Messwerte des Distance IR Bricklets ermittelt. Auch dafür stellt Martin Seener ein Skript zur Verfügung.

Dieser Check ist der erste in einer Sammlung von Nagios Checks für Tinkerforge.