NAGIOS – Installation

Installation de Nagios 4

Nagios, comme la plupart des logiciels open source, peut être installé de deux manières. La première méthode, la plus simple, consiste à installer Nagios 4 en utilisant les paquets fournis par les distributions Linux. L’avantage de cette méthode est que la mise à jour de ces paquets se lance automatiquement avec la mise à jour du système. Alors que l’inconvénient est que parfois Nagios 4 ne sera pas disponible pour certaines distributions. La deuxième manière d’installer consiste à compiler et à installer Nagios manuellement. L’installation par compilation des sources fournies par Nagios est recommandée pour les administrateurs du système qui veulent installer, configurer leur serveur de supervision et gérer la mise à jour du logiciel par eux-mêmes.

Dans cette section, nous allons procéder à l’installation de Nagios 4 par compilation dans une distribution Ubuntu qui est aussi valide pour une distribution Debian. Aussi, ce chapitre décrit le processus d’installation pour une distribution CentOS qui est aussi valide pour une distribution Red Hat. Pour les autres distributions Linux, les commandes peuvent être légèrement différentes.

1. Installation des prérequis

Avant de commencer l’installation de Nagios 4, il faut préparer le système pour supporter ce logiciel. Cette étape prérequise est primordiale pour une installation par compilation ainsi que pour une installation par paquets. Les paquets nécessaires à l’installation de Nagios 4 sont :

  • Le compilateur GCC (GNU C Compiler) pour pouvoir compiler les sources.

  • GNU Binutils (GNU Binary Utilities) qui contient un ensemble d’outils de développements logiciels. Binutils est généralement utilisé en conjonction avec les compilateurs comme GCC, les commandes make et le débogueur GDB (GNU Debugger).

  • Perl et les librairies de développement liées comme libperl qui est nécessaire pour la compilation de l’interpréteur Perl embarqué dans Nagios.

  • Un serveur LAMP (Linux Apache MySQL PHP) pour construire un serveur web afin d’accéder à l’interface web de Nagios.

  • La bibliothèque de développement GD qui va servir dans l’interface web pour créer et manipuler les images.

  • Et d’autres paquets utiles pour l’utilisation de Nagios après.

Tous ces paquets mentionnés précédemment sont généralement disponibles pour toutes les distributions Linux et ils peuvent être installés en utilisant les gestionnaires de paquets suivant la distribution apt-get ou yum/rpm.

Dans une distribution Ubuntu ou Debian, nous pouvons installer les prérequis en utilisant cette commande :

apt-get install gcc make binutils cpp libpq-dev libmysqlclient-dev libssl1.0.0 libssl-dev pkg-config libgd2-xpm libgd2-xpm-dev libgd-tools perl libperl-dev libnet-snmp-perl snmp apache2 libapache2-mod-php5 mysql-server php5-mysql php

Pour une distribution CentOS ou Red Hat, la commande pour installer les prérequis est la suivante :

yum install gcc make imake binutils cpp postgresql-devel mysql-libs mysql-devel 
openssl openssl-devel pkgconfig gd gd-devel gd-progs libpng libpng-devel 
libjpeg libjpeg-devel perl perl-devel net-snmp net-snmp-devel net-snmp-perl 
net-snmp-utils httpd php mysql mysql-server

Les deux commandes précédentes sont exécutées respectivement dans une machine Ubuntu 12.04 Precise et dans une machine CentOS 6.5. Pour les autres distributions Linux, les noms des paquets peuvent être différents.

La deuxième étape dans la préparation du système est de choisir l’emplacement où nous allons installer Nagios. Nous allons créer un sous-répertoire /usr/local/nagios pour contenir tous les fichiers de configuration de Nagios.

mkdir /usr/local/nagios

Pour mettre en place Nagios dans un système sécurisé, il faut lui créer un utilisateur spécifique pour ne pas utiliser l’administrateur root. Nous allons l’appeler nagios. Cet utilisateur appartient aux deux groupes nagios et nagcmd.

Le premier groupe est le groupe par défaut. Par contre, le deuxième groupe est utilisé pour passer des commandes à Nagios à partir de l’extérieur comme l’interface web. Nous utilisons les commandes suivantes pour créer l’utilisateur et les groupes.

groupadd nagios 
groupadd nagcmd 
useradd nagios -g nagios -G nagcmd -d /usr/local/nagios

La dernière étape dans la phase de préparation est de télécharger les sources d’installation depuis le site web officiel de Nagios en utilisant cette URL : https://www.nagios.org/downloads/nagios-core/

Nous pouvons utiliser la commande wget pour télécharger Nagios Core.

wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.3.tar.gz

Il faut ensuite extraire les fichiers en utilisant la commande tar.

tar -xzf nagios-4.4.3.tar.gz

2. Compilation et installation

Après la phase de préparation pour la mise en place de notre serveur de supervision Nagios 4, nous pouvons procéder à la phase d’installation.

Pour commencer, il faut se déplacer dans le dossier décompressé nagios-4.1.1 et configurer la compilation en utilisant l’utilisateur, les groupes et les répertoires créés.

cd nagios-4.4.3 
sh configure --prefix=/usr/local/nagios --with-nagios-group=nagios --with-command-group=nagcmd --with-command-user=nagios

Le script « configure » est lancé avec les options suivantes :

  • –prefix=/usr/local/nagios indique le répertoire principal dans lequel tous les binaires Nagios seront installés.

  • –with-nagios-group=nagios indique le groupe principal de l’utilisateur nagios.

  • –with-command-group=nagcmd indique le deuxième groupe servant aux autres utilisateurs à partager des privilèges avec l’utilisateur nagios.

  • –with-command-user=nagios indique l’utilisateur principal du groupe nagcmd

Cette étape de configuration peut prendre quelques minutes pour se terminer. Si le script de configuration échoue, la raison la plus probable est qu’une ou plusieurs conditions préalables sont manquantes. Dans ce cas, vous devez revoir et comprendre la sortie de script pour trouver l’erreur.

En supposant que le script « configure » fonctionne correctement, le terminal affiche un résumé à la fin de la commande.

*** Configuration summary for nagios 4.1 10-01-2016 ***: 
General Options: 
------------------------- 
Nagios executable:  nagios 
Nagios user/group:  nagios,nagios 
Command user/group:  nagios,nagcmd 
Embedded Perl:  yes, with caching 
Event Broker:  yes 
Install ${prefix}:  /usr/local/nagios 
Lock file:  ${prefix}/var/nagios.lock 
Check result directory:  ${prefix}/var/spool/checkresults 
Init directory:  /etc/init.d 
Apache conf.d directory:  /etc/apache2/conf.d 
Mail program:  /bin/mail 
Host OS:  linux-gnu 
Web Interface Options: 
------------------------ 
HTML URL:  http://localhost/nagios/ 
CGI URL:  http://localhost/nagios/cgi-bin/ 
Traceroute (used by WAP): 
Review the options above for accuracy.  If they look okay, 
type ’make all’ to compile the main program and CGIs.

Ensuite il faut lancer la commande make pour la compilation.

make all

Lorsque les sources seront compilées, nous pouvons déclencher l’installation de Nagios 4 en nous basant sur les étapes suivantes :

  • Installation du programme principal, CGI et des fichiers HTML.

make install
  • Installation du script pour configurer Nagios comme un service système.

make install-init
  • Installation et configuration du fichier de commandes externes.

make install-commandmode
  • Installation des exemples de configuration qui peuvent être utilisés dans la suite pour la configuration de Nagios.

make install-config
  • Installation et configuration de serveur web pour Nagios. Cette étape est nécessaire pour la suite de l’installation de l’interface web.

make install-webconf

Enfin Nagios 4 est installé proprement sur le serveur sous le répertoire /usr/local/nagios. Ce dernier contient tous les fichiers de configuration nécessaires au bon fonctionnement de Nagios.

3. Installation et compilation des plugins

L’installation de Nagios sur le serveur ne suffit pas pour superviser les machines dans le réseau. Comme nous l’avons expliqué dans le premier chapitre, Nagios utilise des programmes et des scripts développés en C, Python, Perl, Bash, PHP ou PowerShell pour interroger les machines et collecter les données, ces programmes et ces scripts s’appellent des plugins.

L’étape suivante après l’installation de Nagios est d’installer les plugins. Comme pour Nagios, il existe deux méthodes pour installer les plugins. La première consiste à utiliser le gestionnaire de paquets apt-get ou yum/rpm suivant la distribution. La deuxième est de compiler et d’installer les plugins depuis les codes sources fournis sur le site web de Nagios http://www.nagios.org/download/. Le paquet officiel des plugins contient plus de 50 plugins pour vous aider à démarrer la surveillance de tous les services basiques.

Pour installer les plugins sur une distribution Ubuntu en utilisant une manière simple, nous pouvons utiliser la commande suivante :

apt-get install nagios-plugins-basic nagios-plugins-standard 

Et pour une distribution CentOS, nous avons besoin d’exécuter la commande suivante :

yum -y install nagios-plugins-all

Pour installer les plugins manuellement en passant par la compilation, il faut télécharger les sources sur le serveur de Nagios et les décompresser.

wget http://www.nagios-plugins.org/download/nagios-plugins-2.1.1.tar.gz 
tar -xzf nagios-plugins-2.1.1.tar.gz

Maintenant, nous allons configurer la compilation en exécutant le script «configure». Les options acceptées par ce script sont :

  • –prefix=<dir> spécifie l’emplacement de l’installation de Nagios. Par défaut, Nagios est installé sous le répertoire /usr/local/nagios/.

  • –sysconfdir=<dir> spécifie le répertoire où toutes les configurations Nagios vont être stockées ; par défaut le répertoire /usr/local/nagios/etc est utilisé.

  • –libexecdir=<dir> spécifie le répertoire où les plugins vont être installés. Par défaut, les plugins seront installés sous le répertoire /usr/local/nagios/libexec.

  • –enable-perl-modules permet d’installer des modules Perl supplémentaires (Monitoring::Plugin et ses dépendances) qui nous aident dans le développement des plugins Nagios avec le langage Perl.

  • –with-nagios-user=<user> spécifie l’utilisateur utilisé par le daemon nagios; par défaut nagios.

  • –with-nagios-group=<grp> spécifie le groupe utilisé par le daemon nagios; par défaut nagios.

La commande suivante est utilisée pour exécuter le script configure :

./configure --with-nagios-user=nagios --with-nagios-group=nagios 
--enable-perl-modules

Le terminal affiche à la fin d’exécution de script un résumé de la configuration choisie :

--with-apt-get-command: /usr/bin/apt-get 
--with-ping6-command: /bin/ping6 -n -U -w %d -c %d %s 
--with-ping-command: /bin/ping -n -U -w %d -c %d %s 
--with-ipv6: yes 
--with-mysql: /usr/bin/mysql_config 
--with-openssl: yes 
--with-gnutls: no 
--with-perl: /usr/bin/perl 
--enable-perl-modules: yes 
--with-cgiurl: /nagios/cgi-bin 
--with-trusted-path: /bin:/sbin:/usr/bin:/usr/sbin

Si la configuration de compilation a échoué, le script devrait indiquer le composant manquant. Le processus d’installation des plugins utilise également la commande make similaire à la façon dont Nagios est installé. Par conséquent, la prochaine étape est de lancer la commande make comme montré ici :

make all 
make install

Les plugins sont installés sous le répertoire /usr/local/nagios/libexec par défaut. Tous les plugins respectant les standards de développement mis par Nagios possèdent un message d’aide disponible en passant -h ou –help dans l’argument de l’appel au programme. Pour être sûr que les plugins sont installés proprement, il suffit de tester un script. Par exemple le plugin check_ping permet de tester la disponibilité de l’hôte sur le réseau.

/usr/local/nagios/libexec/check_ping --help

Ce message renvoyé sur la console affirme que les plugins fonctionnent correctement, alors vous avez maintenant un serveur de supervision Nagios installé et prêt à être utilisé.

4. Lancement de Nagios

Après avoir installé Nagios sur le serveur dédié à la supervision, il est avantageux de configurer le daemon nagios en tant qu’un service système pour qu’il soit lancé automatiquement dans les prochains démarrages du serveur. Dans les phases de compilation et d’installation de Nagios, nous avons utilisé la commande ci-dessous pour configurer le daemon nagios comme un service système.

make install-init

Cette commande va installer un script qui s’appelle nagios sous le répertoire /etc/init.d/ permettant de contrôler le fonctionnement de Nagios.

Pour démarrer Nagios, nous faisons appel à ce script à travers cette commande :

/etc/init.d/nagios start

Ce script accepte d’autres options telles que :

  • stop pour arrêter le service nagios.

  • restart pour redémarrer le service nagios.

  • reload pour recharger la configuration sans redémarrer le service nagios.

  • force-reload pour forcer le rechargement sans redémarrer le service nagios.

  • status pour connaître l’état de service nagios.

L’étape suivante est l’ajout de ce script nagios dans un niveau d’exécution permettant de démarrer le service automatiquement au démarrage et redémarrage du serveur. Pour une machine Ubuntu, la commande est :

update-rc.d nagios defaults

Et pour une machine CentOS, la commande est :

chkconfig --add nagios ; chkconfig nagios on

Pour certaines distributions Linux, le script de démarrage ne fonctionne pas correctement. Pour remédier à ce problème, nous pouvons développer notre propre script pour démarrer Nagios automatiquement. Il suffit de sauvegarder la version existante avec cette commande :

cp /etc/init.d/nagios /etc/init.d/nagios.bak

Et de créer un nouveau script shell sous le répertoire /etc/init.d/.

#!/bin/sh 
BINARY=/usr/local/nagios/bin/nagios 
CONFIG=/usr/local/nagios/etc/nagios.cfg  
is_running () 
{ 
pgrep -U nagios nagios >/dev/null 2>&1 
} 
case "$1" in 
start) 
if is_running ; then 
echo "Nagios is already running" 
else 
echo "Starting Nagios" 
su -c "$BINARY -d $CONFIG" nagios 
fi 
;; 
stop) 
if is_running ; then 
echo "Stopping Nagios" 
pkill -U nagios nagios >/dev/null 2>&1 
else 
echo "Nagios is not running" 
fi 
;; 
restart|force-reload|reload) 
$0 stop 
Sleep 5 
$0 start 
;; 
*) 
echo "Usage: $0 start|stop|restart" 
;; 
esac

Pour rendre le nouveau script que vous venez de créer exécutable, faites simplement :

chmod +x /etc/init.d/nagios

Maintenant, il ne reste qu’à démarrer avec le nouveau script.

/etc/init.d/nagios start

Nagios peut démarrer aussi manuellement sans recours au script installé précédemment. La commande suivante démarre le processus nagios en mode daemon.

/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg

Afin de vérifier que Nagios a démarré proprement, nous pouvons utiliser la commande ps avec la commande grep pour chercher le processus Nagios en cours d’exécution.

ps -ef | grep ˆnagios 
nagios 796 1 0 00:00:00 /opt/nagios/bin/nagios -d /etc/nagios/nagios.cfg

Si au moins un processus est trouvé, cela signifie que Nagios a été correctement démarré. Sinon, il faut revoir la configuration de Nagios et lire le fichier log dans le répertoire.

5. Mise à jour de Nagios depuis les versions précédentes

Dès qu’une nouvelle version de Nagios est sortie, vous devez penser sérieusement à mettre à jour votre serveur de supervision dès que possible. Généralement, les nouvelles versions contiennent des corrections de bugs, des nouvelles fonctionnalités ou des améliorations de performances. Avant de commencer toute opération de mise à jour, il faut sauvegarder la configuration actuelle du serveur dans un emplacement sécurisé.

En utilisant le script ci-dessous vous pouvez sauvegarder la configuration de Nagios.

#!/bin/bash 
#################################### 
 
###### Variable System Locale ###### 
 
#################################### 
 Repertoire_NAGIOS=/usr/local/nagios 
 Repertoire_Sauvgarde_LOCAL=/local/directory/path 
#################################### 
 
#################################### 
 Sauvgarde_Nagios=$Repertoire_Sauvgarde_LOCAL/nagios-backup.tgz 
 DATE=`date +"%F-%T"` 
 export Repertoire_Sauvgarde_LOCAL 
 export Repertoire_Sauvgarde_REMOTE 
 
 ######### vérifier si le fichier de sauvegarde existe ######### 
if [ -f $Sauvgarde_Nagios ] 
then 
  echo "Sauvgarde_Nagios file exists." 
  mv $Sauvgarde_Nagios $Sauvgarde_Nagios-$DATE 
  tar czf $Sauvgarde_Nagios -C / $Repertoire_NAGIOS 
else 
  echo "Backup file does not exist...creating." 
  tar czf $Sauvgarde_Nagios -C / $Repertoire_NAGIOS 
exit 
fi 
 
######### Supprimer les fichiers de plus de sept jours ######### 
find $Repertoire_Sauvgarde_LOCAL -type f -mtime +7 -exec rm {} \;

Pour mettre à jour Nagios, nous allons suivre la même démarche qu’avec la nouvelle installation. Avant de commencer l’opération de mise à jour, nous devons arrêter le service nagios en utilisant la commande suivante :

service nagios stop 

Afin de garder les bons droits sur les fichiers de configuration de Nagios après la mise à jour, il est préférable de se connecter au serveur avec l’utilisateur nagios.

sudo - nagios

Maintenant il ne reste qu’à télécharger les sources de la nouvelle version et commencer la procédure de compilation et d’installation décrite dans la section précédente de l’installation.

Après avoir fini la mise à jour, veuillez vérifier que la configuration de Nagios est correcte en invoquant la commande suivante :

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Suite à cette commande, le terminal renvoie un résumé sur la configuration existante :

Reading configuration data... 
Read main config file okay... 
Read object config files okay... 
Running pre-flight check on configuration data... 
Checking objects... 
        Checked 76 services. 
        Checked 25 hosts. 
        Checked 5 host groups. 
        Checked 0 service groups. 
        Checked 1 contacts. 
        Checked 1 contact groups. 
        Checked 26 commands. 
        Checked 5 time periods. 
        Checked 0 host escalations. 
        Checked 0 service escalations. 
Checking for circular paths... 
        Checked 25 hosts 
        Checked 0 service dependencies 
        Checked 0 host dependencies 
        Checked 5 timeperiods 
Checking global event handlers... 
Checking obsessive compulsive processor commands... 
Checking misc settings... 
 
Total Warnings: 0 
Total Errors:   0 
 
Things look okay - No serious problems were detected during the 
pre-flight check

Si aucune erreur n’a été détectée, il est temps de démarrer le service nagios.

service nagios start