Installation Nagios 2 & 3 sur Ubuntu 6.0.6, 8.0.4 et 10.0.4 LTS

L’ensemble de cette installation reste valable pour Ubuntu 8.0.4 L.T.S Hardy Heron et Ubuntu 10.04 Lucid Lynx.

Préambule

Ce document couvre l’installation d’un serveur Nagios version 2 ou 3 sur Linux Ubuntu 6.0.6 LTS, Ubuntu 8.04 LTS et 10.0.4 LTS. Il doit être possible de suivre ces instructions pour d’autres distributions avec quelques modifications. Néanmoins, l’ Ubuntu Server LTS est intéressante pour sa dimension “Entreprise Ready” et son suppport gratuit assuré 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 abordé 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
  • Nagios NDOutils pour stocker les données de Nagios dans 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)

Installation Ubuntu Server 6.0.6, 8.0.4 et 10.0.4 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

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ètement possible, il faut installer quelques librairies de développement. Les en-têtes du noyau sont facultatifs :

sudo apt-get install libperl-dev libgd2-xpm-dev libltdl3-dev linux-headers-`uname -r`

Pour la version 3 de Nagios, ajouter la librairie libglib2

sudo apt-get install  libglib2.0-dev

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://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.3.tar.gz
tar -xzf nagios-3.2.3.tar.gz
pushd nagios-3.2.3
./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
Nagios 3.3.1 : Si vous rencontrez une erreur lors de la compilation, du style :
/usr/bin/install: omitting directory `includes/rss/extlib'
/usr/bin/install: omitting directory `includes/rss/htdocs'
/usr/bin/install: omitting directory `includes/rss/scripts'
make[1]: *** [install] Error 1
make[1]: Leaving directory `/srv/d_bilbo/install/nagios/nagios/html'
make: *** [install] Error 2

Surtout pas de panique ! Il suffit d’apporter quelques corrections de bugs avant la compilation, c’est-à-dire juste après notre ./configure (voir précédemment) :

$ sed -i 's/for file in includes\/rss\/\*\;/for file in includes\/rss\/\*\.\*\;/g' ./html/Makefile
$ sed -i 's/for file in includes\/rss\/extlib\/\*\;/for file in includes\/rss\/extlib\/\*\.\*\;/g' ./html/Makefile

Ensuite vous pouvez poursuivre le tutoriel avec la compilation :).

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">
#  SSLRequireSSL
   Options ExecCGI
   AllowOverride None
   Order allow,deny
   Allow from all
#  Order deny,allow
#  Deny from all
#  Allow from 127.0.0.1
   AuthName "Nagios Access"
   AuthType Basic
   AuthUserFile /usr/local/nagios/etc/htpasswd.users
   Require valid-user
</Directory>

Alias /nagios "/usr/local/nagios/share"

<Directory "/usr/local/nagios/share">
#  SSLRequireSSL
   Options None
   AllowOverride None
   Order allow,deny
   Allow from all
#  Order deny,allow
#  Deny from all
#  Allow from 127.0.0.1
   AuthName "Nagios Access"
   AuthType Basic
   AuthUserFile /usr/local/nagios/etc/htpasswd.users
   Require valid-user
</Directory>

Avec Nagios 3, un simple install-webconf suffit

sudo make install-webconf

Création du fichier d’utilisateur

sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
sudo chown nagios:nagcmd /usr/local/nagios/etc/htpasswd.users

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
sudo /etc/init.d/apache2 restart

Pour que Nagios démarre automatiquement au boot de la machine

sudo chmod +x /etc/init.d/nagios
sudo update-rc.d nagios defaults

Installation plugins

Librairies complémentaires

sudo apt-get install libgnutls-dev libmysqlclient15-dev libssl-dev libsnmp-perl libkrb5-dev libldap2-dev libsnmp-dev libnet-snmp-perl gawk libwrap0-dev libmcrypt-dev fping snmp gettext smbclient dnsutils

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://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
tar -xzf nagios-plugins-1.4.15.tar.gz
pushd nagios-plugins-1.4.15/
./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-libtap --enable-extra-opts --enable-perl-modules
make
sudo make install

Installation NRPE

Installation de openssl

sudo apt-get install openssl
wget http://downloads.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.12/nrpe-2.12.tar.gz
tar -xzf nrpe-2.12.tar.gz
pushd nrpe-2.12/
./configure --enable-ssl --with-log-facility --enable-command-args --enable-threads=posix --with-trusted-path=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/nagios/bin:/usr/local/nagios/libexec
make
sudo make install
sudo cp sample-config/nrpe.cfg /usr/local/nagios/etc/

Pas de script de démarrage fourni, aussi en voici un minimal

#!/bin/sh
 
start()
{
                rm -f /var/run/nrpe.pid
                /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
}
 
stop()
{
                nrpe=`pgrep nrpe`
                kill -9 $nrpe
}
 
if [ -f /etc/rc.d/init.d/functions ]; then
        . /etc/rc.d/init.d/functions
fi
 
case "$1" in
 start)
  echo 'Le service nrpe est demarrer'
  start
  exit 0
  ;;
 stop)
  echo 'Le serviec nrpe est arreter'
  stop
  exit 0
  ;;
 restart)
  echo 'Le serviec nrpe est arreter'
  stop
  echo 'Le service nrpe est demarrer'
  start
  exit 0
  ;;
 *)
  echo 'Usage: nrpe {start|stop|restart}'
  exit 1
  ;;
esac

Pour l’activer

sudo chmod +x /etc/init.d/nrpe
sudo update-rc.d nrpe defaults

Installation NSCA

Quelques fichiers mal linkés

sudo apt-get install libbind-dev libdb-dev
sudo ln -s /usr/include/linux/config.h /usr/include/sys/
sudo ln -s /usr/include/dns/db.h /usr/include/

Compilation

wget http://downloads.sourceforge.net/project/nagios/nsca-2.x/nsca-2.7.2/nsca-2.7.2.tar.gz
tar -xzf nsca-2.7.2.tar.gz
pushd nsca-2.7.2/
./configure
make

copier les exécutables et le fichier de configuration pour finir l’installation

sudo cp src/nsca /usr/local/nagios/bin/
sudo cp src/send_nsca /usr/local/nagios/libexec/
sudo cp sample-config/nsca.cfg /usr/local/nagios/etc/

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 chmod +x /etc/init.d/nsca
sudo update-rc.d nsca defaults

Installation NDOUtils

Compilation et installation de NDOUtils

wget http://puzzle.dl.sourceforge.net/sourceforge/nagios/ndoutils-1.4b7.tar.gz
tar -xzf ndoutils-1.4b7.tar.gz
pushd ndoutils-1.4b7/
./configure --enable-mysql
make
cd src
sudo cp log2ndo file2sock sockdebug /usr/local/nagios/bin
sudo cp ndomod-3x.o /usr/local/nagios/bin/ndomod.o
sudo cp ndo2db-3x /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
broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg

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 chmod +x /etc/init.d/ndo2db
sudo update-rc.d ndo2db defaults

Il y a certains cas où il n’est pas nécessaire d’envoyer toutes les données gérées par Nagios dans la base NDOUtil. Il existe une petite calculette en ligne pour aider à déterminer quoi envoyer et surtout avoir la valeur à renseigner dans ndomod.cfg.

Installation SNMPTT

Commençons par compléter notre couche SNMP et librairie perl pour faire fonctionner SNMPTT

sudo apt-get install snmpd libconfig-inifiles-perl

Installation SNMPTT

wget http://switch.dl.sourceforge.net/sourceforge/snmptt/snmptt_1.2.tgz
tar -xzf snmptt_1.2.tgz
pushd snmptt_1.2/
sudo mv snmpttconvert snmpttconvertmib snmptt-net-snmp-test /usr/local/bin/
sudo mv snmptt snmptthandler /usr/local/sbin/
sudo mkdir -p /usr/local/etc/snmptt.d
sudo cp snmptt.ini /usr/local/etc/
sudo cp examples/snmptt.conf.generic /usr/local/etc/snmptt.d/

Il faut ensuite convertir les MIBS dont on a besoin. Afin de tester la validité de notre installation SNMPTT, nous générons une trap SNMP que nous lui passons

sudo snmptt < /home/system/src/snmptt_1.2/examples/sample-trap.generic

Modifier le fichier /etc/default/snmpd pour activer le démon trap

TRAPDRUN=yes

# snmptrapd options (use syslog).
TRAPDOPTS='-Lsd -On -p /var/run/snmptrapd.pid'

Modifier le fichier de configuration /etc/snmp/snmptrapd.conf

traphandle default /usr/local/sbin/snmptt
disableAuthorization yes
donotlogtraps  yes

Pour convertir au format snmptt des MIB, il faut utiliser snmpttconvertmib et c’est long. Voilà une moulinette qui accepte en entrée un répertoire et qui convertit chacun des fichiers qui s’y trouvent au format snmptt.

#!/bin/bash
 
ls $1 > /tmp/mibs.txt
 
while read enreg; do
 
/usr/local/snmptt/bin/snmpttconvertmib --in=/usr/share/snmp/mibs/$enreg --out=/etc/snmp/snmptt.d/$enreg
echo "processing $enreg..."
 
done < /tmp/mibs.txt
rm /tmp/mibs.txt
 
 
exit 0

Il suffit de l’appeler ensuite avec le répertoire en argument

mibs-directory-convert.sh /usr/share/snmp/mibs/

Installation Nagtrap

NagTrap est une interface bien pratique pour voir les traps snmp reçus et injectés dans une base de données MySQL. Il fournit également un plugin Nagios pour requêter cette base.

Installation

wget http://surfnet.dl.sourceforge.net/sourceforge/nagtrap/nagtrap-0.1.2.tar.gz
tar xzf nagtrap-0.1.2.tar.gz
cd nagtrap
mysql -u root -p snmptt < db/snmptt-1.2.sql

Création d’une nouvelle table pour stocker les traps reçues mais inconnues

CREATE TABLE `snmptt`.`snmptt_unknown` (
`id` mediumint( 9 ) NOT NULL AUTO_INCREMENT ,
`eventname` VARCHAR( 50 ) DEFAULT NULL ,
`eventid` VARCHAR( 50 ) DEFAULT NULL ,
`trapoid` VARCHAR( 100 ) DEFAULT NULL ,
`enterprise` VARCHAR( 100 ) DEFAULT NULL ,
`community` VARCHAR( 20 ) DEFAULT NULL ,
`hostname` VARCHAR( 100 ) DEFAULT NULL ,
`agentip` VARCHAR( 16 ) DEFAULT NULL ,
`category` VARCHAR( 20 ) DEFAULT NULL ,
`severity` VARCHAR( 20 ) DEFAULT NULL ,
`uptime` VARCHAR( 20 ) DEFAULT NULL ,
`traptime` VARCHAR( 30 ) DEFAULT NULL ,
`formatline` VARCHAR( 255 ) DEFAULT NULL ,
`trapread` INT( 11 ) DEFAULT '0',
PRIMARY KEY ( `id` )
) ENGINE = MYISAM DEFAULT CHARSET = latin1;
 
INSERT INTO `snmptt`.`snmptt_unknown`
SELECT *
FROM `snmptt`.`snmptt` ;

Mise en place des fichiers pour l’interface PHP

sudo mv nagtrap/ /usr/local/nagios/share/
sudo chown -R www-data:www-data /usr/local/nagios/share/nagtrap/
sudo cp -p /usr/local/nagios/share/nagtrap/etc/config.ini.php-dist /usr/local/nagios/share/nagtrap/etc/config.ini.php

Editer le fichier config.ini.php et renseigner les valeurs pour la connexion MySQL. C’est prêt !

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   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/ubuntu-install.txt · Dernière modification: 02/03/2017 16:41 (modification externe)
CC Attribution-Noncommercial-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0