Benutzer-Werkzeuge

Webseiten-Werkzeuge


computer:ipcop:nsca_kompilieren

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

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>​
computer/ipcop/nsca_kompilieren.txt · Zuletzt geändert: 2013/04/28 13:01 von christian