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> | ||