Vous êtes sur la page 1sur 19

Installation pas à pas de Nagios et de Centreon.

Avant d’installer Nagios, vous devez tout d’abord vous assurer que votre système est à jour,
installer apache et installer une base de données mysql.
Deux remarques importantes:
- Dans notre cas, Nagios sera installé sur une Debian (d'où l'utilisation d'Aptitude), mais sachez que
Nagios fonctionne sur la quasi-totalité des distributions.
- Au cours du temps, les librairies évoluent et montent en version. Si vous recevez un message
d'erreur lorsque vous tentez de récupérer une des librairies ci-dessous, pensez à utiliser l'outil apt-
cache search . Cette commande listera les packages disponibles. Pour plus d'info sur cette
commande, il y a une bonne documentation ici: http://doc.ubuntu-fr.org/apt-cache

Mise à jour du système:


# sudo apt-get update

# sudo apt-get upgrade

Build-essential regroupe les paquets nécessaires à la compilation de nos programmes et autres


logiciels:
(http://packages.debian.org/sid/build-essential)
# sudo apt-get install build-essential

Nagios présente ses résultats via une interface web. Nous devons donc installer un serveur web!
# sudo apt-get install apache2 wget

Nagios et ses plugins ne pourront pas fonctionner sans quelques librairies: on remarquera la
présence de BIND et de dnsutils, qui fournissent différents outils relatifs au DNS comme nslookup
ou dig
# sudo apt-get install bind9-host dnsutils libbind9-60 libdns50
libisc60 libisccc60 libisccfg60 liblwres60 libradius1 qstat
radiusclient1 snmp snmpd

Centreon a également besoin de librairies


# sudo apt-get install rrdtool mailx librrds-perl libapache2-mod-
php5 php5 php-pear php5-gd php5-ldap php5-snmp

Démarrez le serveur web:

# sudo apache2ctl start

Les librairies suivantes permettent l'affichage de graphiques dans l'interface web de Nagios.
# sudo apt-get install libgd2-noxpm-dev libpng12-dev libjpeg62
libjpeg62-dev

Installation de la base de données pour Centreon (une base de données MySQL):

# sudo apt-get install mysql-server

# sudo apt-get install php5-mysql

# sudo apt-get install libmysqlclient15-dev

Pour des raisons de sécurité, nagios est exécuté non pas en root mais par l’utilisateur nagios et par
le groupe nagiosgrp. C'est pourquoi on créé un utilisateur à qui l'on donne un mot de passe, on
l'ajoute à son groupe et on lui donne les droits nécessaires à l'utilisation de Nagios.
Ensuite, nous ajoutons l'utilisateur www-data(utilisateur d'Apache) à nagiosgrp pour qu'il ait accès
aux mêmes fichiers que nagios.
# sudo /usr/sbin/useradd nagios

# sudo passwd nagios

# sudo /usr/sbin/groupadd nagiosgrp

# sudo /usr/sbin/usermod -G nagiosgrp nagios

# sudo /usr/sbin/usermod -G nagiosgrp www-data

Rendez-vous sur nagios.org pour télécharger Nagios et ses plugins:

Vous pouvez aussi les télécharger en ligne de commandes :

# sudo -s

# cd /usr/src

# wget http://surfnet.dl.sourceforge.net/sourceforge/nagios/nagios-3.2.0.tar.gz

# wget http://kent.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.13.tar.gz

Compilation de Nagios depuis les sources


On décompresse et on installe le core:
# tar xzf nagios-3.2.0.tar.gz

# cd nagios-3.2.0

# ./configure --with-command-group=nagiosgrp

# make all

# make install

# make install-init

# make install-config

# make install-commandmode

Qu'avons-nous fait? Voyons en détails les commandes que vous avez tapé:

• make all : les sources sont compilées grâce aux outils compris dans buid-essential (que vous
avez installé dans la première partie).
• make install : cette commande installe le logiciel Nagios et les fichiers qui lui sont liés (ex:
les pages web de l'interface utilisateur).
• make install-init : un init script est créé dans /etc/init.d, ce qui permettra entre autres de
lancer Nagios via la commande /etc/init.d/nagios start.
• make install-config : cette commande copie des fichiers de configuration "sample" (qui
présentent la syntaxe type d'un fichier de configuration).
• make install-commandemode : certaine permissions appliquées sur le dossier les
commandes externes de Nagios sont modifiées.

On installe ensuite la configuration Apache qui sera utilisée par Nagios:


# make install-webconf
Pour accéder à certaines commandes au travers de l'interface web comme le redémarrage de Nagios,
nous devons autoriser l'utilisateur Apache à exécuter des commandes externes. Nous faisons de lui
l'administrateur grâce à la commande suivante (l'option -c signifie que l'on créé un nouveau fichier
de mots de passe):
# sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users
nagiosadmin
Saisissez le mot de passe de l utilisateur nagiosadmin (par lequel
vous accederez à l interface web de Nagios)
Redémarrons alors Apache pour appliquer ces modifications (remarquez l'utilisation de l'init script
qui a été créé automatiquement avec Apache: dans ce cas, nous n'avons pas eu à taper la commande
make install-init ):
# /etc/init.d/apache2 reload

Compilation des plugins Nagios depuis les sources

Après avoir récupéré les sources des plugins de Nagios (de la même manière que vous avez
récupéré Nagios lui-même), décompressez-les:
# cd /usr/src

# tar xzf nagios-plugins-1.4.13.tar.gz


Entrez ensuite dans le dossier que vous venez de créer, configurez les plugins pour qu'ils soient
possédés par l'utilisateur nagios et le groupe nagiosgrp et installez les:
# cd nagios-plugins-1.4.13

# ./configure --with-nagios-user=nagios --with-nagios-


group=nagiosgrp

# make

# make install

Premier test

On lance la commande de vérification des fichiers de configuration, une bonne habitude à prendre si
l'on ne veut pas se retrouver face à des messages d'erreurs avertissants que tel ou tel fichier de
configuration ne respecte pas la bonne syntaxe :
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Depuis l'apparition de Nagios 3, on peut remplacer la commande précédente par celle-ci:
# /etc/init.d/nagios checkconfig
Normalement ce message devrait apparaitre :
Total Warnings: 0

Total Errors: 0

Things look okay No serious problems were detected during the pre-
flight check

On peut lancer Nagios de deux manières:


démarrage manuel
# /usr/local/nagios/bin/nagios -d
/usr/local/nagios/etc/nagios.conf
Le processus Nagios est lancé. L'option -d signifie qu'on lance Nagios en mode daemon

démarrage automatique
# /etc/init.d/nagios start

Vous devriez alors pouvoir accéder à l’interface web via l’adresse:


http://localhost/nagios
Installation des NDOUTILS

Le problème quand deux très bonnes solutions cohabitent (ici, Nagios et Centreon), c'est qu'elles
utilisent parfois des standard différents: impossible de faire fonctionner Nagios et son interface web
de configuration sans passer par une base de données commune. Nagios y transferera les résultats
des tests qu'il a effectué et Centreon y modifiera les fichiers de configurations propres à Nagios.
Dans ce chapitre nous verrons comment installer NDOUtils et comment l'utiliser. NDOUtils est un
plugin de Nagios qui lui permet d'envoyer les résultats de ses tests et de les insérer dans la base de
données. La distinction entre ces deux étapes est importante, mais nous y reviendrons plus tard
(patience). Pour l'instant, nous installons la base de données qui fera le lien entre Nagios et
Centreon.

Installation de la base de données NDO


# mysqladmin -u root -p create ndo

# mysql -u root -p mysql

mysql> GRANT ALL ON ndo.* TO "ndouser@localhost" IDENTIFIED BY


"ndopassword";
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;


Query OK, 0 rows affected (0.00 sec)

mysql> exit

Qu'avez-vous fait? Revoyons ces commandes:


• mysqladmin -u root -p create ndo : vous avez executé la commande "create ndo " en
prenant l'identité de l'utilisateur root.
• mysql -u root -p mysql : vous avez ouvert la base de données mysql en tant
qu'administrateur. L'option -p est la forme contractée de -password (pour indiquer votre mot
de passe, renseignez le directement après l'option, sans espaces).
• GRANT ALL ON ndo.* TO "ndouser@localhost" IDENTIFIED BY "ndopassword"; :
tous les privilèges sur toutes les tables de la base ndo sont désormais accordés à l'utilisateur
local ndouser. C'est cet utilisateur qui effectue les opérations sur la base de donnée NDO.
• FLUSH PRIVILEGES; : les privilèges que vous avez ajoutés sont sauvegardés et
appliqués.

Installation du plugin NDOUtils


Comme je le disais plus haut, NDOUtils permet deux choses: envoyer les données et les insérer
dans la base. Ces deux tâches sont respectivement réalisées par NDOMOD et NDO2DB, les deux
composants de NDOUtils.
Installons d'abord le plugin: il faut récupérer l'archive des sources sur le site nagios.org, la
décompresser, compiler les sources et copier NDO2DB et NDOMOD dans le dossier
/usr/ocal/nagios/bin
# cd /usr/src

# wget http://prdownloads.sourceforge.net/sourceforge/nagios/ndoutils-1.4b9.tar.gz

# tar zxvf ndoutils-1.4b9.tar.gz

# cd ndoutils-1.4b9

# ./configure --disable-pgsql --with-mysql-lib=/usr/lib/mysql


--with-ndo2db-user=nagios --with-ndo2db-group=nagiosgrp

# make

# cp src/ndomod-3x.o /usr/local/nagios/bin/ndomod.o

# cp src/ndo2db-3x /usr/local/nagios/bin/ndo2db

# cp config/ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg

# cp config/ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg
Il faut modifier les fichiers de configuration de nos deux composants: ndomod.cfg et ndo2db.cfg
(modifier les parametres pour qu'ils correspondent à ce qui est écrit ci-dessous)
# vi /usr/local/nagios/etc/ndomod.cfg

instance_name=Central
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=nagiosgrp
socket_type=unix
socket_port=5668
db_servertype=mysql
db_name=ndo
db_port=3306
db_host=localhost
db_prefix=nagios_
db_user=ndouser
db_pass=ndopassword

#vi /usr/local/nagios/etc/nagios.cfg

event_broker_options=-1
broker_module=/usr/local/nagios/bin/ndomod.o
config_file=/usr/local/nagios/etc/ndomod.cfg

# chmod 774 /usr/local/nagios/bin/ndo*

# chown nagios:nagiosgrp /usr/local/nagios/bin/*

# chown nagios:nagiosgrp /usr/local/nagios/etc/ndo*

Il faut alors initialiser la base de données MySQL:


# cd db

# ./installdb -u ndouser -p ndopassword -h localhost -d ndo


Ensuite, vous devez automatiser le lancement de NDO grâce au script /etc/init.d/ndo2db qu'il vous
faut créer. En voici le contenu:
#!/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=nagiosgrp

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


On automatise le lancement de ndo2db:
# sudo update-rc.d ndo2db defaults
Update-rc.d met automatiquement à jour les liens vers les init scripts de type /etc/rc.d/ vers les init
scripts /etc/init.d/.

Une autre méthode pour automatiser le lancement serait de modifier la fichier /etc/init.d/nagios.
Ajoutez la ligne suivante avant la ligne "su - $NagiosUser -c "touch $NagiosVarDir/nagios.log
$NagiosRetentionFile"
su - $NagiosUser -c "/usr/local/nagios/bin/ndo2db -c
/usr/local/nagios/etc/ndo2db.cfg"
Ajoutez ensuite après la ligne "killproc_nagios nagios":
su - $NagiosUser -c "skill ndo2db"
ainsi, lorsque le service Nagios démarre, NDO démarre avec lui!

On lance ensuite NDO et on redémarre le serveur Nagios


# /etc/init.d/ndo2db start

# /etc/init.d/nagios restart
Enfin, petit bonus pour tous ceux qui souhaitent approfondir leurs connaissances de NDO, je vous
recommande la documentation officielle que vous trouverez ici.

Installation de CENTREON

Nagios est une solution très puissante, là-dessus nous sommes d'accord. Cependant, on peut lui
reprocher d'être très compliqué à configurer: fichiers texte par-ci par-là, on s'y perd très vite.

Heureusement, Centreon remédie à ce problème en fournissant une interface de configuration


agréable à l'oeil et bien organisée. Adieu les vagabondages dans les dossiers! De ce fait, tout
administrateur qui cherche à former son équipe sur Nagios, ou qui tout simplement n'aime pas
passer du temps dans les fichiers de configuration préférera utiliser cette solution.

Installation de Centreon
# sudo -s

# cd /usr/src

# wget http://download.centreon.com/index.php?id=143

# tar zxvf centreon-2.0.tar.gz

# cd centreon-2.0
On lance alors le script d’installation :
# ./install.sh –i
Un dernière étape consiste à modifier la base de donnée NDO pour qu'elle fonctionne de manière
optimisée avec Centreon (les commandes SQL sont très proches de celles décrites dans le chapitre
précédent):
# cd /usr/src/centreon-2.0/www/install

# mysql -u root -p ndo < ./createNDODB.sql

# mysql -u root -p

mysql> GRANT SELECT , INSERT , UPDATE , DELETE ON `ndo` . * TO


'ndouser'@'localhost' IDENTIFIED BY 'ndopassword';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;Query OK, 0 rows affected (0.00 sec)

mysql> exit

# cd /usr/src/centreon-2.0/
On finalise alors l’installation en passant par l’interface Web de Centreon :
http://IP de votre serveur/centreon/

On renseigne alors Centreon sur la base de données NDO

(pour toutes les autres pages de configuration, cliquez sur Next).


Vous arrivez sur la page d’administration… il ne vous reste plus qu’à configurer vos hotes et
services à surveiller !