Installation serveur supervision

Préambule

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 :

  • Nagios
  • Nagios plugins officiels
  • Nagios NRPE pour la surveillance active
  • Nagios NSCA pour la surveillance passive
  • Monarch comme interface d’administration de Nagios
  • Cacti
  • SEC Simple Event Correlator
  • SNMPTT
  • PhpMyAdmin pour gérer nos bases MySQL

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)

Ubuntu Server 6.0.6 LTS

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

Installation Nagios

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

Installation plugins

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

Installation NRPE

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

Installation NSCA

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

Installation SEC

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

Installation NagiosGrapher

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!

Installation PNP

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:

  • /usr/local/nagios/bin/npcd
  • /usr/local/nagios/libexec/pnpsender
  • /usr/local/nagios/libexec/process_perfdata.pl
  • /usr/local/nagios/share/pnp
  • /usr/local/nagios/etc/pnp
  • /usr/local/nagios/share/perfdata

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.

Installation NDOUtils

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

Installation Monarch 1.3

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.

Installation NagVis 1.1

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

Contrôle installation

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
nagios/installation.txt · Dernière modification: 16/01/2012 14:21 (modification externe)
 
Sauf mention contraire, le contenu de ce wiki est placé sous la licence suivante : CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki