NagiosQL – Neustart von Nagios nicht möglich

Nach dem ersten Einpflegen von neuen Daten über NagiosQL in das System, sollte der Nagios Daemon neu gestartet werden, um die geänderten Konfigurationen zu übernehmen. Über den Verwaltungsdialog wurden die Konfigurationsdateien geprüft und geschrieben. Die Überprüfung der Dateien erfolgte ohne Fehler, sodass der Daemon neugestartet werden konnte. Das Betätigen der dafür vorgesehenen Schalfläche gab die Rückmeldung, dass der Neustart erfolgreich verlaufen ist.
Allerdings wurden weder die neu angelegten Hosts angezeigt, noch wurden andere eingestellte Änderungen sichtbar.
Daraufhin wurden alle getätigten Einstellungen nochmals kontrolliert und die Pfadangaben zu den Konfigurationsdateien auf ihre Richtigkeit hin geprüft. Ein Blick auf die Konsole ergab, dass alle Dateien ordnungsgemäß angelegt wurden.
Um eine fehlerhafte Konfiguration auszuschließen, wurde der von NagiosQL initiierte Kontrollbefehl

# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Manuell im System ausgeführt. Die Rückmeldung war fehlerfrei.
Anschließend wurde der Nagios Daemon ebenfalls händisch über die Konsole neu geladen.

# /etc/init.d/nagios reload

Dies funktionierte einwandfrei und alle Änderungen erschienen wie gewünscht auf der Weboberfläche.
Daraufhin wurde sich das Log des Nagios Daemons genauer angeschaut. Dort wird u.a. jeder Neustart des Dienstes vermerkt. Parallel dazu wurde versucht, den Dienst wie zu Anfang über die Weboberfläche zu starten. Dies wurde allerdings nicht im Log vermerkt.
Damit Nagios überhaupt Befehle von außerhalb entgegen nimmt, muss ein Parameter in der nagios.cfg angepasst werden.

check_external_commands=1

Dieser Eintrag war allerdings vorhanden, sodass die Funktion gegeben sein müsste.
Befehle, die nicht von Nagios selbst abgesetzt werden, werden in eine Datei geschrieben (/usr/local/nagios/var/rw/nagios.cmd). Nagios arbeitet diese Datei sofort ab, sobald eine Änderung erfolgt und prüft sie auf externe Kommandos, die ausgeführt werden sollen. Ein Blick auf das Änderungsdatum dieser Datei bestätigte, dass sie beschrieben wird, sobald der Neustart Button im NagiosQL betätigt wird.
Um einen Fehler dieser Datei auszuschließen, wurde das Kommando händisch in die Datei geschrieben.

# now=`date +%s`
# commandfile='/usr/local/nagios/var/rw/nagios.cmd'
# /usr/bin/printf "[%lu] RESTART_PROGRAMn" $now > $commandfile

Daraufhin startete der Daemon neu. Dies wurde korrekt im Log vermerkt.

[1423236025] EXTERNAL COMMAND: RESTART_PROGRAM;[1423235917]
[1423236025] PROGRAM_RESTART event encountered, restarting...
[1423236025] Nagios 4.0.8 starting... (PID=3890)

Daraus war zu schließen, dass der Fehler in dem zu übertragenden Befehl seitens NagiosQL lag. Die Datei /opt/nagiosql/admin/verify.php bildet das in PHP geschriebene Frontend der Nagios Steuerung ab. Im Bereich des Neustarts wurde der Befehl analysiert und die Ergebnisse der Übergabe im Frontend durch eine Codeänderung eingeblendet. Inhaltlich war der Befehl korrekt und passend zu dem händisch abgesetzten Befehl. Allerdings fehlte der Übergabe im Vergleich zum o.g. Befehl ein Zeilenumbruch (n). Der Neustart Befehl wurde auf der Konsole sowohl mit als auch ohne Zeilenumbruch abgesetzt. Erfolgreich war nur der mit besagtem Umbruch. Dieser scheint für den Daemon ein Zeichen zu sein, dass der abgesetzte Befehl komplett übergeben wurde. Nach Einfügen eines Umbruchs in das PHP Skript der Webseite und eines erneuten Tests konnte das Problem behoben werden.

Leave a comment