Papnase Geschrieben 10. Dezember 2013 Teilen Geschrieben 10. Dezember 2013 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crash2001 Geschrieben 10. Dezember 2013 Teilen Geschrieben 10. Dezember 2013 Also so ganz verstehe ich jetzt nicht, wo dein Problem liegt und was man daran nun verbessern können soll. Ist halt die Frage, was nicht funktioniert, wie gewünscht, was man gerne als Zusatzfunktion hätte, oder wo es Probleme gibt. Wenn ich das richtig verstehe, funktioniert es doch aktuell schon so wie es soll. Wenn ein Alarm kommt, wird die Notification gesendet und in der DB wird mittels PHP dann ein entsprechender Eintrag generiert. Dieser wird ausgelesen und anhand des Maximums wird dann die LED entsprechend auf eine Farbe gesetzt. Für außerhalb der Arbeitszeiten wird die Lampe entsprechend ausgeschaltet. Optimierungspotential sehe ich heir höchstens im Script selber, bzw darin, dass man die Daten direkt aus der Icinga-Datenbank ziehen könnte. Da Icinga auf Nagios aufsetzt (und somit eine (My)SQL-Datenbank nutzt), sollte das ja durchaus möglich sein. So gut kenne ich mich damit aber auch nicht aus, wie man jeweils an die entsprechenden Werte kommt. Das entsprechende Script, was die Daten aus der Datenbank ausliest, könnte man dann alle x Zeiteinheiten per CRON-Job auf der Icinga-Maschine (ich denke doch mal, dass das ein Linux Webserver sein wird, oder?) laufen lassen zwischen [start-Arbeitszeit] und [Ende-Arbeitszeit]. Nach [Ende-Arbeitszeit] könnte man dann einen Cron-Job laufen lassen, der die Lampe ausschaltet. So würde man sich die Notification von Icinga sparen und die zusätzliche Datenbank. Eventuell dann noch die Feiertage im Script oder in einer Input-Datei hinterlegen, damit die Lampe an diesen Tagen aus bleibt. Feiertags- und WE-Berechnung Meintest du solche Vorschläge? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Papnase Geschrieben 10. Dezember 2013 Autor Teilen Geschrieben 10. Dezember 2013 Es liegt kein Problem vor, nur bin ich unzufrieden mit der Lösung und dachte, dass vllt ein Anwendungsentwickler eine besser Lösung gefunden hätte die kleiner wäre. Das Problem bei der SQL DB von Icinga liegt daran, dass ich den Zustand der jeweiligen Host und deren Service nicht direkt abfragen kann, deshalb habe ich eine neue Datenbank angelegt. Ansonsten wäre deine Idee wirklich die Optimierung gewesen. Die Steuerungseinheit der Lichtanlage hat selbst eine Zeitschaltung inne, weshalb hierzu kein Cron-Job benötigt wird. Aber ja solche Vorschläge meinte ich. Ich hoffe es kommen noch weitere, so dass man eventuell, dass perfekte abgespeckte und einfachste Skript zusammen bekommt. Trotzdem vielen dank für deinen Vorschlag Crash2001 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.