Inhaltsverzeichnis

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