NConf, une interface Web pour Nagios

Date: 16/06/2009 | Catégories: Nagios,Open-source,Reseau,Systeme | Tags: ,,,

Utilisateurs de Nagios, votre rêve va bientôt se réaliser ! Une équipe Suisse travaille sur le saint Graal de la supervision système et réseau. En effet leur projet NConf vient répondre à un besoin récurrent des utilisateurs de Nagios: l'impossibilité d'administrer son serveur via une interface Web.

Nous allons dans ce billet tester la version 1.2.6 de NConf sur un serveur Nagios 3.1. Je pars sur l'hypothèse ou le serveur Nagios a été installé en suivant mes deux premiers tutos (1 et 2).

Installation de NConf

On commence par récupérer la dernière version disponible de NConf (la 1.2.6).

wget http://sourceforge.net/projects/nconf/files/nconf/1.2.6-0/nconf-1.2.6-0.tgz/download

On décompresse l'archive:

tar zxvf nconf-1.2.6-0.tgz

Puis on copie le répertoire nconf à la racine de son serveur Web et on change les droits:

sudo mv nconf /usr/local
sudo chown -R www-data:www-data /usr/local/nconf

Notes: les sous-répertoires suivants doivent avoir les droits en écriture pour l'utilisateur www-data:
./config
./output
./static_cfg
./temp

Création de la base de donnée

La prochaine étape consiste à créer une base de données dédiée ) NConf. Pour créer un base de donnée nommée nconf avec les droits pour l'utilisateur nconfuser (mot de passe: nconfpassword), il faut saisir les commandes suivantes sur son serveur MySQL:

# mysqladmin --user=root -p create nconf

# mysql --user=root -p mysql

mysql> GRANT ALL ON nconf.* TO nconfuser@localhost IDENTIFIED BY 'nconfpassword';

mysql> flush privileges;

Configuration du serveur Web

Pour rendre accessible le répertoire /usr/local/nconf à partir de votre serveur Web, il faut ajouter le fichier de configuration /etc/apache2/conf.d/nconf.conf dans votre configuration Apache:

Alias /nconf /usr/local/nconf/
<Directory "/usr/local/nconf">
Options Indexes
AllowOverride AuthConfig Options
Order allow,deny
Allow from all
</Directory>

Puis relancer Apache:

apache2ctl restart

Configuration de NConf

La fin de l'installation se fait via une interface Web. Il faut donc saisir l'URL suivante dans un navigateur:

http://adressedevotreserveur/nconf/INSTALL.php

Ce qui devrait afficher:

On clique sur le bouton Next.

On doit saisir les paramètres de la base de donnée préalablement créées:

On clique sur le bouton Next.

Le test de la BD doit être OK:

On clique sur le bouton Next.

On fixe les répertoires de Nconf et de Nagios (/usr/local/nagios/bin). Attention dans le champs NAGIOS BIN, il faut saisir le chemin complet vers le binaire de Nagios (/usr/local/nagios/bin/nagios) et pas seulement le répertoire comme je l'ai fait dans un premier temps dans cette capture d'écran...

On clique sur le bouton Next.

On fixe un mot de passe (adminpassword) pour l'accès à NConf:

On clique sur le bouton Next.

Le programme d'installation va vérifier la configuration (tout doit être OK):

On clique sur le bouton Finish.

On efface les fichier suivant:

sudo rm -r /usr/local/nconf/INSTALL /usr/local/nconf/INSTALL.php /usr/local/nconf/UPDATE /usr/local/nconf/UPDATE.php

Mise en place de la synchronisation avec Nagios

Comme NConf peut être hébergé sur une machine différente du serveur Nagios, l'importation de la configuration NCOnf vers Nagios doit se faire à la main ou par un script shell. Je préfére bien entendu cette deuxième méthode.

Avant tout, il faut vérifier que le répertoire Nagios à les bon droits en lecture et écriture pour être modifié par l'utilisateur www-data (utilisateur avec lequel le serveur Apache est lancé). Le plus simple est d'ajouter www-data au groupe nagiosgrp:

# vigr
nagiosgrp:x:1002:nagios,www-data

puis de mettre les bons droits au répertoire etc:

chown -R nagios:nagiosgrp /usr/local/nagios/etc
chmod 770 /usr/local/nagios/etc

J'ai ensuite modifié le script ADD-ONS/deploy-local.sh de la manière suivante:

#!/bin/bash
OUTPUT_DIR="/usr/local/nconf/output/"
NAGIOS_DIR="/usr/local/nagios/etc/"
TEMP_DIR=${NAGIOS_DIR}"import/"
CONF_ARCHIVE="NagiosConfig.tgz"
if [ ! -e ${TEMP_DIR} ] ; then
mkdir -p ${TEMP_DIR}
fi
if [ ${OUTPUT_DIR}${CONF_ARCHIVE} -nt ${TEMP_DIR}${CONF_ARCHIVE} ] ; then
cp -p ${OUTPUT_DIR}${CONF_ARCHIVE} ${TEMP_DIR}${CONF_ARCHIVE}
tar -xf ${TEMP_DIR}${CONF_ARCHIVE} -C ${NAGIOS_DIR}
/etc/init.d/nagios reload
fi
exit

Il ne reste plus qu'a l'éxecuter de manière automatique (par exemple toutes les 5 minutes) via un crontab root:

# crontab -e
*/5 * * * * /bin/bash /usr/local/nconf/ADD-ONS/deploy_local.sh 2>&1 > /dev/null

Utilisation de NConf

La première chose à faire est de se connecter à l'interface Web et de s'authentifier (admin/adminpassword). La page suivante devrait s'afficher:

On va tester notre nouvelle interface en ajoutant un nouvel host dans Nagios. Pour cela on clique sur le menu "Hosts Add" de NConf:

On clique ensuite sur Submit.

On peut alors choisir les services à superviser (il est bien sûr possible d'ajouter des services via NConf):

On clique ensuite sur Submit.

Une dernière page s'affiche avec le résumé:

On clique sur Finish.

NConf vient ainsi d'ajouter ce nouvel host dans sa base de donnée. En cliquant maintenant sur le lien "Generate Nagios config", on va générer les fichiers de configuration de Nagios dans un NagiosConfig.tgz se trouvant dans le répertoire  /usr/local/nconf/output.

Il ne reste plus qu'a attendre le prochain lancement du script deploy-local.sh (dans les 5 minutes via crontab) pour que le host apparaisse dans Nagios:

Conclusion

Bien qu'en développement, NConf est très prometteur et comble le vide laissé par Nagios pour l'administration via une interface Web. L'idéal serait maintenant d'intégrer cette interface dans celle de Nagios (le hack ne doit pas être très difficile à faire) afin de ne pas avoir deux interfaces (NConf et Nagios).

A vous de tester maintenant...