====== Installation NagiosQL ======
NagiosQL ist eine Konfigurations-Oberfläche für Nagios auf LAMP-Basis. NagiosQL ist Teil der kommerziellen Nagios-Variante "Nagios XI"
===== Voraussetzungen =====
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:
* session
* MySQL (php5‐mysql)
* gettext
* filter
* ftp (optional – für FTP Verbindung zu entfernten Servern)
* SSH (PECL Modul – optional – für SSH/SCP Verbindung zu entfernten Servern)
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
===== Apache Config =====
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"
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
Wie 'neuerdings' üblich wird die Config dann per Command aktiviert und die Config neu geladen:
a2enconf nagiosql
service apache2 reload
===== Installation =====
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.
===== Anpassung nagios.cfg =====
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
===== Weitere Konfiguration =====
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
===== Nagios 4 - Anpassung verify.php =====
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
# ...
===== preg_replace depricated - Anpassung IT.php =====
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(
"##ime",
"\$this->getFile('\\1')",
$content
);
*/
// NEU
return preg_replace_callback(
"##im",
array($this, 'getFile'),
$content
);
// ...