NagiosQL ist eine Konfigurations-Oberfläche für Nagios auf LAMP-Basis. NagiosQL ist Teil der kommerziellen Nagios-Variante „Nagios XI“
Bei der Installation von NagiosQL wird davon ausgegangen, dass bereits Nagios, Nagiosgraph und NagVis entsprechend des Artikels „Installation Nagios 4, Nagiosgraph, NagVis, Loghost“ installiert wurden.
apt-get install mysql-server phpmyadmin
Es werden spezielle PHP Module benötigt:
Welche Module installiert sind, lässt sich mit php -m
anzeigen. Im vorliegenden Fall muss nur SSH nachinstalliert werden
apt-get install libssh2-php php5-curl
Abweichend von den Vorschlägen in der Installationsanleitung von NagiosQL wird die Verzeichnisstruktur analog zur Nagios-Installation unter /usr/local/nagiosql
angelegt.
#!/bin/bash # Verzeichnisse: mkdir /usr/local/nagiosql mkdir /usr/local/nagiosql/etc mkdir /usr/local/nagiosql/etc/hosts mkdir /usr/local/nagiosql/etc/services mkdir /usr/local/nagiosql/etc/backup mkdir /usr/local/nagiosql/etc/backup/hosts mkdir /usr/local/nagiosql/etc/backup/services # Berechtigungen: chown -R www-data.nagios /usr/local/nagiosql/etc # Berechtigungen der Nagios-Installation anpassen: chown -R www-data.nagios /usr/local/nagios/etc/nagios.cfg chown -R www-data.nagios /usr/local/nagios/etc/cgi.cfg chown -R www-data.nagios /usr/local/nagios/etc/resource.cfg chown -R www-data.nagcmd /usr/local/nagios/var/rw/nagios.cmd chmod 640 /usr/local/nagios/etc/nagios.cfg chmod 640 /usr/local/nagios/etc/cgi.cfg chmod 660 /usr/local/nagios/var/rw/nagios.cmd chgrp www-data /usr/local/nagios/bin/nagios chmod g+x /usr/local/nagios/bin/nagios
Kontrolle der /etc/php5/apache2/php.ini
(angegebene Parameter sollen gesetzt sein)
; vi /etc/php5/apache2/php.ini ;... file_uploads = On ;... session.auto_start = 0 ;... date.timezone = "Europe/Berlin" ;... ;;;;;;;;;;;;;;;;;;;;;; ; Dynamic Extensions ; ;;;;;;;;;;;;;;;;;;;;;; extension = ssh2.so extension = curl.so ; ...
Die eigentliche Apache-Config wird unter /etc/apache2/config-available/nagiosql.conf
angelegt. Bei der Zugriffsberechtigung wird direkt auf die Nagios-Authentifizierung zurückgegriffen, um einen einheitlichen Benutzer zu haben. Bei Bedarf kann natürlich auch eine eigene Berechtigungsstruktur aufgebaut werden.
# NAGIOSQL Alias /nagiosql "/usr/local/nagiosql/share" <Directory "/usr/local/nagiosql/share"> Options None AllowOverride None Order allow,deny Allow from all Require all granted # Order deny,allow # Deny from all # Allow from 127.0.0.1 # AuthName "Nagios Access" # AuthType Basic # AuthUserFile /usr/local/nagios/etc/htpasswd.users # Require valid-user </Directory>
Wie 'neuerdings' üblich wird die Config dann per Command aktiviert und die Config neu geladen:
a2enconf nagiosql service apache2 reload
NagiosQL wird nun entpackt und ins Webserververzeichnis /usr/local/nagiosql/share
verschoben und die Verzeichnisberechtigungen entsprechend angepasst.
cd /install tar xvf nagiosql_320.tar.gz mv nagiosql32 /usr/local/nagiosql/share chown -R www-data /usr/local/nagiosql/share chmod 750 /usr/local/nagiosql/share/config
NagiosQL sollte nun im Browser unter http://.../nagiosql
aufrufbar und dort der Installations Assistent sichtbar sein. In den Nun folgenden Dialogen sind lediglich die Kennwörter für MySQL und für den ersten NagiosQL-Benutzer zu hinterlegen. Außerdem sind die Verzeichnisse entsprechend der o.g. Anpassungen anzugeben. Die Haken für „Importiere Nagios Beispiel Konfiguration“ und „Erstelle NagiosQL Verzeichnisse“ werden gesetzt.
Die nagios.cfg muss angepasst werden, so dass Nagios zukünftig die Configurationsdateien von NagiosQL verarbeitet. Hierzu sind alle cfg_file
und cfg_dir
Einträge durch die folgenden zu ersetzen.
# vi /usr/local/nagios/etc/nagios.cfg # ... # NAGIOSQL cfg_file=/usr/local/nagiosql/etc/contacttemplates.cfg cfg_file=/usr/local/nagiosql/etc/contactgroups.cfg cfg_file=/usr/local/nagiosql/etc/contacts.cfg cfg_file=/usr/local/nagiosql/etc/timeperiods.cfg cfg_file=/usr/local/nagiosql/etc/commands.cfg cfg_file=/usr/local/nagiosql/etc/hostgroups.cfg cfg_file=/usr/local/nagiosql/etc/servicegroups.cfg cfg_dir=/usr/local/nagiosql/etc/hosts cfg_dir=/usr/local/nagiosql/etc/services # NAGIOSQL optional cfg_file=/usr/local/nagiosql/etc/hosttemplates.cfg cfg_file=/usr/local/nagiosql/etc/servicetemplates.cfg cfg_file=/usr/local/nagiosql/etc/servicedependencies.cfg cfg_file=/usr/local/nagiosql/etc/serviceescalations.cfg cfg_file=/usr/local/nagiosql/etc/hostdependencies.cfg cfg_file=/usr/local/nagiosql/etc/hostescalations.cfg cfg_file=/usr/local/nagiosql/etc/hostextinfo.cfg cfg_file=/usr/local/nagiosql/etc/serviceextinfo.cfg
Damit die Installation vollständig die Nagios-Installation findet, müssen im NagiosQL Webinterface unter Konfig-Domäne
noch die Pfade angepasst werden.
Nagios Command Datei: /usr/local/nagios/var/rw/nagios.cmd Nagios Binary Datei: /usr/local/nagios/bin/nagios Nagios Prozess Datei: /usr/local/nagios/var/nagios.lock
Ab Nagios 4 hat sich der Command zum Restart geändert. dementsprechend muss im NagiosQL in der Datei admin/verigy.php
die Zeile 345 angepasst werden.
# vi /usr/local/nagiosql/share/admin/verify.php # ... #$strCommandString = "[".mktime()."] RESTART_PROGRAM;".mktime(); # ALT $strCommandString = "[".mktime()."] RESTART_PROGRAM\n"; # NEU # ...
Da NagiosQL nicht an allen Stellen die neueste PHP-Syntax verwendet, kommt es im Apache2-error.log zu folgender Fehlermeldung.
PHP Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /usr/local/nagiosql/share/libraries/pear/HTML/Template/IT.php on line 1095
Wie in der Meldung schon vorgeschlagen, wird in der IT.php das preg_replace
durch preg_replace_callback
ausgetauscht.
// vi /usr/local/nagiosql/share/libraries/pear/HTML/Template/IT.php // ... /* ALT return preg_replace( "#<!-- INCLUDE (.*) -->#ime", "\$this->getFile('\\1')", $content ); */ // NEU return preg_replace_callback( "#<!-- INCLUDE (.*) -->#im", array($this, 'getFile'), $content ); // ...