Ce document couvre l’installation d’un serveur de supervision sur Linux. Il est possible d’utiliser n’importe quelle distribution. Néanmoins, pour la production, nous préconisons cette mise en place sur la distribution Ubuntu Server LTS (6.0.6 au moment de la rédaction de ce document) pour sa dimension “Entreprise Ready” et son suppport gratuit assurée par Canonical pour une durée de 5 ans. Cette distribution représente un bon compromis paquets récents, sécurité (le compte root est désactivé) et stabilité.
A la fin de l’installation, le serveur doit contenir l’ensemble des programmes et librairies nécessaires au fonctionnement de Nagios en production. Ne sera pas aborder l’installation des programmes satellites de la supervision comme la gestion des configurations, des changements, ntop, smokeping…) Par contre, pour nos besoins, nous couvrirons l’installation à partir des sources de :
Notre serveur comprendra un mix de programmes installés par la commande apt-get mais aussi de paquets compilés à partir des sources de façon à contrôler les paramètres d’installation de ces programmes et de pouvoir les mettre à jour plus rapidement (patches et correctifs mineurs)
Nous n’allons pas couvrir en détail l’installation de la distribution Linux. Il suffit de choisir une installation de serveur LAMP et de suivre les indications. Pour que cette installation soit opérationnelle, il convient d’exécuter les commandes suivantes :
sudo apt-get update sudo apt-get upgrade sudo apt-get install openssh-server
Ces commandes mettent à jour l’ensemble de la distribution installée et installe le serveur ssh pour la prise en main à distance.
Préparation des dépôts apt pour l’installation
sudo nano /etc/apt/sources.list
Le contenu désiré est le suivant:
deb http://fr.archive.ubuntu.com/ubuntu/ dapper main universe restricted deb-src http://fr.archive.ubuntu.com/ubuntu/ dapper main universe restricted deb http://fr.archive.ubuntu.com/ubuntu/ dapper-updates main universe restricted deb-src http://fr.archive.ubuntu.com/ubuntu/ dapper-updates universe restricted deb http://security.ubuntu.com/ubuntu dapper-security main universe restricted deb-src http://security.ubuntu.com/ubuntu dapper-security main universe restricted
Nous installons quelques utilitaires de base pour notre serveur de supervision
sudo apt-get install php5-gd mailx fping snmp ntp smbclient nmap saidar traceroute php5-snmp curl gettext syslog-ng
Installation de l’environnement de compilation
sudo apt-get install build-essential
Création de l’utilisateur nagios
sudo groupadd -g 9000 nagios sudo groupadd -g 9001 nagcmd sudo useradd -u 9000 -g nagios -G nagcmd -d /usr/local/nagios -c "Nagios Admin" nagios
Avant de pouvoir compiler Nagios le plus complètemet possible, il faut installer quelques librairies de développement :
sudo apt-get install libperl-dev libgd2-xpm-dev libltdl3-dev linux-headers-2.6.15-28-server
Quelques corrections pour que Nagios trouve les librairies que le configure a du mal à détecter
sudo ln -s /usr/include/sys/uio.h /usr/include/ sudo ln -s /usr/include/sys/socket.h /usr/include/
Ensuite compilation de Nagios, des plugins, de NRPE et NSCA.
wget http://belnet.dl.sourceforge.net/sourceforge/nagios/nagios-2.9.tar.gz tar -xzf nagios-2.9.tar.gz pushd nagios-2.9 ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios --with-command-user=nagios --with-command-group=nagcmd --enable-event-broker --enable-nanosleep --enable-embedded-perl --with-perlcache make all sudo make install sudo make install-init sudo make install-commandmode sudo make install-config popd
Configurer apache2 pour Nagios
sudo nano /etc/apache2/conf.d/nagios.conf
Coller dans le fichier ouvert la configuration suivante :
ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin
<Directory "/usr/local/nagios/sbin">
AuthType Basic
AuthName "Acces Nagios"
Require valid-user
Options FollowSymLinks
Order Allow,Deny
Allow From All
AuthName "Acces Nagios"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
</Directory>
Alias /nagios /usr/local/nagios/share
<Directory "/usr/local/nagios/share">
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "Acces Nagios"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
</Directory>
Création du fichier d’utilisateur
sudo htpasswd2 -c /usr/local/nagios/etc/htpasswd.users nagiosadmin sudo /etc/init.d/apache2 restart
Ajouter l’utilisateur apache au groupe nagcmd pour pouvoir exécuter les commandes externes de Nagios depuis l’interface (ex : nagcmd:x:9001:www-data)
sudo adduser www-data nagcmd
Pour que Nagios démarre automatiquement au boot de la machine
sudo update-rc.d nagios defaults
addon Nagios 3
sudo apt-get install libglib2.0-dev
Librairies complémentaires
sudo apt-get install libgnutls11-dev libmysqlclient15-dev libssl-dev libsnmp-perl libkrb5-dev libldap2-dev libsnmp4.2-dev libnet-snmp-perl gawk libwrap0-dev libmcrypt-dev
Quelques corrections pour que le configure trouve les librairies qu’il a du mal à détecter
sudo ln -s /usr/include/inttypes.h /usr/include/sys/ sudo ln -s /usr/include/mntent.h /usr/include/sys/
Compilation
wget http://kent.dl.sourceforge.net/sourceforge/nagios/nagios-plugins-1.4.9.tar.gz tar -xzf nagios-plugins-1.4.9.tar.gz pushd nagios-plugins-1.4.9/ ./configure --with-nagios-user=nagios --with-nagios-group=nagios --disable-nls make sudo make install
tar -xzf nrpe-2.8.1.tar.gz pushd nrpe-2.8.1/ ./configure --enable-ssl make
L’installation finale est manuelle du fait que la compilation génère le client et le démon NRPE.
** If this is your monitoring host **
- Copy the check_nrpe client to the directory that
contains your Nagios plugins.
- Create a command definition in your Nagios config
file for the NRPE client. See the README file for
more info on doing this.
** If this host will be running the NRPE daemon **
- Copy the nrpe daemon to /usr/sbin, /usr/local/nagios
or wherever you feel it fits best.
- Copy the sample nrpe.cfg config file to /etc,
/usr/local/nagios or wherever you feel it fits best.
- Modify the /etc/services file and configure NRPE to
run under inetd, xinetd, or as a standalone daemon.
See the README file for more info on doing this.
Comme nous sommes sur le serveur, nous n’installerons que la partie cliente.
sudo cp src/check_nrpe /usr/local/nagios/libexec/ sudo chown nagios:nagios /usr/local/nagios/libexec/check_nrpe popd
Quelques fichiers mal linkés
sudo apt-get install libbind-dev sudo ln -s /usr/include/linux/config.h /usr/include/sys/ sudo ln -s /usr/include/dns/db.h /usr/include/
Compilation
tar -xzf nsca-2.7.2.tar.gz pushd nsca-2.7.2/ ./configure make
copier les exécutables pour finir l’installation
sudo cp src/nsca /usr/local/bin/
Le script de démarrage fourni fonctionnant, nous avons utilisé le code ci-dessous qui est un dérivé du script nrpe comme script de démarrage
#!/bin/sh
# Start/stop the nsca daemon.
#
# Contributed by Andrew Ryder 06-22-02
# Slight mods by Ethan Galstad 07-09-02
NscaBin=/usr/local/nagios/bin/nsca
NscaCfg=/usr/local/nagios/etc/nsca.cfg
test -f $NscaBin || exit 0
case "$1" in
start) echo -n "Starting nagios service check acceptator daemon: nsca"
start-stop-daemon --start --quiet --exec $NscaBin -- -c $NscaCfg --daemon
echo "."
;;
stop) echo -n "Stopping nagios service check acceptator daemon: nsca"
start-stop-daemon --stop --quiet --exec $NscaBin
echo "."
;;
restart) echo -n "Restarting nagios service check acceptator daemon: nsca"
start-stop-daemon --stop --quiet --exec $NscaBin
start-stop-daemon --start --quiet --exec $NscaBin -- -c $NscaCfg --daemon
echo "."
;;
reload|force-reload) echo -n "Reloading configuration files for nagios service check acceptator daemon: nsca"
# nsca reloads automatically
echo "."
;;
*) echo "Usage: /etc/init.d/nsca start|stop|restart|reload|force-reload"
exit 1
;;
esac
exit 0
Pour l’activer
sudo update-rc.d nsca defaults
On copie sec.pl dans le répertoire local et à voir comment copier le man pour qu’il fonctionne. A voir le startup script
tar -xzf sec-2.4.1.tar.gz pushd sec-2.4.1 sudo cp sec.pl /usr/local/bin/sec sudo mkdir /usr/local/etc/sec
Démarrage de SEC
sudo /usr/bin/perl -w /usr/local/bin/sec -conf=/usr/local/etc/sec/general.conf -input=/var/log/auth.log -input=/var/log/syslog -detach -pid=/var/run/sec.pid -log=/var/log/sec.log
démarre SEC comme démon avec le fichier de conf /usr/local/etc/sec/general.conf et surveillance des logs syslog et auth.log
exemple de déclaration pour Nagios. Cette déclaration recherche les erreurs de mot de passe sur la commande su.
type=Single ptype=RegExp pattern=FAILED su for (\S+) by (\S+) desc=$0 action=shellcmd /usr/local/nagios/libexec/eventhandlers/submit_sec_result localhost 'SU Authentication error' 2 FAILED_su_for_$1_by_$2
NagiosGrapher est écrit en perl et nécessite les modules CPAN suivants :
Data::Dumper, File::Copy, File::Basename, Carp, POSIX, Time::HiRes, Time::Local, Storable, GD, Image::Magick, RRDs, CGI, CGI::Carp, IO::Handle, URI::Escape, Calendar::Simple
wget http://mesh.dl.sourceforge.net/sourceforge/nagiosgrapher/NagiosGrapher-1.6.1-rc3a.tar.gz tar -xzf NagiosGrapher-1.6.1-rc3a.tar.gz pushd NagiosGrapher-1.6.1-rc3a autoconf .configure make testdeps make fixdeps sudo make install
Le scripte renvoie l’écran suivant qui donne les dernières directives pour compléter l’installation.
=============================================================
Just a few steps to run the grapher ...
=============================================================
Serviceexttype, MULTIPLE:
Add these line to your nagios.cfg.
cfg_dir=/usr/local/nagios/etc/serviceext
Serviceexttype, SINGLE:
Add these line to your cgi.cfg.
xedtemplate_config_file=/usr/local/nagios/etc/serviceextinfo.cfg
=============================================================
To tell nagios to write service perfdata add these lines to your nagios.cfg:
process_performance_data=1
service_perfdata_command=process-service-perfdata
=============================================================
And add one of the following commands to your misccommands.cfg
(Based on the interface you are using: updecho for network, fifo_write for pipe)
define command{
command_name process-service-perfdata
command_line /usr/local/nagios/contrib/udpecho
}
define command{
command_name process-service-perfdata
command_line /usr/local/nagios/contrib/fifo_write '%HOSTNAME%\t%SERVICEDESC%\t%SERVICEOUTPUT%\t%SERVICEPERFDATA%\n' 3
}
Note if you are using other tools like netcat or printf to passthrough this string:
'%HOSTNAME%\t%SERVICEDESC%\t%SERVICEOUTPUT%\t%SERVICEPERFDATA%\n'
==================================================
--- Now REPLACE the '%' signs with dollars !!! ---
==================================================
=============================================================
Please do not forget to set a proper loglevel!
Default loglevel is set to 511 which means all. That is why the logfile can grow very fast!
PNP est l’acronyme de PNP is NOT Perfparse. Il permet de récupérer la sortie perfparse des plugins et d’injecter ces valeurs dans des bases rrdtool et de les grapher via un front-end.
wget http://kent.dl.sourceforge.net/sourceforge/pnp4nagios/pnp-0.3.3.tar.gz tar -xzf pnp-0.3.3.tar.gz pushd pnp-0.3.3 ./configure make all sudo make install
Ecran présenté à la fin de la compilation
*** Compile finished ***
If the pnpsender program and your personal settings you did
compiled without any errors, you can continue installing
PNP as follows (typ 'make' without any arguments for a list
of arguments you can run):
make install
- This installs the main program and HTML files
*** Support Notes *******************************************
If you have questions about configuring or running PNP,
please make sure that you:
- Look at the config files
- Look at the distributed template files
- Read the HTML documentation
- Read the Docs online at http://www.ederdrom.de/nagios/pnp/
- Come to the forum at www.nagios-portal.de and try the search function
- Subscribe to the Mailinglist Pnp4nagios-users@lists.sourceforge.net
before you post a question to one of the mailing lists.
Also make sure to include pertinent information that could
help others help you. This might include:
- What version of PNP you are using
- What version of PHP and rrdtools you are using
- Relevant snippets from your config and template files
- Relevant error messages from the PNP and Apache log file
*************************************************************
Enjoy.
Ecran présenté à la fin du make install
*** Main program, Scripts and HTML files installed ***
Your next step should now be to enable performance data
in your nagios.cfg with following option:
process_performance_data=1
and: service_perfdata_command=process-service-perfdata
In your commands.cfg you have to add a new command like this:
define command{
command_name process-service-perfdata
command_line /usr/local/nagios/libexec/process_perfdata.pl
}
and after this set the service option:
process_perf_data 1
for each service that supports 'real' performance data
and finaly which you wants to see within PNP
Please run 'make install-config' to install sample
configuration files
2. if possible use one of the template
files in /usr/local/groundwork/nagios/share/pnp/templates.dist that
matches your service check (i.e. if checking CPU usage on a Windows
box with NSClient, copy the check_nt_cpu.php from
/usr/local/groundwork/nagios/share/pnp/templates.dist to
/usr/local/groundwork/nagios/share/pnp/templates/check_nt_cpu.php -
the name of the template must be the same as the Nagios check_command
Les fichiers installés sont les suivants:
Pour activer le debug de pnp, il faut éditer le fichier /usr/local/nagios/libexec/process_perfdata.pl et passer la valeur de debug à au moins 2.
Compilation et installation de NDOUtils
wget http://puzzle.dl.sourceforge.net/sourceforge/nagios/ndoutils-1.4b4.tar.gz tar -xzf ndoutils-1.4b4.tar.gz pushd ndoutils-1.4b4/ ./configure make cd src sudo cp log2ndo file2sock socketdebug /usr/local/nagios/bin sudo cp ndomod-2x /usr/local/nagios/bin/ndomod sudo cp ndo2db-2x /usr/local/nagios/bin/ndo2db cd ../config/ sudo cp ndomod.cfg ndo2db.cfg /usr/local/nagios/etc
Ne reste plus qu’à créer une base de données “nagios”, un utilisateur possédant les droits SELECT, INSERT, UPDATE, et DELETE sur cette base et à y insérer le fichier de structure fourni.
CREATE USER 'nagios'@'localhost' IDENTIFIED BY '****'; GRANT USAGE ON * . * TO 'nagios'@'localhost' IDENTIFIED BY '****' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; CREATE DATABASE IF NOT EXISTS `nagios` ; GRANT SELECT , INSERT , UPDATE , DELETE ON `nagios` . * TO 'nagios'@'localhost';
Insertion du fichier de structure
cd ../ mysql -uroot -ppaswd nagios < db/mysql.sql
Modifier le fichier de configuration /usr/local/nagios/etc/nagios.cfg
event_broker_options=-1
Démarrage du démon
/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg
ndo2db étant fourni sans script de démarrage, le suivant a été utilisé
#!/bin/sh
# Start/stop the nsca daemon.
#
# Contributed by Andrew Ryder 06-22-02
# Slight mods by Ethan Galstad 07-09-02
Ndo2dbBin=/usr/local/nagios/bin/ndo2db
Ndo2dbCfg=/usr/local/nagios/etc/ndo2db.cfg
test -f $Ndo2dbBin || exit 0
case "$1" in
start) echo -n "Starting ndo2db daemon: ndo2db"
start-stop-daemon --start --quiet --exec $Ndo2dbBin -- -c $Ndo2dbCfg
echo "."
;;
stop) echo -n "Stopping ndo2db daemon: ndo2db"
start-stop-daemon --stop --quiet --exec $Ndo2dbBin
echo "."
;;
restart) echo -n "Restarting ndo2db daemon: ndo2db"
start-stop-daemon --stop --quiet --exec $Ndo2dbBin
start-stop-daemon --start --quiet --exec $Ndo2dbBin -- -c $Ndo2dbCfg --daemon
echo "."
;;
reload|force-reload) echo -n "Reloading configuration files for ndo2db daemon: ndo2db"
# ndo2db reloads automatically
echo "."
;;
*) echo "Usage: /etc/init.d/ndo2db start|stop|restart|reload|force-reload"
exit 1
;;
esac
exit 0
Pour l’activer
sudo update-rc.d ndo2db defaults
Pour le moment, l’installation de monarch 2.0.2 n’est pas possible sur ubuntu dû à un bug sur le script monarch_tree.pm. Nous installerons donc la version 1.3
Installation des modules perl nécessaires
sudo apt-get install libxml-perl libcompress-zlib-perl libxml-namespacesupport-perl libxml-sax-perl libxml-libxml-common-perl libdbi-perl libdbd-mysql-perl libclass-accessor-perl libfile-copy-recursive-perl libxml-libxml-perl
En l’absence du module CGI::Ajax dans les dépôts Dapper, nous compilons ce module
tar -xzf CGI-Ajax-0.701.tar.gz push CGI-Ajax-0.701 perl Makefile.PL make make test sudo make install popd
Si on dispose d’une connection ftp, on peut utiliser le CPAN pour perl
perl -MCPAN -e shell
Créer la base de données pour monarch
mysql -uroot CREATE DATABASE monarch ;
tar -xzf monarch-1.3.tar.gz pushd monarch-1.3/ sudo perl monarch_setup.pl
Répondre aux séries de questions pour obtenir
Database host = localhost
Database name = monarch
Database user = root
Database passwd =
Document root = /var/www
Web user = www-data
Web user group = www-data
Web cgi-bin = /usr/local/nagios/sbin
Nagios bin = /usr/local/nagios/bin
Nagios cfg dir = /usr/local/nagios/etc
Install path = /usr/local/groundwork/monarch
Confirmation: Be absolutely certain these values are correct.
Does the information look correct? 'yes' or 'no' : yes
Contrôler l’installation en se connectant sur http://localhost/nagios/cgi-bin/monarch.cgi. S’identifier avec super_user et password.
NagVis est un addon de visualisation pour Nagios qui permet de générer des vues métier de la supervision.
wget http://heanet.dl.sourceforge.net/sourceforge/nagvis/nagvis-1.1rc2.tar.gz tar -xzf nagvis-1.1rc2.tar.gz sudo mv nagvis-1.1rc2 /usr/local/nagios/share/nagvis cd /usr/local/nagios/share/nagvis sudo cp nagvis/etc/config.ini.php.dist nagvis/etc/config.ini.php sudo chown www-data:www-data /usr/local/nagios/share/nagvis -R sudo chmod 664 /usr/local/nagios/share/nagvis/nagvis/etc/config.ini.php sudo chmod 775 /usr/local/nagios/share/nagvis/nagvis/images/maps sudo chmod 664 /usr/local/nagios/share/nagvis/nagvis/images/maps/* sudo chmod 775 /usr/local/nagios/share/nagvis/nagvis/etc/maps sudo chmod 664 /usr/local/nagios/share/nagvis/nagvis/etc/maps/*
Une fois l’installation de l’ensemble des composants terminés, il ne reste qu’à vérifier que les processes ont bien été démarré.
ps aux | grep nagios
nagios 3679 0.0 0.3 20820 1848 ? Ssl Jul11 1:55 /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg nagios 3723 0.0 1.2 11176 6460 ? Ss Jul11 1:09 /usr/bin/perl -w /usr/local/nagios/contrib/collect2.pl nagios 10670 0.0 0.1 1984 744 ? Ss Jul11 0:00 /usr/local/nagios/bin/nsca -c /usr/local/nagios/etc/nsca.cfg --daemon nagios 309 0.0 0.0 3604 320 ? Ss 13:39 0:00 /usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg nagios 3683 0.0 0.1 3348 968 ? Ss Jul11 0:17 /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d