Aus Linux-Magazin 06/2008

Ampel im Rechenzentrum ergänzt Nagios-Oberfläche

Ob es dem Netz gut geht, verrät eine clevere Kombination aus der Monitoringsoftware Nagios und einer selbst gebauten Ampel. Letztere zeigt plakativ, ob Hosts oder Dienste ausgefallen sind.

Wer viele Rechner und Dienste administriert, ist mit Nagios [1] gut beraten – die Software verrät stets, ob noch alle Komponente funktionieren (Abbildung 2). Die Monitoringlösung überwacht Computer, Netzverbindungen und Server und zeigt den aktuellen Zustand in einer Weboberfläche mit den Ampelfarben Grün (Okay), Gelb (Warning) und Rot (Critical). Schade nur, dass die Weboberfläche so wenig auffällig ist. Läuft im Netz alles friedlich, hat der Admin schnell das Browserfenster geschlossen und auch Nagios\’ Warn-Mails laufen Gefahr, in der generellen Mailflut abzutauchen.

Das geht besser, dachte sich der Autor dieses Beitrags und nahm die Ampel-Analogie kurzerhand wörtlich. Entstanden ist eine reale Ampel (Abbildung 1), die – gut sichtbar am Arbeitsplatz des Administrators oder auf einem Schaltschrank im Rechenzentrum postiert – jeden Anwesenden über den Netzstatus informiert und nebenbei kräftig Eindruck schindet. Sie stellt die Mühsal permanenter Betreuung viel plastischer dar als die Weboberfläche des Netzwerkmanagements, die sowieso nur der Administrator sieht.

Springt die Ampel von Grün auf Gelb oder Rot, weiß der Netzverwalter, dass er besser sofort den Browser anwirft und in Nagios nachforscht, was die Änderung verursacht hat. Leuchtet das Lichtzeichen hingegen in freundlichem Grün, darf er sich ruhig anderen Aufgaben widmen. Besonders morgens beim Betreten des Büros verspricht ein fröhlich-grünes Licht, dass der Tag stressfrei beginnt.

Abbildung 2: Der Netzwerkmonitor Nagios fragt regelmäßig den Zustand von Hosts und Diensten ab und zeigt das Resultat auf seiner Oberfläche in Ampelfarben – je grüner die Seite, desto besser.

Abbildung 2: Der Netzwerkmonitor Nagios fragt regelmäßig den Zustand von Hosts und Diensten ab und zeigt das Resultat auf seiner Oberfläche in Ampelfarben – je grüner die Seite, desto besser.

Blick in die Datenbank

Statt Tausender Einzelzustände wie die Weboberfläche zeigt die Ampelschaltung kurz und knapp den Gesamtstaus aller Hosts und Dienste. Es gilt zunächst, diesen Zustand ebenso zuverlässig wie einfach zu ermitteln. Das geht am besten, wenn die Monitoringsoftware ihre Daten in eine Datenbank schreibt.

Für Nagios bietet sich die Erweiterung NDO-Utils an. Hat eine Applikation Zugriff auf diese Datenbank, kann sie die zentralen Tabellen »hoststatus« und »servicestatus« auswerten; je nach Installation tragen diese noch das Präfix »nagios_«. Den Zustand aller Hosts bestimmt zum Beispiel folgende Anfrage:

SELECT current_state FROM nagios_hoststatus;

Der Wert 0 bedeutet dabei, dass der Host erreichbar ist, 1 steht für Probleme mit der Erreichbarkeit und 2 repräsentiert einen unbekannten Status. Der Status von Diensten ist analog zu ermitteln:

SELECT current_state FROM nagios_servicestatus;

Hier sind die vier Fälle 0 für Okay, 1 gleich Warnung, 2 kritischer Zustand und 3 unbekannter Status zu unterscheiden. Die Ampel reagiert nur auf problematische Zustände, die neu aufgetreten sind und die der Administrator noch nicht bearbeitet hat. Folglich lautet die vollständige Abfrage nach Hosts:

SELECT * FROM nagios_hoststatus
WHERE current_state > 0
AND problem_has_been_acknowledged = 0;

Wenn diese Abfrage irgendeine Antwort liefert, sollte die Ampel auf Rot schalten. Andernfalls interessiert der Zustand der Dienste. Die Abfrage in »nagios_servicestatus« ist eventuell doppelt zu stellen. Einmal mit dem Status 2 oder 3; gibt es hier Treffer, dann soll die Ampel Rot zeigen. Liefert die zweite Abfrage mit dem Status 1 einen Treffer, dann ist das gelbe Licht gefragt.

Tatsächlich ist die Abfrage nach problematischen Diensten komplexer, da sich alle Dienste auf einem Rechner im kritischen Zustand befinden, wenn ihr Rechner nicht mehr erreichbar ist. Hat der Administrator das eigentliche Problem zu Kenntnis genommen und für den Host »Acknowledged« geklickt, darf die Ampel nicht mehr rot leuchten – sonst würden neuerliche Ausfälle nicht mehr auffallen.

Die Verknüpfung zwischen Diensten und den Rechnern, auf denen sie laufen, funktioniert nur über die Konfigurationstabellen von Nagios, weil es in der Datendank keine direkte Referenz zwischen den Statustabellen der Dienste und der Hosts gibt (Abbildung 3 und [2]). Die komplette Abfrage nach kritischen Zuständen ist in Listing 1 abgedruckt.

Abbildung 3: Dieser Ausschnitt aus dem Entity-Relationship-Diagramm der NDO-Utils-Tabellen [2] zeigt, auf welchem Umweg der Host- und der Service-Status verknüpft sind.

Abbildung 3: Dieser Ausschnitt aus dem Entity-Relationship-Diagramm der NDO-Utils-Tabellen [2] zeigt, auf welchem Umweg der Host- und der Service-Status verknüpft sind.

Listing 1: Kritische
Dienste

01 SELECT * FROM ((nagios_servicestatus
02   INNER JOIN nagios_services
03     ON nagios_servicestatus.service_object_id
04        =nagios_services.service_object_id)
05   INNER JOIN nagios_hosts
06     ON nagios_services.host_object_id
07        =nagios_hosts.host_object_id)
08   INNER JOIN nagios_hoststatus
09     ON nagios_hosts.host_id
10        =nagios_hoststatus.hoststatus_id
11   WHERE nagios_servicestatus.current_state > 1
12     AND nagios_servicestatus.problem_has_been_acknowledged=0
13     AND nagios_hoststatus.problem_has_been_acknowledged=0;

Das Design der Tabellen dieser Datenbank bildet die Struktur der Konfigurations-, Log- und Statusdateien fast identisch ab. Das mag zwar simpel erscheinen, es erschwert aber Abfragen. Eine Datenbank sollte sich besser an Kriterien der Datenmodellierung orientieren.

Komponenten

Der Elektronikversandhandel bietet alle Bauteile, die ein bastelfreudiger Admin benötigt. Für solche Ampeln, auch Signalsäulen genannt, sind viele Lösungen möglich. Neben dem roten, gelben und grünen Licht bauchen sie vor allem eine Elektronik, die es dem Computer erlaubt, die Lampen per Programm zu steuern. Solche Steuerungen sind etwa über die RS-232-Schnittstelle realisierbar.

Der Autor hat die Bestandteile seiner Ampel bei Conrad Elektronik [3] bestellt. Als Ampel verwendet er die 24-Volt-Dauerlichtelemente aus dem Programm Kombisign 71 der Firma Werma. Ein fertiges Relaismodul, das der Rechner über die serielle Schnittstelle RS-232 steuert, findet sich unter der Conrad-Katalognummer 967720-62. Leider verträgt diese Baugruppe maximal 15 Volt, sodass zwei Netzteile, mit 12 und 24 Volt, nötigt sind. Die restlichen Kleinteile, etwa die Leuchtmittel, Anschlusselemente, ein Gehäuse für die Baugruppe (Europlatine) und ein serielles Kabel hat er gleich mitbestellt und insgesamt knapp 200 Euro bezahlt.

Einfach aufgebaut

Beim Zusammenbauen ist kein besonderes handwerkliches Geschick nötig. Die meisten elektrischen Verbindungen lassen sich mit den vorgesehenen Klemmen verschrauben. Nur wer die Stromversorgung mit Stecker und Buchse realisieren will, muss den Lötkolben zücken. Abbildung 4 zeigt den Blockschaltplan.

Abbildung 4: Das Steuermodul ist über ein RS232-Kabel mit dem Rechner verbunden und schaltet mit drei Relais die Ampelfarben. Steuerung und Ampel haben je eine eigene Spannungsversorgung.

Abbildung 4: Das Steuermodul ist über ein RS232-Kabel mit dem Rechner verbunden und schaltet mit drei Relais die Ampelfarben. Steuerung und Ampel haben je eine eigene Spannungsversorgung.

Fehlt dem Computer eine herkömmliche serielle Schnittstelle, dann hilft ein serieller Wandler für den USB-Anschluss. Die Konverter, etwa mit einem PL2303-Chip, erkennt der Linux-Kernel automatisch und stellt sie zum Beispiel als Schnittstelle »/dev/ttyUSB0« für Anwendungen zur Verfügung. Eine entsprechende Meldung über eine neues Gerät erscheint im Systemlog nach dem Einstecken des Adapters.

Damit die Kommunikation mit dem Relaismodul funktioniert, müssen etliche Parameter, zum Beispiel die Geschwindigkeit, passen. Ein »stty«-Aufruf kümmert sich darum:

stty -F /dev/ttyUSB0 19200 min 0 -icanon -ixon brkint imaxbel

Jeder Befehl für das Relaismodul besteht aus 4 Bytes. Das erste bezeichnet die Art des Befehls (Get, Set, …) und das zweite die Adresse des Moduls. Da nur ein Modul vorhanden ist, bleibt diese Adresse immer 1. Im dritten Byte übergibt der Rechner die Daten, wobei jedes Bit genau einem Relais entspricht. Im vierten fungiert eine simple XOR-Verknüpfung der ersten 3 Bytes als Prüfsumme:

echo -en '0Q7àì9?7


Wer viele Rechner und Dienste administriert, ist mit Nagios [1] gut beraten - die Software verrät stets, ob noch alle Komponente funktionieren (Abbildung 2). Die Monitoringlösung überwacht Computer, Netzverbindungen und Server und zeigt den aktuellen Zustand in einer Weboberfläche mit den Ampelfarben Grün (Okay), Gelb (Warning) und Rot (Critical). Schade nur, dass die Weboberfläche so wenig auffällig ist. Läuft im Netz alles friedlich, hat der Admin schnell das Browserfenster geschlossen und auch Nagios\' Warn-Mails laufen Gefahr, in der generellen Mailflut abzutauchen.


Das geht besser, dachte sich der Autor dieses Beitrags und nahm die Ampel-Analogie kurzerhand wörtlich. Entstanden ist eine reale Ampel (Abbildung 1), die - gut sichtbar am Arbeitsplatz des Administrators oder auf einem Schaltschrank im Rechenzentrum postiert - jeden Anwesenden über den Netzstatus informiert und nebenbei kräftig Eindruck schindet. Sie stellt die Mühsal permanenter Betreuung viel plastischer dar als die Weboberfläche des Netzwerkmanagements, die sowieso nur der Administrator sieht.


Springt die Ampel von Grün auf Gelb oder Rot, weiß der Netzverwalter, dass er besser sofort den Browser anwirft und in Nagios nachforscht, was die Änderung verursacht hat. Leuchtet das Lichtzeichen hingegen in freundlichem Grün, darf er sich ruhig anderen Aufgaben widmen. Besonders morgens beim Betreten des Büros verspricht ein fröhlich-grünes Licht, dass der Tag stressfrei beginnt.


<embed-inline size="medium" align="center" href="" />


<header level=3>Blick in die Datenbank</header>
Statt Tausender Einzelzustände wie die Weboberfläche zeigt die Ampelschaltung kurz und knapp den Gesamtstaus aller Hosts und Dienste. Es gilt zunächst, diesen Zustand ebenso zuverlässig wie einfach zu ermitteln. Das geht am besten, wenn die Monitoringsoftware ihre Daten in eine Datenbank schreibt.


Für Nagios bietet sich die Erweiterung NDO-Utils an. Hat eine Applikation Zugriff auf diese Datenbank, kann sie die zentralen Tabellen »hoststatus« und »servicestatus« auswerten; je nach Installation tragen diese noch das Präfix »nagios_«. Den Zustand aller Hosts bestimmt zum Beispiel folgende Anfrage:


<literal>
SELECT current_state FROM nagios_hoststatus;

Der Wert 0 bedeutet dabei, dass der Host erreichbar ist, 1 steht für Probleme mit der Erreichbarkeit und 2 repräsentiert einen unbekannten Status. Der Status von Diensten ist analog zu ermitteln:

SELECT current_state FROM nagios_servicestatus;

Hier sind die vier Fälle 0 für Okay, 1 gleich Warnung, 2 kritischer Zustand und 3 unbekannter Status zu unterscheiden. Die Ampel reagiert nur auf problematische Zustände, die neu aufgetreten sind und die der Administrator noch nicht bearbeitet hat. Folglich lautet die vollständige Abfrage nach Hosts:

SELECT * FROM nagios_hoststatus
WHERE current_state > 0
AND problem_has_been_acknowledged = 0;

Wenn diese Abfrage irgendeine Antwort liefert, sollte die Ampel auf Rot schalten. Andernfalls interessiert der Zustand der Dienste. Die Abfrage in »nagios_servicestatus« ist eventuell doppelt zu stellen. Einmal mit dem Status 2 oder 3; gibt es hier Treffer, dann soll die Ampel Rot zeigen. Liefert die zweite Abfrage mit dem Status 1 einen Treffer, dann ist das gelbe Licht gefragt.

Tatsächlich ist die Abfrage nach problematischen Diensten komplexer, da sich alle Dienste auf einem Rechner im kritischen Zustand befinden, wenn ihr Rechner nicht mehr erreichbar ist. Hat der Administrator das eigentliche Problem zu Kenntnis genommen und für den Host »Acknowledged« geklickt, darf die Ampel nicht mehr rot leuchten – sonst würden neuerliche Ausfälle nicht mehr auffallen.

Die Verknüpfung zwischen Diensten und den Rechnern, auf denen sie laufen, funktioniert nur über die Konfigurationstabellen von Nagios, weil es in der Datendank keine direkte Referenz zwischen den Statustabellen der Dienste und der Hosts gibt (Abbildung 3 und [2]). Die komplette Abfrage nach kritischen Zuständen ist in Listing 1 abgedruckt.

Abbildung 3: Dieser Ausschnitt aus dem Entity-Relationship-Diagramm der NDO-Utils-Tabellen [2] zeigt, auf welchem Umweg der Host- und der Service-Status verknüpft sind.

Abbildung 3: Dieser Ausschnitt aus dem Entity-Relationship-Diagramm der NDO-Utils-Tabellen [2] zeigt, auf welchem Umweg der Host- und der Service-Status verknüpft sind.

Listing 1: Kritische
Dienste

01 SELECT * FROM ((nagios_servicestatus
02   INNER JOIN nagios_services
03     ON nagios_servicestatus.service_object_id
04        =nagios_services.service_object_id)
05   INNER JOIN nagios_hosts
06     ON nagios_services.host_object_id
07        =nagios_hosts.host_object_id)
08   INNER JOIN nagios_hoststatus
09     ON nagios_hosts.host_id
10        =nagios_hoststatus.hoststatus_id
11   WHERE nagios_servicestatus.current_state > 1
12     AND nagios_servicestatus.problem_has_been_acknowledged=0
13     AND nagios_hoststatus.problem_has_been_acknowledged=0;

Das Design der Tabellen dieser Datenbank bildet die Struktur der
Konfigurations-, Log- un

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 3 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben