Hallo Freunde der Sonne,
kennt Ihr das auch? Irgendwelche Namen wurden umbenannt und die halbe Nagios-Konfiguration stimmt nicht mehr? Oder allgemein stört das Umbenennen? Im absoluten Extremfall sollen Leute fern ab der Kommando-Zeile Updates im Nagios vornehmen und haben keine Eingabe-Möglichkeit oder sollten am besten sogar gar nicht erst die Kommando-Zeile des Nagios-Hosts erreichen?
Hier die Lösung: ein Konfigurator der als Website eine Nagios-Konfiguration generiert und im besten Falle diese sogar einspielt.
Installation Web-Konfigurator Nagios (nconf)
Anforderungen:
Webserver, SSL-Support, PHP, PHP-MySql-Support, MySQL-Datenbank
yum install httpd mod_ssl php php-mysql mysql-server
Download von nconf (intern):
ftp://mirror.prolan-gmbh.de/nagios/nconf-1.3.0-0.tgz
Download von nconf (offiziell):
http://sourceforge.net/projects/nconf/files/nconf/1.3.0-0/nconf-1.3.0-0.tgz/download
Quelle: Nagios-Exchange – nconf-Addon
http://exchange.nagios.org/directory/Addons/Configuration/NConf/details
Download auf den Nagios-Host/entpacken:
cd /usr/local/nagios
wget http://sourceforge.net/projects/nconf/files/nconf/1.3.0-0/nconf-1.3.0-0.tgz/download
tar xvzf nconf-1.3.0-0.tgz
rm -f nconf-1.3.0-0.tgz
cd ./nconf
Überprüfung der Dienste:
service httpd start
service mysql start
ntsysv
Setzen des Root-PW der MySQL-Installation:
mysqladmin -u root password ‚<Passwort>‘
Anlegen einer Datenbank und setzen eines Benutzers und dessen Berechtigungen für nconf:
mysql -u root -p
Und folgende Query’s abarbeiten:
CREATE DATABASE nagios_nconf;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER ON nagios_nconf.*
TO ’nconf’@’localhost‘ IDENTIFIED BY ‚<Passwort nconf>‘;
Hinzufügen von nconf im Webserver:
nano /etc/httpd/conf.d/nagios.conf
Folgendes virtuelles Verzeichnis hinzufügen zur Default-Website:
Alias /nconf „/usr/local/nagios/nconf“
<Directory „/usr/local/nagios/nconf„>
SSLRequireSSL
Options None
AllowOverride None
Order allow,deny
Allow from all
# 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>
Neu laden der Konfiguration im Apache:
service httpd reload
Nun sollten die Berechtigungen im nconf-Verzeichnis für den Schreibzugriff überprüft werden:
cd /usr/local/nagios/nconf
ls -l
chown nagios * -R
chgrp nagios * -R
chgrp apache ./config ./output ./static_cfg ./temp -R
chmod ug=rwx ./config ./output ./static_cfg ./temp
chgrp apache /usr/local/nagios/bin/nagios
chmod ug=rwx /usr/local/nagios/bin/nagios
Bearbeiten der Konfiguration von nconf:
nano /usr/local/nagios/nconf/config/nconf.php
Hier folgende Zeilen prüfen:
# The directory where NConf is located
define(‚NCONFDIR‘, ‚/usr/local/nagios/nconf‘);
# The directory of the nagios binary
define(‚NAGIOS_BIN‘, ‚/usr/local/nagios/bin/nagios‘);
Bearbeiten der Deployment.ini
nano /usr/local/nagios/nconf/config/deployment.ini
Hier müssen folgende Zeilen freigeschaltet bzw. angepasst werden:
;; LOCAL deployment ;;
[extract config]
type = local
source_file = „/usr/local/nagios/nconf/output/NagiosConfig.tgz“
target_file = „/var/tmp/“
action = extract
[copy collector config]
type = local
source_file = „/var/tmp/Default_collector/“
target_file = „/usr/local/nagios/etc/nagios/“
action = copy
[copy global config]
type = local
source_file = „/var/tmp/global/“
target_file = „/usr/local/nagios/etc/global/“
action = copy
;[copy nagios.cfg]
;type = local
;source_file = „/tmp/static_cfg/nagios.cfg“
;target_file = „/etc/nagios/nagios.cfg“
;action = copy
;reload_command = „/etc/rc.d/init.d/nagios reload“
Folgende Vorbereitungen sollten im Nagios-Konfigurations-Bereich getätigt werden:
(die Deployment-Konfiguration kopiert ihre Konfiguration in neue Unterordner)
mkdir /usr/local/nagios/etc/global
mkdir /usr/local/nagios/etc/nagios
chown nagios /usr/local/nagios/etc/global /usr/local/nagios/etc/nagios
chgrp apache /usr/local/nagios/etc/global /usr/local/nagios/etc/nagios
chmod ug=rwx /usr/local/nagios/etc/global /usr/local/nagios/etc/nagios
Nun sollten die neuen Ordner von der Nagios-Konfiguration eingebunden werden:
nano /usr/local/nagios/etc/nagios.cfg
Folgende Zeilen überprüfen:
# OBJECT CONFIGURATION FILE(S)
# These are the object configuration files in which you define hosts,
# host groups, contacts, contact groups, services, etc.
# You can split your object definitions across several config files
# if you wish (as shown below), or keep them all in a single config file.
# You can specify individual object config files as shown below:
#cfg_file=/usr/local/nagios/etc/objects/commands.cfg
#cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
#cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
#cfg_file=/usr/local/nagios/etc/objects/templates.cfg
# Definitions
cfg_dir=/usr/local/nagios/etc/global
# Definitions for monitoring the local (Linux) host
#cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
# Definitions for monitoring a Windows machine
#cfg_file=/usr/local/nagios/etc/objects/windows.cfg
# Definitions for monitoring a router/switch
#cfg_file=/usr/local/nagios/etc/objects/switch.cfg
# Definitions for monitoring a network printer
#cfg_file=/usr/local/nagios/etc/objects/printer.cfg
# Config
cfg_dir=/usr/local/nagios/etc/nagios
Nun kann nconf eine Konfiguration in Nagios überschreiben,
jetzt sorgen wir für die zyklische Übernahme der Konfiguration in Nagios per: crontab.
nano /etc/crontab
Hier fügt man diese Zeile hinzu um alle 15min die Konfiguration updaten zu lassen:
*/15 * * * * root run-parts /etc/cron.spec
Im crontab ist nun hinterlegt, dass alle 15min alle Skripte dieses Ordners ausgeführt werden sollen,
also legen wir diesen Ordner an:
mkdir /etc/cron.spec
Und erstellen folgende Datei in diesem Unterordner:
„/etc/rc.d/init.d/nagios reload“ > /etc/cron.spec/reload_nagios.cron
Jetzt die Berechtigungen anpassen, damit die Datei als ausführbares Skript gewertet wird:
chmod go=rx /etc/cron.spec/reload_nagios.cron
Zu guter Letzt wird der crontab-Dienst neugestartet damit die Konfigurations-Änderung übernommen wird:
service crond restart
Am Ende unserer Reise starten wir die installation von nconf über den Browser und geben die Daten für die Datenbank-Verbindung an:
https://<Server>/nconf/install.php
Folgender Arbeitsablauf sollte nun gewährleistet sein:
- Anlegen einer Konfiguration in nconf
- Überprüfen dieser durch das nagios-Binary
- Ausrollen dieser durch PHP/nconf
- automatische Übernahme alle 15min dieser durch crontab
Falls es jemand bis hierher geschafft hat, Glückwunsch – hat es geklappt?