Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
— |
computer:ipcop:nsca_kompilieren [2013/04/28 13:01] (aktuell) christian angelegt |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ======Vorwort und Voraussetzungen====== | ||
+ | <note>Dieser Artikel stellt ein "//Kochrezept//" für mein fertiges IPCop-Plugin **send_nsca** (//[[http://ipcop.stankowic-development.net]]//) dar</note> | ||
+ | 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. | ||
+ | |||
+ | <code> | ||
+ | # 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 | ||
+ | </code> | ||
+ | |||
+ | <note important>Nur wenn die Bibliothek erfolgreich installiert wurde, funktioniert die Übersetzung von **send_nsca** im nächsten Schritt!</note> | ||
+ | ======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: | ||
+ | <code> | ||
+ | # 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 | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ======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. | ||
+ | <code> | ||
+ | # 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/* | ||
+ | </code> | ||
+ | |||
+ | ======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. | ||
+ | <code> | ||
+ | # 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 | ||
+ | </code> | ||
+ | |||
+ | ======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: | ||
+ | |||
+ | <code> | ||
+ | # 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 | ||
+ | </code> | ||
+ | |||
+ | Auf dem Entwicklungssystem können der vorhin temporär angelegte Eintrag in der **/etc/ld.so.conf** und die Daten unterhalb /opt entfernt werden: | ||
+ | <code> | ||
+ | # vi /etc/ld.so.conf | ||
+ | /opt/ | ||
+ | dd | ||
+ | |||
+ | ESC ZZ | ||
+ | |||
+ | # rm -rf /opt | ||
+ | </code> |