- Accueil > Réseau > Nagios
Titre Nagios

Deuxieme sous-titre

Dans cette partie nous rentrerons dans le vif du sujet et nous verrons les procédures que nous avons suivies afin de monter notre serveur. Nous verrons tout d'abord l'installation du système d'exploitation, puis l'installation des différents services tel que " web " ou " mysql " de manière à ce qu'ils s'exécutent " proprement " au démarrage de la machine. C'est ensuite que nous verrons l'installation des 3 outils nous servant à superviser notre réseau.
Dans cette partie, il sera relevé les différents problèmes que nous avons rencontrés durant toute cette mise en place.
Au début de notre stage, et avant toutes installations finales, nous avons pu tester et étudier les outils de supervision présentés antérieurement. Lorsque nous configurerons ou installerons un programme quel qu'il soit, nous nous servirons d'un petit utilitaire qui s'appelle " Putty " et qui permet à une machine distante de type " Windows " de se connecter sur une machine linux en ssh.
Ici, seule l'installation du système d'exploitation s'effectuera sur la machine directement, tout le reste sera fait à distance en ligne de commande Unix. Voici comment se présente Putty:

Il nous suffit simplement de renseigner les champs Host Name (or IP address) de la machine à joindre, le numéro de port sur lequel on veut se connecter.

Nous accédons ensuite à une fenêtre se présentant comme un terminal sur la machine distante.

C'est donc par cette méthode que nous effectuerons tout changement sur la machine à installer et configurer.

Ecran de démarrage de Putty


image de Nagios 1

Lors de notre stage, nous avons été à plusieurs reprises contraints d'aller télécharger des fichiers sur Internet. Etant donné que la machine à configurer est dépourvue de connexion Internet et que nous faisons toutes les manipulations à distance, nous nous sommes servis d'un petit utilitaire qui s'installe sur Windows et qui s'appelle WinSCP (annexe C). Cet utilitaire permet de faire des transferts d'une machine Windows à une machine Unix, voici comment il se présente:

Interface de WinSCP


image de Nagios 1

Sur cette interface, vous pouvez voir à gauche le contenu de votre machine Windows local, puis à droite, le contenu de votre machine Unix distante. Par un simple glisser-coller, on déplace les fichiers d'un système à l'autre.

Tout nos tests ont été effectués sur un serveur de tests et sur des machines virtuelles, c'est la raison pour laquelle je parlerai de plusieurs machines lorsque je mentionnerai des tests, des problèmes, des solutions...

1. Installation d'un serveur Apache

Dans la mise en place de notre serveur de supervision, nous avons décidé d'installer un serveur Web " Apache dans sa version 2 ". Son installation est très simple et nous n'avons pas rencontré de problème particulier. La méthode d'installation est simple, il suffit de récupérer le package de Apache sur le site http://www.apachefrance.com/ puis de le transférer à l'aide de WinSCP sur le serveur de supervision. Suite à cela, nous désarchivons le package à l'aide de la commande TAR suivi de ses options. Puis nous suivons ce qui est noté dans le fichier README prévu à cet effet. Une fois le serveur installé, il ne nous reste plus qu'à tester si il fonctionne bien en local et sur le réseau, pour cela, il nous suffit de taper http://127.0.0.1/ en local et http://ipdelamachine/ sur le réseau. N'ayant rencontré aucun problème sur cette installation, je n'ai pas grand chose à ajouter sinon un fichier de configuration du serveur apache à bien configurer pour le réseau considéré, ce fichier se trouve dans " /usr/local/apache/etc/httpd/conf/httpd.conf " . Ce fichier sert en l'occurrence à regarder où se trouve les fichiers relatifs à l'affichage des pages Web, aux alias, aux authentifications utilisées, etc...
Maintenant que le serveur Web est installé, nous pouvons vérifier que notre serveur dispose bien de toutes les dépendances et autres outils nécessaires au bon fonctionnement des programmes de supervision.

2. Préliminaires

Nous voici au coeur de l'installation, tout d'abord il nous a fallu vérifier si nous avions les librairies, et dépendances suivantes pour continuer notre installation de façon à ce que Nagios et Oreon fonctionne correctement:

- gd-devel
- mysql-devel
- fontcongif-devel
- gcc-c++
(attention, nous avons remarqué que ce package était lui aussi dépendant d'autres packages, il nous a donc fallu corrigé cette anomalie.)

Lors de l'installation, nous avons rencontré des problèmes pour installer les logiciels nécessaires à Oreon, certains packages étant indispensables :

image de Nagios 1

Ceux qui sont installés par défaut avec le système d exploitation, ne sont pas à jour :

image de Nagios 1

Pour résoudre ce type de problème, il est indispensable de suivre l ordre d installation des packages comme ci-dessous. Nous allons donc installer des librairies supplémentaires pour nous permettre de mettre à jour les logiciels indispensables, avant d installer les logiciels pour Oreon.

Tout d'abord on a désinstallé les packages posant problème à l'aide d'un rpm -ev (e pour erase et v pour verbose):

rpm-ev php-devel.vieilleversion.rpm

On a fait de même avec tous les rpm en rapport avec php.
Ensuite nous avons réinstallé ces packages dans leur version la plus récente à l'aide d'un " rpm -iv " (i pour installation et v pour verbose), cette manipulation était nécessaire car nous avons remarqué que si ces packages n'étaient pas à jour, le programme de supervision rencontrait quelques

conflits. Oreon nous a demandé plus de dépendances que Nagios, il est indispensable de ne pas en oublier une seule:

- rrdtool
- rrdtool-perl
- perl-GD
- net-snmp-perl
- perl-Config-IniFiles
- perl-Crypt-DES
- perl-DigestHMAC
- perl-Digest-SHA1
- perl-Socket6
- php-pear
- php-gd
- php-snmp
- php-mysql
- glib2-devel
(attention, nous avons remarqué que ce package était lui aussi dépendant d'autres packages, il nous a fallu corriger aussi ceci en installant les packages relatifs à celui ci.)

Nous aurons également besoin plus tard de vérifier les bases de données. Notre but étant de pouvoir sauvegarder le résultat de nos tests de monitoring, on doit donc pouvoir sauvegarder les bases de données contenant ces résultats. Il existe pour cela un logiciel qui nous permettra de facilement manipuler nos bases. Ce logiciel est " webmin ", qui se télécharge facilement sur http://www.webmin.com/. Son installation est simple, afin de voir si votre logiciel " webmin " fonctionne, il suffit de regarder dans un navigateur à l'adresse http://ipdelamachine:10000/ (10000 étant le port par défaut utilisé par webmin lors de son installation). Webmin nous servira également à configurer le client de messagerie du serveur dans le but de faire de la notification par e-mail.

Ensuite il nous faut faire une configuration des packages PEAR:

image de Nagios 1

PEAR étant " PHP Extension and Application Repository ", cette commande va installer des extensions php afin qu'Oreon soit entièrement fonctionnel au niveau de son interface web.

Lors de nos test sur l'installation de Nagios, Oreon, et NaReTo nous avons rencontré des problèmes de droits se manifestant à la fin sur l'interface Web, cette dernière nous renvoyait un message d'erreur nous indiquant que nous n'avions pas les droits sur la page. Pour remédier à cela, il nous a fallu créer des utilisateurs, des groupes d'utilisateurs et attribuer des droits particuliers pour eux.
Nagios, ainsi que le serveur Web apache 2 ont besoin d un certain nombre de droits d exécution et/ou de lecture/écriture sur les fichiers installés. Il nous faut donc configurer les utilisateurs et groupes adéquats, et leur associer les répertoires d installation, entrer les commandes suivantes :

- adduser nagios : création de l utilisateur Nagios.
- mkdir /usr/local/nagios : création du répertoire d installation de Nagios.
- chown nagios.nagios /usr/local/nagios : l utilisateur Nagios appartenant au groupe du même nom devient propriétaire du répertoire d installation. - /usr/sbin/groupadd nagiocmd : création du groupe nagiocmd.
- /usr/sbin/usermod -G nagiocmd apache : ajout du groupe nagiocmd pour l utilisateur apache (droits que possède le serveur web).
- /usr/sbin/usermod -G nagiocmd nagios : ajout de ce même groupe pour l utilisateur Nagios.

Une fois ces manipulations effectuées, nous sommes prêt à accueillir le programme Nagios dans notre serveur, on a testé plusieurs fois cette installation, car nous n'avions pas effectué les bons préliminaires ou bien il nous manquait quelques dépendances.

3. Installation de Nagios

Avant de commencer l'installation, il est nécessaire de télécharger les packages de l'outil Nagios sur http://www.nagios.org/ dans l'onglet " download ". Pour notre part, nous avons pris la dernière version stable (ici la 2.9). Attention, lors de nos tests, nous avons tenté d'installer le package RPM proposé sur leur site, mais ce dernier nous a donné plus de difficultés que de facilités, en effet, son installation se fait proprement mais dans des répertoires un peu éparpillés partout dans notre serveur, ce qui est contraignant pour la suite, car Oreon nous demandera de spécifier un seul dossier de Nagios. C'est la raison pour laquelle nous avons téléchargé le package proposé au format " .tar.gz ".
Nous avons remarqué également que Nagios seul, n'installait aucun service prédéfini, comme des " check-ping ", " check-http ", etc... Pour contrer ce problème, nous avons du télécharger les plugins de Nagios qu'ils proposent également dans leur site au format " .tar.gz ".

Nous avons pu à partir de ce moment installer l'outil. Tout d'abord, il a fallu désarchiver le package téléchargé sur le site, puis dans le dossier désarchiver, nous avons rentré les commandes suivantes:

- ./configure enable-embedded-perl with-perlcache disable-statuswrl --withdefault-perfdata

A ce niveau, un processus de configuration est lancé, il nous a suffit après cela de faire:

- make all
- make install
- make install-init (commande indispensable pour mettre le service de Nagios au démarrage du système)
- make install commandmode
- make install-config (commande permettant de nous donné des exemples de fichiers de configuration dans le chemin " /usr/local/nagios/etc/ "

Afin de ne pas rencontrer le problème de droits, nous nous sommes servis des utilisateurs et des droits que nous avions établis plus haut pour les attribuer au dossier /usr/local/nagios/var/rw/

- chown nagios:nagiocmd /usr/local/nagios/var/rw
- chmod 775 /usr/local/nagios/var/rw
- chmod g+s /usr/local/nagios/var/rw

Pour finir l'installation, nous avons du configurer au niveau du serveur web un fichier de configuration spécifiant une authentification pour accéder à la page Nagios, ce type de manipulation est typiquement propre au serveur Web, il n'a rien à voir avec Nagios, mais il est préférable de le faire pour plus de sécurité. On édite donc le fichier " /etc/httpd/conf.d/nagios.conf " avec un éditeur de texte comme " vi " par exemple.
Le script suivant est celui qui se trouve dans le fichier " nagios.conf ":

image de Nagios 1

Ici on sait q /usr/local/nagios/sbin " et " /isr/local/nagio le script suivant:

image de Nagios 1

Il ne nous reste plus qu'à créer un utilisateur et un mot de passe valide dans un fichier qui s'appellera " htpasswd.users " et qui se trouvera dans " /usr/local/nagios/etc ". Pour créer ce fichier, il nous faut utiliser la commande " htpasswd " qui créée un mot de passe crypté pour un utilisateur donné, voici comment on l'utilise:

- htpasswd -c /usr/local/nagios/etc/htpasswd.users utilisateurtest
- password: (ici on met le mot de passe)

Le fichier est maintenant créé et son contenu est crypté au niveau du mot de passe pour l'utilisateur qui s'appelle " utilisateurtest ".
Il ne reste plus qu'à redémarrer le serveur Apache pour que toutes les modifications soient prises en compte.

Maintenant que l'outil Nagios est installé, il nous faut mettre les plugins, cette installation est simple, il suffit de désarchiver le package téléchargé sur le site http://www.nagios.org/ puis de suivre ce qui est indiqué par le fichier README. Pour vérifier que vos plugins on bien été installés, il faut aller voir dans " /usr/localnagios/libexec ", et obtenir:

image de Nagios 1

Les fichiers listés ci-dessus sont les commandes que Nagios intègre par défaut avec ses plugins.

A partir d'ici, l'installation de Nagios est terminée, nous pouvons même essayer de nous connecter sur l'interface Web et regarder si tout va bien. Nagios est désormais un service à part entière de notre système, durant notre stage, nous avons du à plusieurs reprises démarrer ce service car il n'était pas exécuté au démarrage du serveur. Pour remédier à cela, nous avons effectué la commande suivante:

chkconfig add nagios

Maintenant que notre outil principal est installé, il nous faut installer Oreon pour pouvoir configurer les fichiers de configuration de notre outil principal avec plus de facilité.

4. Installation de Oreon

Avant toutes installation de Oreon, il nous faut s'assurer que les services mysql et https soient bien démarrés, pour cela, on fait un:

service httpd status
service mysql status

Si un de ces services n'est pas démarré, il nous faudra faire:

chkconfig --add httpd ou chkconfig --add mysqld
service httpd start
service mysqld start

Pour qu'Oreon fonctionne bien, il faut qu'il se serve d'une base de données pour recueillir toutes les informations utiles au réseau. De plus Oreon doit se servir d'une autre base de données qui va enregistrer toutes les valeurs relatives aux services à vérifier sur le réseau. Cette base de donnée est gérée par l'utilitaire " Perfparse ", il a donc été nécessaire d' installer " Perfparse " avant Oreon. Lors de nos tests, nous n'avons pas spécifié les bonnes bases, il faut bien faire attention à l'utilité de chacune d'entre elles. Nous avons du revoir les déclarations de nos tables pour un fonctionnement optimal.

On télécharge le dernier package de " Perfparse " sur le site http://perfparse.sourceforge.net/ puis on le désarchive. Suite à cela, nous allons dans le dossier désarchivé et nous tapons la commande suivante:
- ./configure prefix=/usr/local/nagios with-imagedir=/usr/local/nagios/share/images with- cgidir=/usr/local/nagios/sbin with-http_image_path=/nagios/images

Puis " make " et " make install ".

Maintenant que perfparse est installé, nous devons spécifier sa base de données, pour cela, il nous faut déjà créer une base de données pour perfparse:

- mysql -u root

Dans le prompt mysql on tape:

- create database perfparse;
- GRANT ALL PRIVILEGES ON perfparse.* TO 'perfparse'@localhost identified by 'motdepasse';

Il nous faut maintenant spécifier à " perfparse " que nous souhaitons utiliser cette base de données pour entrer ces données:

- cat /dossierdeperfparse/scripts/mysql_crate.sql | mysql -u perfparse -p -D nagios -h 127.0.0.1 - password:
Perfparse est désormais fonctionnel, nous pouvons installer Oreon maintenant.

Dans les aides que l'on a pu voir sur internet, beaucoup conseillaient d'augmenter l'espace mémoire dont se servent les modules PHP, pour se faire, il faut modifier le fichier " /etc/php.ini " et modifier la ligne " memory_limit = 16M " par " memory_limit = 32M ". Ceci n'est pas obligatoire, mais pour plus d'aisance, nous avons préféré le faire.

Maintenant on doit télécharger le package proposé par oreon sur http://www.oreon- project.org/ . Nous avons décidé de prendre la version 1.3.3 qui selon nous était la plus stable et performante.
Ensuite il nous a fallu désarchiver le package comme toutes les procédures que nous avons suivies jusqu'à présent. Puis dans le dossier désarchiver, il nous faut exécuter le script " install.sh ". A partir de ce point il va nous être posé plein de question quant à la configuration des chemins de notre outil principal " Nagios ", de nos services de messagerie, PEAR,... Le service de messagerie sera vu dans la partie suivante concernant la configuration des outils, il faut juste savoir que par défaut, le client de messagerie utilisé par notre système est " Sendmail ". Le script, va par la suite vérifier si tout les champs que nous avons renseignés sont valides, très pratique pour être sûr que la configuration d'Oreon se fait parfaitement bien.
Après tout ces préliminaires que nous avons effectués, nous n'avons pas eu de problèmes à ce niveau là. Nous avons été confrontés malgré tout à un problème, ce n'était qu'un champ mal spécifié ou une commande mal écrite. Une fois le script terminé, on a pu se connecter à l'aide d'un navigateur internet sur http://ipdelamachine/oreon/, en effet le script effectue un alias sur cette adresse et nous n'avons pas à le configurer.

Nous obtenons donc ceci lors du premier démarrage d'Oreon.

Cela est tout a fait normal, vu que nous n'avons pas configuré d'utilisateur, de langage, de base de données, ou de mot de passe pour accéder à cette base de données... Il nous faut donc faire tout cela afin que notre outil Oreon puisse fonctionner normalement.
Nous pouvons ensuite nous authentifier sous Oreon et accéder à la page principale de l'interface Web. La configuration propre à notre réseau se fera dans la partie suivante.

Nous avons donc ici un outil Oreon fonctionnel qui nous servira uniquement à configurer les fichiers de Nagios plus facilement.

Maintenant que notre outil de supervision Nagios est installé et que nous avons un outil Oreon pour le configurer, nous pouvons installer le dernier outil qui nous permettra de créer des comptes clients qui seront limités pour répartir ainsi également le réseau au niveau de plusieurs utilisateurs.

5. Installation de Nareto

Pour que NaReTo focntionne bien, il nous faut nous assurer que nous disposons bien de ces dépendances:

- Apache avec PHP
- MySQL version 4.X
- Nagios version 1.X
-- PHP CLI
- Perl avec les librairies DBI, POSIX et DBD-MySQL

Par défaut, toutes ces dépendances étaient installées dans notre serveur, nous nous en sommes tout de même assurés avec la commande rpm -q.

Ensuite, il nous a fallu télécharger les sources. Pour cela, il suffit de se rendre sur le site http://www.nareto/org . La dernière version se trouve dans la section Downloads . Il suffit de sélectionner l archive puis de la sauvegarder dans un répertoire. Il faut ensuite déplacer l archive dans le répertoire souhaité et la décompresser. On a installé NaReTo dans le dossier " /usr/local/nareto " comme les autres outils, puis on a effectué ces commandes:

- cp nareto-version.tar.gz /usr/local
- cd /usr/local
- tar xzf nareto-version.tar.gz
- chown -R apache.apache /usr/local/nareto-version
- chmod -R 700 /usr/local/nareto-version
- ln -s nareto-version nareto
- cd nareto
- chmod u+x nagios_alert.pl

NaReTo se sert de sa propre base de données pour effectuer toutes ses modifications au sein de son arborescence réseau. Nous avons donc crée une base de données NaReTo (comme pour la base de Perfparse antérieurement):

- mysql -u root

Dans le prompt propre à mysql:

- create database nareto;
- nareto script/nareto.sql;
- GRANT ALL PRIVILEGES ON nareto.* TO 'nareto'@localhost identified by 'motdepasse';

Comme pour Nagios, NaReTo doit avoir un alias au niveau du serveur Web afin de pouvoir accéder à la page, nous avons donc utilisé la même méthode que pour Nagios pour déclarer cet alias.

Pour finir de configurer NaReTo, on a ajouté des tâches qui feront en sorte de récupérer des données relatives aux services et machines du réseau dans la base de données de NaReTo.
Pour se faire, on a crée un fichier " /etc/cron.d/nareto " et ajouté le contenu suivant:

# MaJ temps réel
* * * * * root php /usr/local/nareto/scripts/parser_log.php \
>/dev/null 2>&1
* * * * * root php /usr/local/nareto/scripts/parser_cfg_v2.php \
>/dev/null 2>&1
# Reporting
*/5 * * * * root /usr/bin/php \
/usr/local/nareto/scripts/nareto_dispo_cron_5min.php \
> /dev/null 2>&1
2 * * * * root /usr/bin/php \
/usr/local/nareto/scripts/nareto_dispo_cron_1h.php \
> /dev/null 2>&1
4 14 * * * root /usr/bin/php \
/usr/local/nareto/scripts/nareto_dispo_cron_1jour.php \
>/dev/null 2>&1
# Suivi des alarmes
30 0 * * * root /usr/bin/perl \
/usr/local/nareto/scripts/nagios_alert.pl \
>/dev/null 2>&1
0 1 * * 7 root /usr/bin/php \
/usr/local/nareto/scripts/agregation_mois.php\
>/dev/null 2>&1

Ceci étant fait, il ne nous reste plus qu'à paramétrer le fichier de configuration de base de NaReTo. Ce fichier est dans le dossier " /usr/local/nareto/include " et il s'appelle " config.ini.php ", ce fichier permet d'indiquer à NaReTo dans quelle base de données il doit aller et avec quel identifiant et mot de passe, il permet également de rajouter des options tel que l'utilisateur principal ayant accès à la totalité de l'arborescence, ou bien si l'outil doit utiliser Perfparse...

Nous pouvons désormais nous servir de NaReTo en nous rendant à l'adresse http://ipdelamachine/nareto/ . La configuration de l'arborescence et des utilisateurs se fera dans la partie suivante.

Nous avons maintenant nos trois outils nous permettant une bonne supervision du réseau, nous allons donc maintenant voir comment on configure ces derniers afin d'exploiter la puissance de ces programmes.

Haut de page