NAGIOS – Mise en place de l’interface web

Mise en place de l’interface web

Dans le chapitre précédent, nous avons mis en place une solution de supervision qui ne sert qu’à notifier les contacts en cas d’alerte. Jusqu’à maintenant cette solution ne permet pas aux administrateurs de suivre les états actuels et historiques des hôtes et des services. Ceci nécessite d’installer une interface permettant de relier les administrateurs à ce qui se passe à l’intérieur de Nagios. Ceci a été pris en considération et Nagios dispose maintenant d’interface web qui sert à afficher l’état de tous les hôtes et services, lire les journaux, créer des rapports, et d’autres fonctionnalités que nous allons voir tout au long de ce chapitre. L’accès à cette interface web se fait avec n’importe quel navigateur internet. En utilisant des CGI et des scripts PHP, il permet une vue d’ensemble de la performance générale de tous les hôtes et les services surveillés. Cela permet d’avoir beaucoup plus de détails que via les notifications par e-mail.

Durant la phase l’installation de Nagios, nous avons compilé et installé les fichiers nécessaires pour la mise en place de l’interface web. En fait, l’interface web est disponible implicitement avec les sources et les distributions binaires de Nagios. Dans notre cas, nous avons exécuté la commande make install web-conf durant la phase de compilation et l’installation de Nagios pour préparer l’environnement à l’activation de l’interface web. Cette commande vient d’installer les fichiers qui constituent l’interface web. Ces fichiers sont situés dans :

  • /usr/local/nagios/share : ce répertoire contient les fichiers de l’interface comme les fichiers HTML et les images.

  • /usr/local/nagios/sbin : ce répertoire contient les fichiers CGI de l’interface.

  • /usr/local/nagis/var/log : ce répertoire contient les fichiers de log.

Nagios utilise des scripts PHP pour lire les fichiers de configuration et le fichier status.dat et aussi les fichiers HTML statiques pour présenter les informations de la supervision sur l’interface web. Pour cette raison, il faut installer un serveur web basé sur Apache et activer PHP sur ce serveur pour que l’interface web fonctionne correctement.

Pour installer le serveur web apache et PHP, nous avons utilisé la commande suivante pour une distribution Ubuntu ou Debian :

apt-get install apache2 php libapache2-mod-php5

Et la commande pour une distribution CentOS :

yum install httpd php

Maintenant, il reste à configurer ce serveur web Apache pour accéder à l’interface web de Nagios.

1. Configuration du serveur web

Nous avons vu que Nagios peut être installé de deux manières par compilation des sources ou en utilisant les distributions binaires. Avec la deuxième méthode, vous n’avez pas besoin de configurer le serveur web car il est sûrement configuré durant l’installation de Nagios. Alors, il suffit d’accéder à cette URL : http://adresse-ip-serveur/nagios (changer l’adresse-ip-serveur par l’adresse IP ou le nom de domaine de votre serveur Nagios). S’il fonctionne correctement, il devrait vous demander un nom d’utilisateur et un mot de passe. Le nom de l’utilisateur par défaut est appelé nagioadmin et le mot de passe est celui que vous avez écrit durant la phase d’installation.

Si vous avez suivi la méthode d’installation de Nagios par compilation, votre serveur nécessite d’autres étapes de configuration pour qu’il soit prêt à l’utilisation.

Afin que l’interface web fonctionne correctement avec le serveur web Apache, il faut que ce dernier connaisse le répertoire CGI et le répertoire web de Nagios. Ceci nécessite la création d’un fichier de configuration nagios sous le répertoire d’Apache. Pour une distribution Ubuntu ou Debian, le fichier doit être créé sous le répertoire /etc/apache2/conf.d/. Alors que pour une distribution CentOS, le fichier doit être créé sous le répertoire /etc/httpd/conf.d/. Le fichier doit contenir une configuration comme l’exemple suivant :

ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin" 
<Directory "/usr/local/nagios/sbin"> 
   Options ExecCGI 
   AllowOverride None 
   <IfVersion >= 2.3> 
      <RequireAll> 
         Require all granted 
         AuthName "Nagios Access" 
         AuthType Basic 
         AuthUserFile /usr/local/nagios/etc/htpasswd.users 
         Require valid-user 
      </RequireAll> 
   </IfVersion> 
   <IfVersion < 2.3> 
      Order allow,deny 
      Allow from all 
      AuthName "Nagios Access" 
      AuthType Basic 
      AuthUserFile /usr/local/nagios/etc/htpasswd.users 
      Require valid-user 
   </IfVersion> 
</Directory> 
Alias /nagios "/usr/local/nagios/share" 
<Directory "/usr/local/nagios/share"> 
   Options None 
   AllowOverride None 
   <IfVersion >= 2.3> 
      <RequireAll> 
         Require all granted 
         AuthName "Nagios Access" 
         AuthType Basic 
         AuthUserFile /usr/local/nagios/etc/htpasswd.users 
         Require valid-user 
      </RequireAll> 
   </IfVersion>

2. Accès à l’interface web

Jusqu’à cette étape, les utilisateurs ne peuvent pas se connecter à l’interface web de Nagios. En effet, Nagios ne permet qu’aux utilisateurs authentifiés d’accéder à l’interface web car ce dernier ne donne accès aux utilisateurs qu’à l’affichage des états des hôtes et des services mais il permet aussi d’envoyer des commandes externes à Nagios. Si cette option est activée, les contrôles peuvent être activés et désactivés via le navigateur web, et même le service nagios peut être redémarré via ce dernier. Et pour des raisons de sécurité, seuls les utilisateurs autorisés devraient être en mesure d’exécuter ces commandes externes.

Afin d’autoriser l’utilisateur nagiosadmin à se connecter à l’interface web, nous allons avec la commande suivante créer un mot de passe pour l’utilisateur nagiosadmin et l’enregistrer dans le fichier htpasswd.users sous le répertoire /usr/local/nagios/etc/.

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

La commande va vous demander d’écrire un mot de passe que vous souhaitez utiliser.

Le fichier htpasswd.users doit être accessible par le serveur web pour lire les utilisateurs autorisés à accéder. Pour cela, nous allons maintenant définir la propriété du fichier de manière appropriée de sorte que l’utilisateur apache puisse accéder au fichier. Comme l’utilisateur de serveur web (apache ou www-data) appartient au groupe nagioscmd, nous allons définir ce groupe comme propriétaire du fichier htpasswd.users.

chown nagios:nagcmd /usr/local/nagios/etc/htpasswd.users 
chmod 600 /usr/local/nagios/etc/htpasswd.users

Pour qu’un utilisateur puisse agir depuis l’interface web, il faut l’autoriser dans le fichier de configuration /usr/local/nagios/etc/cgi.cfg. Les lignes de configurations ci-dessous permettent à l’utilisateur nagiosadmin d’effectuer toutes les actions possibles sur l’interface web. Plusieurs utilisateurs peuvent être spécifiés en séparant chaque utilisateur avec une virgule.

# Utiliser l’authentification 
use_authentication=1 
# Acceder aux informations systeme 
authorized_for_system_information=nagiosadmin 
# Acceder a la configuration 
authorized_for_configuration_information=nagiosadmin 
# Lancer des commandes 
authorized_for_system_commands=nagiosadmin 
# Observer les hotes et services 
authorized_for_all_services=nagiosadmin 
authorized_for_all_hosts=nagiosadmin

La dernière étape qui doit être faite est de redémarrer les deux services Nagios et Apache pour qu’ils prennent en compte la nouvelle configuration en invoquant les deux commandes suivantes :

service nagios restart

Pour redémarrer le service apache dans une machine Ubuntu/Debian :

service apache2 restart

Pour redémarrer le service apache dans une machine CentOS :

service httpd restart

C’est fait, vous pouvez accéder à l’interface web avec le compte nagiosadmin à travers l’URL http://adresse-ip-serveur/nagios (il faut changer l’adresse-ip-serveur par l’adresse IP ou le nom de domaine de votre serveur Nagios).

Après l’authentification réussie, vous devriez voir un écran d’accueil similaire à celui-ci :

images/nagios-1.PNG