Navigation
Nouveautés
Solution de supervision avec Nagios en version 3.0.6:
Création de l'utilisateur et et des groupes adéquates au bon fonctionnement de Nagios :
adduser nagios --no-create-home --shell /bin/false groupadd nagcmd usermod -G nagcmd nagios usermod -G nagcmd www-data usermod -G nagios www-dataModifier le Home de l'utilisateur nagios :
vi /etc/passwdAllez à la dernière ligne et remplacer le /home/nagios par /usr/local/nagios puis quitter +enregistrer
Après décompression de l'archive de Nagios 3.0.6 :
Installer les dépendances :
aptitude install build-essential libgd2 libgd2-xpm libgd2-xpm-dev libgd-dev libgd-gd2-perl libgd-graph-perl libgd-graph3d-perl
Compiler :
./configure --with-gd-lib=/usr/lib --with-gd-inc=/usr/include --with-nagios-user=nagios --with-nagios-group=nagios --with-command-group=nagios make all make install make install-init make install-config make install-commandmode make install-webconf
Ajuster tout de suite le mail admin :
vi /usr/local/nagios/etc/objects/contacts.cfg
Création du mot de passe admin :
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
Démarrer le logiciel de supervision:
/etc/init.d/nagios start
Composition de /usr/local/nagios :
Procédure pour venir compléter les commandes basic de notre supervision à l'aide de plugins :
tar xvzf nagios-plugins-1.4.15.tar.gz cd nagios-plugins-1.4.15 ./configure --with-nagios-user=nagios --with-nagios-group=nagios --without-world-permissions make && make install
NDO est composé de deux modules: NDOMOD et NDO2DB.
NDOMOD doit être lancé sur le serveur Nagios et permet de récupérer les informations remontées par Nagios pour les transmettre via TCP (ou un socket Unix) vers NDO2DB.
Commencer par récupérer l'URL de la dernière version stable de ndoutils sur SourceForge :
cd /root/sources wget http://dfn.dl.sourceforge.net/sourceforge/nagios/ndoutils-1.4b9.tar.gz . tar xzf ndoutils-1.4b9.tar.gz cd ndoutils-1.4b9 ./configure --disable-pgsql --with-mysql-lib=/var/lib/mysql --with-ndo2db-user=nagios --with-ndo2db-group=nagios
Pour avoir le /usr/lib/mysql, il faut installer les librairies de MYSQL
aptitude install libmysqlclient15-devet
make
Copier les fichiers de conf générique:
cp src/ndomod-3x.o /usr/local/nagios/bin/ndomod.o cp src/ndo2db-3x /usr/local/nagios/bin/ndo2db chown nagios:nagios /usr/local/nagios/bin/ndo* chmod 774 /usr/local/nagios/bin/ndo*
Création de la base de données:
mysqladmin -u root -p create ndo mysql -u root -p mysql GRANT ALL ON ndo.* TO 'ndouser'@'localhost' IDENTIFIED BY 'ndopassword'; FLUSH PRIVILEGES; exit
Création des tables de la base de données NDO:
cd /root/source/ndoutils-1.4b9/db/ ./installdb -u ndouser -p ndopassword -h localhost -d ndo
IGNOREZ : DBD::mysql::db do failed: La table 'ndo.nagios_dbversion' n'existe pas at ./installdb line 51.
La configuration de NDO se fait par deux fichiers:
cd /root/sources/ndoutils-1.4b9/ cp config/ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg cp config/ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg chown nagios:nagios /usr/local/nagios/etc/ndo*Eiter les fichiers de conf :
vi /usr/local/nagios/etc/ndomod.cfg
instance_name=NAGIOS output_type=unixsocket output=/usr/local/nagios/var/ndo.sock tcp_port=5668 output_buffer_items=5000 buffer_file=/usr/local/nagios/var/ndomod.tmp
vi /usr/local/nagios/etc/ndo2db.cfg
ndo2db_user=nagios ndo2db_group=nagios socket_type=unix socket_name=/usr/local/nagios/var/ndo.sock tcp_port=5668 db_servertype=mysql db_host=localhost db_name=ndo db_port=3306 db_prefix=nagios_ db_user=ndouser db_pass=ndopassword
Nous allons configurer Nagios pour qu’il passe les informations automatiquement à NDOMOD.
vi /usr/local/nagios/etc/nagios.cfgCes 2 lignes suffisent :
event_broker_options=-1 broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg
Créer et ajouter le script de démarrage au Runlevel Config :
vi /etc/init.d/ndo2db
#!/bin/sh # # # chkconfig: 345 99 01 # description: Nagios to mysql # # Author : Gaëtan Lucas # Realase : 07/02/08 # Version : 0.1 b # File : ndo2db # Description: Starts and stops the Ndo2db daemon # used to provide network services status in a database. # status_ndo () { if ps -p $NdoPID > /dev/null 2>&1; then return 0 else return 1 fi return 1 } printstatus_ndo() { if status_ndo $1 $2; then echo "ndo (pid $NdoPID) is running..." else echo "ndo is not running" fi } killproc_ndo () { echo "kill $2 $NdoPID" kill $2 $NdoPID } pid_ndo () { if test ! -f $NdoRunFile; then echo "No lock file found in $NdoRunFile" echo -n " checking runing process..." NdoPID=`ps h -C ndo2db -o pid` if [ -z "$NdoPID" ]; then echo " No ndo2db process found" exit 1 else echo " found process pid: $NdoPID" echo -n " reinit $NdoRunFile ..." touch $NdoRunFile chown $NdoUser:$NdoGroup $NdoRunFile echo "$NdoPID" > $NdoRunFile echo " done" fi fi NdoPID=`head $NdoRunFile` } # Source function library # Solaris doesn't have an rc.d directory, so do a test first if [ -f /etc/rc.d/init.d/functions ]; then . /etc/rc.d/init.d/functions elif [ -f /etc/init.d/functions ]; then . /etc/init.d/functions fi prefix=/usr/local/nagios exec_prefix=${prefix} NdoBin=${exec_prefix}/bin/ndo2db NdoCfgFile=${prefix}/etc/ndo2db.cfg NdoRunFile=${prefix}/var/ndo2db.run NdoLockDir=/var/lock/subsys NdoLockFile=ndo2db.lock NdoUser=nagios NdoGroup=nagios # Check that ndo exists. if [ ! -f $NdoBin ]; then echo "Executable file $NdoBin not found. Exiting." exit 1 fi # Check that ndo.cfg exists. if [ ! -f $NdoCfgFile ]; then echo "Configuration file $NdoCfgFile not found. Exiting." exit 1 fi # See how we were called. case "$1" in start) echo -n "Starting ndo:" touch $NdoRunFile chown $NdoUser:$NdoGroup $NdoRunFile $NdoBin -c $NdoCfgFile if [ -d $NdoLockDir ]; then touch $NdoLockDir/$NdoLockFile; fi ps h -C ndo2db -o pid > $NdoRunFile if [ $? -eq 0 ]; then echo " done." exit 0 else echo " failed." $0 stop exit 1 fi ;; stop) echo -n "Stopping ndo: " pid_ndo killproc_ndo # now we have to wait for ndo to exit and remove its # own NdoRunFile, otherwise a following "start" could # happen, and then the exiting ndo will remove the # new NdoRunFile, allowing multiple ndo daemons # to (sooner or later) run #echo -n 'Waiting for ndo to exit .' for i in 1 2 3 4 5 6 7 8 9 10 ; do if status_ndo > /dev/null; then echo -n '.' sleep 1 else break fi done if status_ndo > /dev/null; then echo echo 'Warning - ndo did not exit in a timely manner' else echo 'done.' fi rm -f $NdoRunFile $NdoLockDir/$NdoLockFile ;; status) pid_ndo printstatus_ndo ndo ;; restart) $0 stop $0 start ;; *) echo "Usage: ndo {start|stop|restart|status}" exit 1 ;; esac # End of this scriptDonner lui les droits adéquates:
chown root:root /etc/init.d/ndo2db chmod 755 /etc/init.d/ndo2db update-rc.d ndo2db defaults
Démarrer Nagios et NDO et vérifier les logs:
/etc/init.d/nagios restart /etc/init.d/ndo2db start tail -f /usr/local/nagios/var/nagios.logVous devriez voir des retours du genre:
Event broker module '/usr/local/nagios/bin/ndomod.o' initialized successfully. Auto-save of retention data completed successfully.
Installer cette librairie :
apt-get install libssl-dev
Récupérer l'archive de la dernière version stable :
tar xzf nrpe-2.12.tar.gz cd nrpe-2.12 ./configure --enable-ssl make all make install-plugin
Du côté client, un paquet existe pour les distributions debian :
aptitude install nagios-nrpe-serverConfigurer l'accès pour que le serveur Nagios (IP :uniquement) puisse venir checker :
vi /etc/nagios/nrpe.cfg
Pour la supervision de serveurs ESX(i) de VMware :
Installer les modules PERL nécessaires:
perl -MCPAN -e shell cpan[1]> install Bundle::CPAN cpan[1]> reload CPAN cpan[1]> install Nagios::Plugin cpan[1]> install Crypt::SSLeay cpan[1]> install Compress::Zlib exit
Récupérer le vsphere SDK de VMware et installer:
cd /root tar xvzf VMware-vSphere-SDK-for-Perl-4.0.0-161974.i386.tar.gz cd vmware-vsphere-cli-distrib/Modifier le script perl vmware-install.pl pour DEBIAN:
if ( direct_command("cat /etc/*-release | grep -i ubuntu") || direct_command("cat /proc/version | grep -i ubuntu") ) { A CORRIGER EN : if ( direct_command("cat /etc/*-release | grep -i ubuntu") || direct_command("cat /proc/version | grep -i debian") ) {Installer les dépendances :
aptitude install perl-doc libxml-libxml-perlEnsuite l'install se déroule normalement en acceptant la licence:
./vmware-install.pl
Créer l'utilisateur et le groupe en lecture seule sur le serveur VMware : help
Déclarer les informations de connexion au moyen des variables :
vi /usr/local/nagios/etc/resource.cfg $USER11$=username $USER12$=password
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
/etc/init.d/apache2 restart
Vous n'arriver par à utiliser la section “3-D Status Map” de l'interface WEB de nagios ? Installer le plugin VRML sur votre navigateur internet : http://cic.nist.gov/vrml/cosmoplayer.html#AUTOMATIC
L'interface WEB de nagios est assez austère. Je vous invite a visiter ce site Internet afin de choisir un nouveau template afin de remplacer celui existant : http://exchange.nagios.org/directory/Addons/Frontends-%28GUIs-and-CLIs%29/Web-Interfaces/Themes-and-Skins
Pour installer un Template, rien de plus simple. Sur votre serveur Nagios, positionner vous dans le répertoire :
cd /usr/share/nagios
Télécharger le template choisi :
wget http://sourceforge.net/projects/arana-nagios/files/arana_style-1.0for-Nagios3x-ENG.zip
faire une sauvegarde du dossier nagios… au cas ou… :
cp -rf /usr/share/nagios /usr/share/nagios_backup
Extraire l'archive :
unzip arana_style-1.0for-Nagios3x-ENG.zip
remplacer le template par le nouveau :
mv arana_style/* ./
Et voilà, vous avez mis le nouveau template !
ssh-keygen -b 2048
ssh-copy -i /var/log/nagios/.ssh/id_rsa.pub root@192.168.1.1
ssh root@192.168.1.1 mkdir ~/scripts exit scp /usr/lib/nagios/plugins/check_dns root@192.168.1.1:~/scripts
/usr/lib/nagios/plugins/check_by_shh -H 192.168.1.1 -l root -C '~/scripts/check_dns -H test.local -s 192.168.1.50' -t 10
* Déclaration dans le fichier des dépendances:
vi /etc/nagios/dependance.cfg
define hostdependency{ host_name dns1.pcp.local dependent_host_name srv-web.pcp.local dependent_host_name srv-lan.pcp.local notification_failure_criteria d,u }
vi /etc/nagios/dependencies.cfg
define servicedependency{ host_name FAI-dns service_description Service DNS dependent_host_name dns1.pcp.local dependent_service_description Service DNS execution_failure_criteria w,u,c notification_failure_criteria w,u,c }
define host{ host_name srv-web.pcp.local use srv-web.pcp.local alias svr-web.pcp.local address 88.44.22.111 hostgroups ENTREPRISE parents dns1.pcp.local }