======Vorwort und Voraussetzungen====== Dieser Artikel stellt ein "//Kochrezept//" für mein fertiges IPCop-Plugin **send_nsca** (//[[http://ipcop.stankowic-development.net]]//) dar 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: * IPCop-Entwicklungssystem, idealerweise über das folgende Abbild installiert: [[http://it-connect-unix.de/index.php?option=com_jdownloads&view=viewcategory&catid=18&Itemid=78]] * Quellcode von **libmcrypt**: [[http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download]] * Quellcode von **nsca** 2.7 oder 2.9+ (//je nach verwendeter NSCA-Version des Nagios/Icinga Monitoringssystems//): [[http://sourceforge.net/projects/nagios/files/nsca-2.x/]] ======libmcrypt====== 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 Nur wenn die Bibliothek erfolgreich installiert wurde, funktioniert die Übersetzung von **send_nsca** im nächsten Schritt! ======send_nsca====== 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 ======Tarball erstellen====== 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/* ======Installer====== 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 ======Packen und Aufräumen====== 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