Überarbeitung notwendig
Es fängt wieder alles mit dem Download der NDO Utils an. Die Sourcen sind auf SourceForge zu finden.
Wie bei der Installation von Nagios auch, wird das Archiv entpackt und mit “./configure“ mit anschließendem „make“ übersetzt. Ein „make install“ gibt es bei der Version 1.2 noch nicht. Wichtig ist ab der Version 1.4x das ihr bei “.configure“ folgende Optionen mit angebt(Bsp. für SuSE mit MySQL 5.1):
./configure - -with-mysql-lib=/usr/lib/mysql - -enable-pgsql=no - -enable-mysql
Zum compilieren werden die Mysql Devel Pakete benötigt. Sind diese nicht vorhanden wird eine entsprechende Meldung beim ./configure ausgegeben.
Ab der Version 1.3.1 bietet NDO bereits Unterstützung für Nagios 3.x . Daher werden ndo2db und ndomod.o in 2 Versionen erstellt. Einmal mit “-2x“ und einmal mit “-3x“ als Prefix im Namen. Ihr müsst die jeweils zur Nagios Version passenden Dateien verwenden. Im weiteren lasse ich die Versionshinweise in den Dateinamen weg.
Nach erfolgreichem kompilieren liegen die fertigen Binarys im Verzeichnis src. Diese müssen nun noch manuell an passende Stellen kopiert werden. Wo die Dateien liegen ist eigentlich egal, die Pfade müssen nur in den CFG Dateien entsprechend angegeben werden.
Bitte auf die Berechtigungen achten!
Die Config Files liegen im Verzeichnis config. Wir brauchen die ndo2db.cfg und die ndomod.cfg.
Ein SQL Dump um die Datenbank anzulegen ist bei den NDO Utlis dabei und liegt im Verzeichnis „db“. Voraussetzung für die folgenden Schritte ist eine laufende MySQL-Datenbank. Zuerst wir eine neue Datenbank mit Namen „nagios“ angelegt:
mysqladmin -u root -p create nagios
Danach wird die neue DB mit Leben gefüllt. Der Dump db/mysql.sql wird eingespielt.
mysql -u root -p nagios < mysql.sql
In der ndoutil Version 1.4b7 empfiehlt es sich, noch folgendes SQL Script laufen zu lassen, da es sonst zu Problemen mit Unique Keys innerhalb der DB kommen wird. Die Datenbank lehnt dann Einträge ab und die SQL-Statements erscheinen in /var/log/messages und/oder /var/log/syslog als Fehler.
mysql -u root -p nagios < mysql-mods-1.4b7.sql
Nun benötigen wir noch einen Datenbank User. Hier der User „nagios“ mit Passwort „geheim“. Dazu wird wieder mysql als user root aufrufen um folgende 3 Befehle an die Datenbank abzusetzen.
User „nagios@localhost“ mit Passwort „geheim“ anlegen.
GRANT USAGE ON * . * TO 'nagios'@'localhost' IDENTIFIED BY 'geheim' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 ;
Rechte für den User zuweisen
GRANT SELECT , INSERT , UPDATE , DELETE ON `nagios`.* TO 'nagios'@'localhost';
und Mysql anweisen die Änderungen einzulesen.
FLUSH PRIVILEGES;
Bevor ndo2bd zum ersten mal gestartet werden kann muss die Config Datei ndo2db.cfg noch einmal angepasst werden.
Wichtig sind die Datenbank Parameter db_name, db_user und db_pass. Diese bitte an die eigenen Werte anpassen.
Sind alle Werte geprüft, kann ndo2db zum ersten mal gestartet werden.
ACHTUNG: Alles weiteren Befehle nur noch als nagios User ausführen. Nicht als root !
NDO2DB wir wie folgt gestartet:
/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg
Dabei legt ndo2db ein Socket /usr/local/nagios/var/ndo.sock an. In dieses Socket muss der Nagios Daemon schreiben können, daher ist es wichtig das ndo2db unter dem gleichen user wie Nagios läuft.
Ob ndo2bd läuft erkannt man zuerst an der Prozessliste.
ps -ef | grep ndo2db
Es sollte nun ein Prozess auftauchen. Zusätzlich muss ndo.sock angelegt worden sein.
Nachdem nun ndo2db auf Daten wartet, muss Nagios diese auch senden.
Dafür muss das NEB Modul ndomod.o geladen werden. Dies erfolgt über einen Eintrag in der nagios.cfg
broker_module=/usr/local/nagios/ndo/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg
Somit wird der Nagios Daemon angeweisen das Modul ndomod.o zu laden. Bevor nun Nagios neu gestartet wird sollte auf jeden Fall die ndomod.cfg kontrolliert werden.
Nach einem Nagios Neustart werde nun die Daten von ndomod.o in das Socket ndo.sock geschrieben, dort von ndo2db verarbeitet und in die Datenbank geschrieben.
Da jetzt eine Nagios Instanz mit ndo2db verbunden ist, müssen nun 2 ndo2db Prozesse laufen. Der Master Prozess unter PPID 1 und ein weiterer für jede Instanz.
nagios 2262 1 0 09:46 ? 00:00:00 /usr/local/nagios/bin/ndo2db -c /usr... nagios 2271 2262 0 09:46 ? 00:00:02 /usr/local/nagios/bin/ndo2db -c /usr...
Nagios Meldet das erfolgreiche laden von NDOMOD zusätzlich im nagios.log.
[1137662860] LOG VERSION: 2.0 [1137662860] ndomod: NDOMOD 1.2 Copyright (c) 2005-2006 Ethan Galstad (nagios@nagios.org) [1137662860] ndomod: Successfully connected to data sink. 0 queued items to flush. [1137662860] Event broker module '/usr/local/nagios/neb/ndomod.o' initialized successfully. [1137662860] Finished daemonizing... (New PID=18854)
Ob nun wirklich Daten in die Mysql Datenbank geschrieben werden lässt sich mit einem einfachen select prüfen.
mysql -u nagios -pgeheim nagios
mysql> SELECT check_type , state_type, current_state FROM nagios_hoststatus; +------------+------------+---------------+ | check_type | state_type | current_state | +------------+------------+---------------+ | 0 | 1 | 0 | | 0 | 1 | 1 | +------------+------------+---------------+ 2 rows in set (0.00 sec)
Mit diesem SELECT werden die Felder check_type , state_type und current_state aus der Tabelle nagios_hoststatus ausgelesen. Die Anzahl der zurückgelieferten Zeilen des SQL-Statements entspricht der Anzahl der bereits durch Nagios überwachten Hosts.