Mithilfe von NSCA kann ein Host ein Nagios/Icinga Monitoringsystem über System-/Status-Veränderungen informieren. Dieser Mechanismus ist das exakte Gegenteil des herkömmlichen Prinzips von NRPE, da der Host Informationen selbst verschickt (mithilfe des send_nsca-Kommandos, um das es in diesem Artikel/Plugin geht) und Nagios/Icinga nicht „pollen“ muss. NSCA lässt sich für passive Systeme oder passive Checks (auch in Kombination mit aktiven Checks) verwenden.
Zwischen den Versionen 2.7 und 2.9 gibt es erhebliche Unterschiede, da die Packetgrößen verändert wurden (siehe auch http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=670373). Je nach NSCA-Erweiterung auf dem Nagios/Icinga Monitoringsystem muss die entsprechende Version verwendet werden.
Benötigt wird:
Eine Voraussetzung von send_nsca ist libmcrypt - diese wird zur Verschlüsselung der Nachrichten benötigt. Die Bibliothek muss zuerst einmal kompiliert und lokal installiert werden.
# cd libmcrypt-2.5.8 # ./configure --prefix=/opt ... # make ... # make install # echo "/opt/lib/" >> /etc/ld.so.conf # ldconfig && ldconfig -p|grep mcrypt libmcrypt.so.4 (libc6) => /opt/lib/libmcrypt.so.4 libmcrypt.so (libc6) => /opt/lib/libmcrypt.so
Das Configure-Skript wird mit einem Hinweis auf den alternativen Speicherort von libmcrypt hingewiesen, anschließend wird lediglich send_nsca und nicht das gesamte NSCA kompiliert. Wichtig ist, dass das kompilierte Programm seine Bibliotheken findet und den Selbsttest durchlläuft:
# cd nsca-VERSION # ./configure --with-mcrypt-inc=/root/dev/libmcrypt-2.5.8/include --with-libmcrypt-prefix=/opt/ ... # make send_nsca # ldd src/send_nsca linux-gate.so.1 => (0xb7775000) libmcrypt.so.4 => /opt/lib/libmcrypt.so.4 (0xb773d000) libnsl.so.1 => /lib/libnsl.so.1 (0xb7724000) libc.so.6 => /lib/libc.so.6 (0xb75c2000) /lib/ld-linux.so.2 (0xb7776000) # src/send_nsca |grep "Encryption Routines" Encryption Routines: AVAILABLE
Für das spätere Archiv wird ein Ordner angelegt, in welchem die später unterhalb /var/ipcop/addons/nsca einzufügenden Addon-Dateien in einem Tarball komprimiert werden.
# mkdir nsca-ipcop-VERSION # cd nsca-ipcop-VERSION # mkdir -p build/nsca/libs # cp /PFAD-ZU-NSCA-VERSION/src/send_nsca build/nsca/ # cp /PFAD-ZU-NSCA-VERSION/sample-config/send_nsca.cfg build/nsca/ # cp --preserve=all -r /opt/lib/* build/nsca/libs # cd build/ # tar cvfz ../nsca.tar.gz nsca/*
Herzstück des Addons ist ein Installationsskript, welches den send_nsca-Tarball unterhalb von /var/ipcop/addons entpackt und die notwendigen Eintragungen in /etc/ld.so.conf vornimmt. Mithilfe der Funktionen addtofiletail und removefromfile werden diese Eintragungen entsprechend maskiert, damit das Addons auch wieder sauber deinstalliert werden kann.
# echo "/var/ipcop/addons/nsca/libs" >> local.add # vi install #!/bin/bash # ipcop addon binary installer Ver 0.9b for IPCop 2.0 CMD="$1" # clear screen /usr/bin/tput clear # check if [ ! -e /usr/lib/ipcop/library.sh ]; then echo "Upgrade your IPCop, library.sh is missing" exit 1 fi . /usr/lib/ipcop/library.sh ismachine i486 if [ ${?} -ne 0 ]; then echo "This Addon is for i486 architecture only" exit 1 fi # error handling err() { echo " " echo "Error : $1 " echo " " echo "Choose your option:" echo " " echo "./install -i ---> to install" echo "./install -u ---> to uninstall" echo " " exit;exit; } # installation ai() { #create user /usr/sbin/useradd -d /dev/null -M -r -s /bin/false nagios #extract tarball tar xfz nsca.tar.gz -C /var/ipcop/addons > /dev/null #add libs path to ld cache configuration addtofiletail nsca local.add /etc/ld.so.conf #refresh ld cache ldconfig > /dev/null } # deinstallation au() { #kill nrpe and delete user/files /usr/bin/killall -KILL send_nsca 2> /dev/null rm -rf /var/ipcop/addons/nsca /usr/sbin/userdel nagios removefromfile nsca /etc/ld.so.conf #refresh ld cache ldconfig > /dev/null } case $CMD in -i|i|install) echo " " echo "Installing now ..." ai echo "Successfully done!" echo " " echo "NOTE: dont forget to check /var/ipcop/addons/nsca/send_nsca.cfg" echo " ";; -u|u|uninstall) echo " " echo "Deinstalling now ..." au echo "Successfully done!" echo " ";; *) err "Invalid Option";; esac sync #end of file ESC ZZ # chmod +x install
Letztendlich kann der Addon-Ordner (mit Ausnahme des build-Ordners) in einen Tarball verwandelt werden, damit das Addon komfortabel installiert werden kann:
# tar cfz nsca-ipcop-VERSION.tar.gz nsca-ipcop-VERSION/{local.add,install,nsca.tar.gz} # md5sum nsca-ipcop-VERSION.tar.gz > nsca-ipcop-VERSION.tar.gz.md5sum
Auf dem Entwicklungssystem können der vorhin temporär angelegte Eintrag in der /etc/ld.so.conf und die Daten unterhalb /opt entfernt werden:
# vi /etc/ld.so.conf /opt/ dd ESC ZZ # rm -rf /opt