Nagios : installation

Nagios est un système de supervision très répandu. Son architecture modulaire et son statut open source facilitent la création de très nombreux modules permettant de superviser une grande variété de ressources informatiques, ce qui concourt au succès de ce système.
L’écosystème autour de Nagios est vaste, et ce billet n’a pas l’ambition de couvrir tous les aspects du fonctionnement de ce système de supervision : il s’agit seulement ici de décrire comment installer Nagios et de tester le bon fonctionnement d’une configuration de base. L’environnement retenu ici pour héberger Nagios est Ubuntu Server en version 11.04, sans interface graphique. On supposera que le compte « root » a été activé et est utilisé pour l’installation, d’où l’absence de toute commande « sudo » dans ce qui suit.

Après l’installation d’Ubuntu, sans aucun des services proposés par l’installateur, mettre à jour le système :
apt-get update
apt-get upgrade

Puisque nous ferons le choix de compiler Nagios à partir de ses sources, divers outils de développement sont nécessaires, et qu’apporte le paquet « build-essential ». Ce paquet comprend principalement de quoi compiler en C et C++, et s’installe par la commande : apt-get install build-essential

L’utilisation de Nagios passe par une interface web, ce qui nécessite d’installer Apache. De plus, quelques autres logiciels seront nécessaires :
- le langage php, ainsi que diverses librairies pour ce langage : module pour Apache, bibliothèque PEAR, librairie graphique gd, modules ldap et snmp,
- le langage perl,
- RRDTools, librrd4 : outils de gestion de base de données de type RRD (base de taille fixe), type de base adapté à la sauvegarde de données de supervision (« données cycliques »),
- une librairie permettant à Nagios d’afficher des diagrammes,
- divers outils pour que Nagios et ses plugins puissent effectuer des résolutions de nom, et utiliser le protocole snmp.
Au total, compte tenu de quelques autres besoins et des dépendances entre ces paquets, il faut installer par « apt-get » les paquets suivants : apache2, rrdtool, bsd-mailx, librrds-perl, libapache2-mod-php5, php5, php-pear, php5-gd, php5-ldap, php5-snmp, libperl-dev, libradius1, qstat, radiusclient1, snmp, snmpd, libgd2-noxpm-dev.
Cette liste de paquets est suffisante pour installer Nagios sur Ubuntu Server, version 11.04. Pour une installation sur une version antérieure d’Ubuntu, d’autres paquets peuvent s’avérer nécessaires : on trouvera aisément sur internet d’excellents tutoriels pour ces cas.

L’installation du paquet bsd-mailx appelle un outil de configuration du serveur Postfix. Un paramétrage complet de Postfix fait appel à de très nombreuses options, dont l’explication déborderait largement du cadre de ce billet.
On se contentera de signaler à ce sujet que :
- cet outil de configuration (qui ne couvre pas, et de loin, toutes les options de Postfix) peut aussi se lancer manuellement par la commande : /usr/share/postfix/dpkg-reconfigure postfix
- parmi les types de configuration proposés , «smarthost» correspond au cas – le plus fréquent – où le serveur de mails se trouve sur une autre machine : le postfix du serveur Nagios servira alors à envoyer les mails de notification à cet autre serveur, d’où les utilisateurs relèvent leurs boîtes à lettres électroniques.

Nagios n’est pas destiné à être lancé en root. On utilise un compte dédié à cette tâche, qu’on pourra appeler « nagios ». A sa création ce compte fera automatiquement partie du nouveau groupe d’utilisateurs « nagios », auquel il faudra alors ajouter l’utilisateur « www-data », créé lors de l’installation d’Apache :
/usr/sbin/useradd nagios
passwd nagios
: on choisit alors un mot de passe pour cet utilisateur
/usr/sbin/usermod –aG nagios www-data ( inutile de retirer www-data des groupes auxquels il appartient déjà : le groupe www-data, ici).

A la date de rédaction de ce billet, les versions des sources de Nagios à télécharger sont « nagios-3.3.1 » et « nagios-plugins-1.4.15 ». On les télécharge par la commande wget, dans le répertoire /usr/src, classiquement :
cd /usr/src
wget
http://surfnet.dl.sourceforge.net/sourceforge/nagios/nagios-3.3.1.tar.gz
wget
http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz

Décompression de Nagios :  tar xzf nagios-3.3.1.tar.gz

On configure la compilation de Nagios en précisant le nom du groupe pouvant ensuite accéder à cette commande :
cd nagios
./configure –with-command-group=nagios

Au bout de quelques secondes s’affiche une récapitulation des options de la compilation à venir :

General Options:
Nagios executable: nagios
Nagios user/group: nagios,nagios
Command user/group: nagios,nagios
Embedded Perl: no
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/

Certains tutoriels ajoutent l’option –enable-embedded-perl à la commande ./configure de Nagios. Comme son nom l’indique, il s’agit alors de compiler Nagios pour que puisse être utilisé l’interpréteur Perl intégré à Nagios. Les avantages et les inconvénients de ce choix sont similaires à ceux de la même option pour Apache (mod_perl) :
- parmi les avantages ont peut citer une plus grande rapidité d’exécution et un allègement de la charge du système,
- parmi les inconvénients, parfois certaines incompatibilités, et surtout un débogage plus difficile.
Sauf projet de concevoir soi-même des plugins, cette option apporte donc des avantages; dans ce cas on peut aussi ajouter l’option –with-perlcache, qui fera que l’interpréteur Perl intégré à Nagios utilisera un cache interne, pour optimiser l’accès à des scripts fréquemment appelés.

La compilation de Nagios commence, classiquement, par un « make all ».
La lecture du fichier Makefile, dans /sur/src/nagios, donne la liste de commandes suivantes à exécuter. La séquence complète de compilation est la suivante :
make all
make install
make install-init
make install-commandmode
make install-config
make install-webconf

La commande make install retourne deux erreurs, dues à l’absence de sous-répertoires de includes/rss. Ces erreurs ne sont pas bloquantes et permettent de continuer à installer Nagios. Toutefois, ces erreurs empêchent la bonne installation d’un thème de l’interface web de Nagios.
Pour éviter ce problème, la solution la plus simple est, avant l’exécution de la commande make install, de corriger le fichier /usr/src/nagios/html/Makefile. A la fin de ce fichier, remplacer :
includes/rss/* par includes/rss/*.*
includes/rss/extlib/*
par includes/rss/extlib/*.*

Après la commande make install-webconf, on peut aussi choisir d’installer un nouveau thème disponible pour l’interface web de Nagios : make install-exfoliation.
Pour plus tard réinstaller le thème classique de Nagios (installé par défaut) : make install-classicui.

Il faut aussi corriger un petit problème :
- à la ligne 1117 du fichier /usr/local/nagios/etc/nagios.cfg, il est fait mention du script perl p1.pl, qui est sensé se trouver dans le répertoire /usr/local/nagios/bin/,
- or, à la suite de l’installation de nagios-3.3.1, ce script est dans le répertoire /usr/src/nagios/
Il suffit donc de le recopier dans le répertoire mentionné à la ligne 1117 de nagios.cfg

Il faut ensuite automatiser le lancement de Nagios, dont le script sh permettant le démarrage et l’arrêt se trouve dans le répertoire /etc/init.d
En théorie, puisqu’Ubuntu 11.04 Server démarre avec le runlevel 2, il suffit de placer un lien vers ce script sh dans le répertoire rc2.d : ln -s /etc/init.d/nagios /etc/rc2.d/S99nagios, le choix du préfixe S99 faisant démarrer Nagios après Apache (préfixe S91). La plupart des tutoriels sur l’installation de Nagios préfèrent utiliser le « runlevel S », dont les scripts sont lancés avant ceux du runlevel effectivement utilisé. Ceci permet d’économiser la création de liens vers le démarrage de Nagios dans les autres répertoires de type rc.d, correspondant aux autres runlevels qui peuvent aussi être éventuellement utilisés. Cette astuce, sans inconvénient notable, place toutefois ce script de démarrage de Nagios (en fait un lien vers ce script) dans un répertoire où il co-existe avec d’autres scripts de toute autre nature, ce qui pourrait déranger un administrateur d’Ubuntu Server perfectionniste…

Nagios s’utilise avec une interface web, dont l’accès est réservé à un utilisateur authentifiable. Il faut donc créer un compte « nagiosadmin », par la commande :
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
qui demande de choisir un mot de passe pour cet utilisateur « nagiosadmin ». Penser à relancer ensuite Apache : /etc/init.d/apache2 reload

Pour tester la bonne installation de Nagios, on peut demander à ce serveur Ubuntu de … se superviser lui-même. Cette supervision locale ne nécessite évidemment pas de moyen de connexion entre machines sur un réseau, moyens qui sont mentionnés dans les parties suivantes de ce groupe de billets.
Localement, il suffit d’installer les plugins de Nagios apportés par le paquet « nagios-plugins-1.4.15 ».
La compilation de ces plugins nécessite d’installer auparavant les paquets suivants : fping, libnet-snmp-perl, libgnutls-dev, libldap-dev, libradiusclient-ng-dev.
Compilation :
cd /usr/src
tar xzf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
./configure –with-nagios-user=nagios –with-nagios-group=nagios
make
make install

Pour constater le bon fonctionnement de cette supervision locale, il faut alors se connecter à : http://x.x.x.x/nagios/, où x.x.x.x est l’adresse du serveur Nagios (ou, bien sûr, son nom si on passe par une résolution DNS). La saisie du login « nagiosadmin / nagiosadmin » permet d’accéder à l’interface web d’administration de Nagios, où la sélection de l’item « services » affiche la liste des services supervisés (en local, donc), avec leur statut et diverses autres informations.

 

Nagios : installation
Nagios : configuration de la supervision
Nagios : supervision d’un pc distant sous Linux
Nagios : supervision d’un pc distant sous Windows