Ndoutils
Die NDOUtils erlauben es Nagios Checkergebnisse in eine Datenbank zu speichern.
So kann man diese dann vergleichen oder in grafische Tools einbinden um z.B. eine Verlaufskurve darzustellen.
Voraussetzungen
Damit die NDO-Utils mit Nagios laufen, muss Nagios mit der „eventbroker“ Funktion kompiliert worden sein.
Desweiteren wird ein Datenbank-Server inkl. Developmentpaketen für die Ablage der aufgezeichneten Daten verwendet. Ich verwende hier den MySQL Datenbank-Server. Installiert wird diese einfach per
apt-get install mysql-server libmysqld-dev
Installation
Zunächst laden wir die NDO-Utils herunter und entpacken diese.
mkdir /data/ndoutils cd /data/ndoutils wget http://sourceforge.net/projects/nagios/files/ndoutils-1.x/ndoutils-1.4b9/ndoutils-1.4b9.tar.gz/download mv download ndoutils-1.4b9.tar.gz su nagios cd /tmp tar xfz ndoutils-1.4b9.tar.gz cd ndoutils-1.4b9 ./configure --enable-mysql make -j2 all exit make install
Nun noch die Datenbank anlegen, oder (weiter unten) upgraden.
mysql -uroot -p CREATE USER <BENUTZERNAME> IDENTIFIED BY '<PASSWORD>'; CREATE DATABASE <DATENBANK>; GRANT CREATE,SELECT,INSERT,UPDATE,DELETE ON <DATENBANK>.* TO '<BENUTZERNAME>'; quit
Die Tabellen in die Datenbank werden nun wie folgt gefüllt.
cd db ./installdb -u <BENUTZERNAME> -p <PASSWORD> -d <DATENBANK>
Zum Upgrade der Datenbank führt man folgendes aus:
cd db mysql -u<USERNAME> -p -D <DATENBANKNAME> < mysql-upgrade-<VERSION>.sql
NDO-Module installieren
Die Module steuern die NDO-Utils über die ndomod.cfg. So werden sie installiert.
cp /data/ndoutils/ndoutils-1.4b9/config/ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg
Nun sagen wir Nagios dass er beim starten den NDO-Eventbroker benutzen soll.
vi /usr/local/nagios/etc/nagios.cfg
Inhalt in die nagios.cfg bei den broker_modulen einfügen.
broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg
Ebenso wird hier auch diese Zeile benötigt:
event_broker_options=-1
NDO2DB Daemon
Nagios kann den Eventbroker nun laden aber noch nicht benutzen, da der NDO-Daemon nicht gestartet ist.
Damit dies jedesmal beim Booten vor dem Nagios-Start erfolgt, machen wir folgendes.
cp /data/ndoutils/ndoutils-1.4b9/config/ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg
Die ndo2db.cfg hat noch nicht angepasste Einträge. Folgende müssen noch angepasst werden.
db_name= db_prefix= db_user= db_pass=
Nun können wir den Daemon testweise starten.
/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg
Der Daemon muss unbedingt vor Nagios gestartet werden. Dies erreichen wir indem wir das Nagios-Init-Script editieren.
vi /etc/init.d/nagios
Hier tragen wir unmittelbar nach start)
(also vor echo -n „Starting nagios:“
) folgendes ein:
echo "Starting ndo2db:" /usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg
Damit man das Ganze auch stoppen und restarten kann noch dieses nach killproc_nagios nagios
bei stop))
eintragen:
echo "Stopping ndo2db:" killall ndo2db
Zuletzt
Ganz wichtig ist es die Dateiberechtigungen für die *cfg Dateien anzupassen, sonst kann NDO diese nicht lesen und somit keine
Verbindung zur Datenbank aufbauen.
chown -R nagios.www-data /usr/local/nagios/etc
Troubleshooting
Socket
Wenn in der /var/log/syslog
Fehlermeldungen kommen bzgl. dass sich ndo zu keinem socket verbinden kann oder „… socket already in use…“ dann folgendes tun.
killall ndo2db rm /usr/local/nagios/var/ndo2db.lock /usr/local/nagios/var/ndo.sock
Danach ndoutils einfach wieder starten.
/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg
Message queue
Wenn Meldungen in der /var/log/syslog
etwa wie
ndo2db: Message sent to queue. ndo2db: Warning: queue send error, retrying...
Dann muß ein Kernel Tuning vorgenommen werden (steht auch in der README
des Installationspaketes).
Hier mal in der /etc/sysctl.conf
folgendes Werte erhöhen. Wenn nicht vorhanden einfach unten einfügen.
kernel.msgmax = 131072000 kernel.msgmnb = 131072000 kernel.msgmni = 65536000