Guten Tag liebe IT-Kollegen,
ich stehe derzeit vor einen persönlich Problem. Im Vorwege möchte ich anmerken, dass meine derzeitige Lösung funktioniert, jedoch bin ich mit dieser nicht wirklich zufrieden. Es gibt bestimmt einen einfacheren Weg, der sich mir jedoch nicht erschließt.
Nun zu dem Problem:
Wir setzen in unseren Unternehmen die Monitoring-Software Icinga ein. Außerdem haben wir eine Lichtsteuerungs-Anlage, die die LED am Empfang steuert (Farbe ändern, Deckkraft, etc.). Hierzu habe ich nun im Icinga zwei Notififications erstellt, die jeweils eine PHP-Datei aufrufen. Die gesendeten Daten vom Icinga die als Notification übergeben werden, werden in den PHP-Dateien übergeben.
Notification 1: läuft während der Geschäftszeiten (Mo. - Fr. 8-18)
Notification 2: läuft außerhalb der Geschäftszeiten
Die PHP-Dateien verbinden sich mit einer Datenbank die nur aus einer Tabelle besteht. Die Tabelle sieht wie folgt aus:
Tableheader: Hostname
Typ: varchar(255)
Tableheader: Service
Typ: varchar(255)
Tableheader: Status
Typ: Int
Der Hostname ist der Client-/Server-/Gerätename, während der Service den jeweiligen Service des Host wieder gibt. Sollte die Notification kein Service sein, sondern der Host selbst (z.B. Host Down) wird der Service als Host abgespeichert. Der Status wird in einen numerische Wert abgespeichert.
DOWN u. Critical = 3
Warning = 2
OK u. UP = 1
Acknowlegedt = 0
Durch eine Abfrage wird der Übergebene Wert (z.B. Down) in den numerischen Wert gewandelt.
Am Ende der PHP-Datei die während der Geschäftszeiten aufgerufen wird, kommt eine Abfrage an die Datenbank, welchen Wert die höchste Zahl in der Row Status hat. Je nachdem, wie hoch dieser Wert ist, wird eine URL geöffnet, die die Farbe der Lichtanlage verändert/beibehält. (3= Rot, 2=Gelb, 1 und 0 = blau).
Die zweite Notification dient lediglich dazu, dass die Lichtanlage ausgeschaltet bleibt. Die Lichtanlage schaltet zum Ende der Geschäftszeiten die LED aus (Farbe = schwarz), da sie somit keine Stromkosten verursachen. Jedoch muss die Datenbank weiter befüllt werden, da ein Problem um 17:59 auftauchen kann, aber um 18:01 gelöst sein kann.
Jetzt zu meiner Frage.
Das muss doch bestimmt noch einfacher gehen.
Ich wäre für jeden Vorschlag dankbar und würde auch Fragen bezüglich des Skriptes beantworten. Und sry für den dicken Schinken.