Nagios : Installation et mise en oeuvre de Nagios 3

Dans cet article, nous allons installer étape par étape la version 3.2.0 de Nagios sur un système CentOS 5.3 (Linux).

Pour rappel, Nagios est une solution de supervision d’infrastructure réseau et applicatif sous licence GPL v2. Nagios est capable de contrôler l’état de fonctionnement des périphériques réseaux et de vous alerter en cas de panne ou de défaillance.

Tout d’abord, il vous faut comprendre que Nagios (Nagios Core) n’est en réalité qu’un ordonnanceur d’événement. Il s’occupe simplement de lancer des tâches à des instants précis.
Le bon fonctionnement des périphériques réseaux est effectué par d’autres programmes/scripts que l’on appelle couramment des plugins (ou greffons).
Nagios ordonne donc régulièrement l’exécution de plugins externes pour connaitre l’état d’un périphérique réseau.

Maintenant que vous avez compris cette distinction, nous pouvons procéder à son installation.

Dans cet article, nous allons installer étape par étape la version 3.2.0 de Nagios sur un système CentOS 5.3 (Linux).

Pour rappel, Nagios est une solution de supervision d’infrastructure réseau et applicatif sous licence GPL v2. Nagios est capable de contrôler l’état de fonctionnement des périphériques réseaux et de vous alerter en cas de panne ou de défaillance.

nagios_install_1

Tout d’abord, il vous faut comprendre que Nagios (Nagios Core) n’est en réalité qu’un ordonnanceur d’événement. Il s’occupe simplement de lancer des tâches à des instants précis.
Le bon fonctionnement des périphériques réseaux est effectué par d’autres programmes/scripts que l’on appelle couramment des plugins (ou greffons). Nagios ordonne donc régulièrement l’exécution de plugins externes pour connaitre l’état d’un périphérique réseau.

Maintenant que vous avez compris cette distinction, nous pouvons procéder à son installation. Toutes les actions que nous allons effectuer dans la suite de cet article s’effectue en tant qu’utilisateur root.

Dans un premier temps, vous devez bien entendu préparer le serveur destiné à accueillir Nagios (mise à jour, configuration réseau, désactivation de SELinux, synchronisation de l’horloge système, configuration de Sendmail pour recevoir les alertes, …).

Nagios dispose d’une interface Web pour afficher l’état des périphériques réseaux. Il est donc indispensable d’installer un serveur Web. La documentation officielle conseille l’utilisation de Apache/HTTPD. Sachez toutefois que vous pouvez très bien utiliser un autre serveur Web comme LighHTTPD.

– Installez le serveur Web (Apache/HTTPD) : yum install httpd
– Lancez le serveur Web au démarrage de la machine : chkconfig httpd on

Depuis la version 3.1.0 de Nagios, PHP est devenu en pré-requis. Mais, ne vous y trompez pas, les pages Web de l’interface de Nagios sont encore des pages en CGI. Seul quelques pages comme la page d’index sont pour l’instant en PHP.

– Installez PHP : yum install php

Si vous possédez un pare-feu d’installer sur votre système, vous devez autoriser le port TCP 80 en entrée.

– Éditez le fichier contenant les règles appliquées par le pare-feu : vi /etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

– Redémarrez le parfe-feu : service iptables restart
– Lancez immédiatement le serveur Web : service httpd start

Pour vérifiez que votre serveur Web fonctionne correctement, il vous suffit simplement d’utiliser un navigateur Web et d’entrer l’adresse IP de votre serveur comme URL.

nagios_install_2

Autre pré-requis indispensable si vous souhaitez afficher la carte des hôtes (statusmap.cgi) et les différents histogrammes (histogram.cgi et trends.cgi), est la bibliothèque graphique GD.

– Installez la bibliothèque GD et ces bibliothèques de développement : yum install gd gd-devel

Nagios étant écrit en langage C, il est obligatoire de disposer d’un compilateur C sur votre système pour pourvoir compiler et installer Nagios. La bibliothèque C (glibc) et ses utilitaires (glibc-common) devraient probablement être déjà installer sur votre système.

– Installez un compilateur C : yum install gcc

Passons à présent dans le vif du sujet, à savoir l’installation et la mise en œuvre de Nagios. Pour commencer, nous allons créer un utilisateur spécifique pour le service Nagios.

– Créez un groupe et un utilisateur pour Nagios : groupadd nagios et useradd -g nagios -d /usr/local/nagios -M -s /bin/bash nagios
– Verrouillez ce compte utilisateur : passwd -l nagios

Nous allons créer un autre utilisateur spécifique pour le fichier de commandes externe (nagios.cmd).

– Créez le groupe suivant : groupadd nagcmd
– Ajoutez l’utilisateur nagios dans le groupe nagcmd : usermod -a -G nagcmd nagios
– Ajoutez l’utilisateur apache dans le groupe nagcmd (l’utilisateur apache a été créé lors de l’installation du serveur Web) : usermod -a -G nagcmd apache

– Placez-vous dans le répertoire suivant : cd /usr/local/src/

Vous devez récupérer la dernière version de Nagios Core (dans notre cas, cela correspond à la version 3.2.0) sur le site officiel de Nagios à l’aide du gestionnaire de téléchargement wget : wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.0.tar.gz

– Décompressez l’archive que vous venez de récupérer : tar -xzf nagios-3.2.0.tar.gz
– Placez-vous dans le répertoire décompressé contenant les sources de Nagios Core : cd nagios-3.2.0

L’installation de Nagios dépend bien entendu de vos besoins et de votre utilisation quotidienne. Si vous n’avez pas l’intention d’utiliser des plugins PERL, il n’y a donc pas besoin d’embarquer l’interpréteur PERL (–enable-embedded-perl). Même chose pour le module de courtage d’événements (–enable-event-broker).
Nous souhaitons que l’interface Web de Nagios soit directement accessible depuis l’URL http://xxxxxx/ (par défaut, http://xxxxxx/nagios/).

– Obtenir des informations sur les paramètres de configuration : ./configure –help
– Configurez : ./configure –prefix=/usr/local/nagios –sysconfdir=/etc/nagios –localstatedir=/var/nagios –with-nagios-user=nagios –with-nagios-grp=nagios –with-command-user=nagios –with-command-group=nagcmd –with-gd-lib=/usr/local/lib –with-gd-inc=/usr/local/include –with-cgiurl=/cgi-bin –with-htmurl=/ –with-mail=/bin/mail –with-httpd-conf=/etc/httpd/conf.d –enable-nanosleep –enable-event-broker –enable-embedded-perl –with-perlcache
– Compilez les sources de Nagios Core : make all
– Installez les fichiers de Nagios Core dans le répertoire /usr/local/nagios/ : make install
– Installez le script de lancement nagios dans le répertoire /etc/init.d/ : make install-init
– Installez les fichiers de configuration dans le répertoire /etc/nagios/ : make install-config
– Installez le fichier de commande externe avec les droits adéquates : make install-commandmode
– Installez le fichier de configuration de restriction d’accès à l’interface Web de Nagios dans le répertoire /etc/httpd/conf.d/ : make install-webconf

nagios_install_3

Il est nécessaire dans notre cas d’effectuer quelques modifications dans le fichier de configuration d’Apache.

– Éditez le fichier de configuration d’Apache/HTTPD et mettez en commentaire ces lignes : vi /etc/httpd/conf/httpd.conf

#Alias /icons/ "/var/www/icons/"

#<Directory "/var/www/icons">
#    Options Indexes MultiViews
#    AllowOverride None
#    Order allow,deny
#    Allow from all
#</Directory>

#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

#<Directory "/var/www/cgi-bin">
#    AllowOverride None
#    Options None
#    Order allow,deny
#    Allow from all
#</Directory>

#Alias /error/ "/var/www/error/"

#<IfModule mod_negotiation.c>
#<IfModule mod_include.c>
#    <Directory "/var/www/error">
#        AllowOverride None
#        Options IncludesNoExec
#        AddOutputFilter Includes html
#        AddHandler type-map var
#        Order allow,deny
#        Allow from all
#        LanguagePriority en es de fr
#        ForceLanguagePriority Prefer Fallback
#    </Directory>
#</IfModule>
#</IfModule>

– Éditez ce fichier pour ajouter une barre oblique : vi /etc/httpd/conf.d/nagios.conf

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

Par défaut, le nom de l’utilisateur utilisé dans le fichier /etc/nagios/cgi.cfg, possédant tous les droits dans l’interface Web, porte le nom de nagiosadmin.

– Créez un mot de passe pour l’utilisateur nagiosadmin à l’aide de l’utilitaire HTPASSWD fournit avec Apache/HTTPD : htpasswd -c /etc/nagios/htpasswd.users nagiosadmin

– Redémarrez le serveur Web pour prendre en compte le fichier de configuration /etc/httpd/conf.d/nagios.conf : service httpd restart

– Éditez le fichier de configuration de Nagios pour modifier le format de la date : vi /etc/nagios/nagios.cfg

date_format=euro

Passons à l’installation des plugins Nagios (vous savez ces programmes externes qui contrôle l’état de vos périphériques réseaux …).

– Placez-vous dans le répertoire suivant : cd /usr/local/src/

Vous devez récupérer la dernière version des plugins Nagios, (dans notre cas, cela correspond à la version 1.4.14) à l’aide du gestionnaire de téléchargement wget : wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.14.tar.gz

– Décompressez l’archive que vous venez de récupérer : tar -xzf nagios-plugins-1.4.14.tar.gz

– Installez la bibliothèque de développement de NET-SNMP et ces utilitaires (snmget, snmpwalk, …) : yum install net-snmp-devel net-snmp-utils

FPING permet d’effectuer en parallèle plusieurs requêtes echo en utilisant le protocole ICMP. Son utilisation s’avère intéressante.

– Téléchargez la dernière version de FPING : wget http://fping.sourceforge.net/download/fping.tar.gz
– Décompressez l’archive que vous venez de récupérer : tar -xzf fping.tar.gz
– Placez-vous dans le répertoire suivant : cd fping-2.4b2_to
– Configurez les sources de FPING : ./configure
– Compilez les sources de FPING : make
– Installez FPING : make install

FPING nécessite les droits root pour s’exécuter et accomplir ses tâches.

– Allouez temporairement les droits root durant l’exécution du programme (droit SUID) : chmod u+s /usr/local/sbin/fping

Si vous avez besoin des plugins check_ldap, check_mysql et check_pgsql, vous devez installer les bibliothèques de développement d’OpenLDAP, MySQL et PostgreSQL à l’aide de l’utilitaire YUM.

– Placez-vous dans le répertoire décompressé contenant les sources des plugins Nagios : cd nagios-plugins-1.4.14
– Configurez les sources des plugins Nagios : ./configure –prefix=/usr/local/nagios –with-nagios-user=nagios –with-nagios-group=nagios –with-cgiurl=/cgi-bin
– Compilez : make
– Installez : make install

nagios_install_4

Les plugins Nagios seront installés dans le répertoire /usr/local/nagios/libexec/. Le fichier de configuration /etc/nagios/resource.cfg contient une variable spécifique $USER1$. Cette variable indique l’emplacement des plugins Nagios.

Il reste à modifier la configuration de Nagios pour utiliser FPING à la place de la commande ping habituelle.

– Éditez le fichier de configuration contenant la définition des commandes Nagios : vi /etc/nagios/objects/commands.cfg

# 'check-host-alive' command definition
define command{
command_name    check-host-alive
command_line    $USER1$/check_fping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -n 5
}

– Vérifiez rapidement si vous avez des erreurs dans vos fichiers de configuration : service nagios checkconfig
– En cas d’erreur, vous pouvez vérifier plus en détails pour corriger les éventuelles erreurs : /usr/local/nagios/bin/nagios -v /etc/nagios/nagios.cfg
– Lancez Nagios au démarrage du serveur : chkconfig nagios on
– Lancez le service Nagios : service nagios start ou directement : /usr/local/nagios/bin/nagios -d /etc/nagios/nagios.cfg

Avec un navigateur Web, vous pouvez accéder à l’interface Web de Nagios (http://xxxxxx/) avec l’utilisateur nagiosadmin et le mot de passe que vous avez entré précédemment.

nagios_install_5

Il ne vous reste plus qu’à définir les différents périphériques réseaux et services que vous souhaitez superviser pour être alerter de leurs états.

Et si  l’interface Web de Nagios n’est pas à votre goût, vous pouvez toujours utiliser le skin Vautour Style.

Nagios : Des plugins Nagios en veux-tu en voilà !

Un plugin Nagios a en charge le contrôle de l’état et des performances d’un hôte. Grâce à lui, il vous est possible de vérifier la charge CPU, la mémoire utilisée, le trafic réseau d’un serveur ou encore de surveiller la température d’une salle serveur. Le résultat d’un plugin étant ensuite récupéré par Nagios.

Les plugins Nagios que je vous propose, permettent de vérifier différents services à l’aide de requêtes SNMP (version 1) effectuées sur un agent SNMP.

1. check_snmp_cpu : Contrôle la charge CPU d’un serveur. Ce plugin retourne des données de performance.
2. check_snmp_memory : Indique la mémoire utilisée par un serveur. Ce plugin retourne des données de performance.
3. check_snmp_disksize : Vérifie l’espace disque disponible sur un point de montage. Ce plugin retourne des données de performance.
4. check_snmp_dell_equallogic : Surveille l’état d’une baie de stockage Dell EqualLogic. Ce plugin retourne des données de performance.
5. check_snmp_dell_poweredge : Vérifie l’état d’un serveur Dell PowerEdge (température CPU, redondance de l’alimentation, état des disques durs) à l’aide de Dell OpenManage Server Administrator. Ce plugin retourne des données de performance pour la température CPU.
6. check_snmp_ups : Indique l’état d’un onduleur. Ce plugin retourne des données de performance.
7. check_snmp_uptime : Indique la durée fonctionnement d’un équipement. Ce plugin retourne des données de performance.
8. check_snmp_printer : Affiche l’état des consommables et du nombre de pages imprimé. Ce plugin retourne des données de performance.

Les plugins Nagios présents dans cet article sont écrits en Bash et sont distribués sous licence GPLv2. Ils nécessitent en pré-requis, l’installation des utilitaires SNMP (snmpget et snmpwalk) sur votre serveur Nagios : yum install snmp-utils.

A noté que les plugins Nagios sont distribués en langue anglaise. Il vous sera toutefois assez facile de les francisé si vous le souhaitez.

Quelques exemples de graphiques RRDTool d’après les données de performance retournées par ces plugins :

check_snmp_traffic

check_snmp_memory

check_snmp_cpu