Retour à l'accueil

MEMOIRE NAGIOS/SNMP

(Ceci est un résumé bien entendu)

(En date de Juin 2003)

SOMMAIRE

  1. PARTIE I
  2. PARTIE II
  3. CONCLUSION
  4. ANNEXES
    1. Le protocole SNMP
    2. Compléments sur Nagios
      1. Installation sur Mandrake 9.1
      2. Serveur Web
    3. Evolutions et améliorations
    4. Exemple de Script Perl utilisé avec Nagios






PARTIE I

INTRODUCTION

1. Sujet du Stage

Mise à jour du logiciel de supervision Netsaint vers sa dernière version appelée Nagios.

Mise en place du protocole SNMP sur les serveurs Windows NT 4.0, 2000 et Citrix.

Mise en place du protocole SNMP pour la surveillance des Routeurs et Switchs.

Utilisation des logiciels complémentaires NTOP, Cricket (type MRTG).

Apprentissage des tâches d'administration réseau.

2. Cahier des Charges

Le but prioritaire du projet sera d'avoir une station de surveillance du réseau qui remplisse les conditions suivantes :

Outre cela, différents logiciels supplémentaires pourront être testés pour contribuer à la réalisation de cet objectif.

PROJET DE STAGE

1. La problématique

Le but est de pouvoir récupérer des informations précises permettant la détection de panne, l'indisponibilité des serveurs et de leurs services ou encore la charge du réseau.

Il faut également pouvoir anticiper les problèmes que les utilisateurs peuvent rencontrer pour ce qui est de l'accès aux services réseaux en limitant le temps de réaction de l'administrateur au minimum.

En outre, le rajout, la suppression et la configuration de nouveaux matériels devraient se faire facilement et rapidement.

Le tout doit être réalisé dans un souci d'économie maximum sur le plan financier.

2. L'existant

L'outil de supervision existant était Netsaint installé depuis environ un an sous une Linux Mandrake 8.2. Il avait été mis en place pour avoir une première expérience des logiciels de supervision de réseau et pour décider si cela pouvait devenir une solution pérenne.

3. La solution retenue

Netsaint ayant fait ses preuves de fiabilité et d'efficacité, il fut décidé de continuer avec son successeur, Nagios (disponible depuis Novembre 2002).

Ce logiciel, associable au protocole SNMP (définit plus loin), permet une plus grande personnalisation des contrôles que l'on désire effectuer.

4. La mise en oeuvre

4.1 Logiciel Nagios

1.4.1 Présentation

Nagios est un logiciel de supervision des systèmes et des réseaux.

Il supervise des hôtes (serveurs, stations de travail, routeurs, ...) et des services (http, ftp, smtp, pop3, ...). Cependant, il ne fait pas d'analyse de trafic, de reniflage de paquet, etc. Nagios est en fait l'évolution de Netsaint, auquel de nouveaux outils ont été ajoutés et de nombreuses corrections apportées.

Le but principal de Nagios est de surveiller les services qui fonctionnent sur la machine et qui sont fournis par les serveurs ou les dispositifs physiques du réseau. Il est évident que si un serveur ou un dispositif sur le réseau est hors service, tous les services qu'il offre sont également indisponibles. De même, si un serveur devient inaccessible, Nagios ne pourra pas surveiller les services qui lui sont liés.

Nagios identifie et essaye de vérifier si un problème sur un service correspond à un scénario existant. Dès qu'un contrôle de service atteint un niveau non satisfaisant, Nagios essayera de vérifier si le serveur et le service en cours sont toujours opérationnels. C'est en « pingant » le serveur et en voyant si une réponse est donnée que l'alerte est déclenchée si le besoin s'en fait sentir.

Nagios n'informe que les contacts concernés des problèmes d'un serveur ou de son inaccessibilité. Si la commande de contrôle du serveur renvoie un état OK, Nagios identifiera que le serveur est fonctionnel et enverra seulement une alerte pour le service qui pose problème.

1.4.2 Fonctionnalités de Nagios

Il est tout à fait possible depuis un poste Windows de surveiller à distance l'état général du réseau et d'accéder à l'interface graphique Web de Nagios avec NTRAY.

1.4.3 Pré requis pour installer Nagios

Dans les annexes sont mentionnées les procédures d'installation des fichiers sources, du serveur web ainsi que du protocole SNMP. Ce qui suit s'applique à l'OS Mandrake 9.1.

1.4.4 Configuration de Nagios
Configuration Principale

Le fichier de configuration principal se situe selon cette arborescence : /etc/nagios/nagios.cfg. Il contient diverses variables de configuration. On peut laisser la configuration par défaut, cependant, il est nécessaire de changer l'adresse mail de l'administrateur pour qu'il soit contacté en cas de problème.

Ensuite, il faut configurer les fichiers liés à l'utilisation des CGI. Les CGI sont des scripts utilisés par un serveur Web pour afficher des valeurs stockées dans une base de donnée via un navigateur web. Il faut créer un alias pour les CGI afin de rendre les fichiers html accessibles via le serveur web. Pour cela, il est nécessaire de modifier le fichier nagios-httpd.conf (/etc/httpd/conf) et de créer le fichier .htaccess (usr/lib/nagios/cgi/.htaccess) en suivant exactement la documentation de Nagios.

Ne pas oublier l'étape de création du fichier htpasswd.users dans le répertoire /usr/lib/nagios avec un utilisateur (comme nagiosadmin) et un mot de passe. La dernière chose à vérifier étant le fichier cgi.cfg de Nagios (/etc/nagios/cgi.cfg) en particulier les lignes suivantes :

use_authentication = 1 
authorized_for_system_information = nagiosadmin
authorized_for_configuration_information = nagiosadmin
authorized_for_system_commands = nagiosadmin
authorized_for_all_services = nagiosadmin
authorized_for_all_hosts = nagiosadmin
authorized_for_all_service_commands = nagiosadmin
authorized_for_all_host_commands = nagiosadmin

Si un problème de lecture des fichiers de log se présente, il faut s'assurer que le propriétaire est bien Nagios et que les droits soient en lecture/écriture.

Il y a certaines modifications à faire dans ce fichier en plus de celles déjà mentionnées précédemment. Par exemple, si l'on veut ajouter des images et des icônes dans les cgi d'état, de cartographie des états, du monde des états et d'informations complémentaires, il faut intervenir en modifiant cette ligne :

physical_html_path=/usr/share/nagios/images -> mettre le bon chemin !

Et ces deux lignes sont à rajouter :

xedtemplate_config_file=/etc/nagios/hostextinfo.cfg
xedtemplate_config_file=/etc/nagios/serviceextinfo.cfg

Ces deux fichiers « hostextinfo.cfg » et « serviceextinfo.cfg » sont à créer dans /etc/nagios.Le premier contiendra les icônes et images associées aux hôtes, l'autre celles pour les services.

Configuration des Hôtes et des Services

On déclare dans les fichiers hosts et hostgroups tous les serveurs, routeurs, stations, ... qui sont connectés au réseau et dans le fichier services les services à contrôler. On configure le fichier « hostgroups » pour définir les groupes dont fera partie chaque hôte :

define hostgroup { 
hostgroup_name D - Autres Serveurs
alias Autres Serveurs
contact_groups linux-admins
members TEST
}

Le serveur « TEST » mentionné ci-dessus sera membre d'un groupe, ici « D - Autres Serveurs », et les notifications d'incidents seront envoyées à un groupe de contact, ici « linux-admins ». On configure le fichier « hosts » :

define host { 
host_name TEST
alias Serveur Divers
address 192.10.20.20
check_command check-host-alive
max_check_attempts 10
notification_interval 120
notification_period 24x7
notification_options d,u,r
}

Le serveur « TEST » a l'adresse IP 192.10.20.20 ; on utilise la commande « check-host-alive » pour s'assurer de son bon fonctionnement ; le chiffre 10 représente le nombre de fois que nagios relancera la commande de contrôle du serveur ; le chiffre 120 représente l'intervalle de re-notification d'un incident à un groupe de contact ; 24x7 (24heures/24 et 7jours/7) est la période durant laquelle les notifications d'événements seront émises vers le groupe de contact rattaché au serveur ; enfin, les options de notifications : d(own-tombé), u(nreachable-inaccessible), r(ecovery-retablit).On configure le fichier « services » :

define service { 
host_name TEST
service_description HTTP
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups linux-admins
notification_interval 120
notification_period 24x7
notification_options w,c,r
check_command check_http
}

Le service « HTTP » est surveillé sur le serveur « TEST » ; ce service n'est pas « volatile » (se dit d'un service qui génère des journalisations (logs) et des notifications à chaque fois qu'il est contrôlé), il est de type normal ; période de contrôle de 24h/24 et 7j/7 ; nagios réessayera de contrôler ce service 3 fois suite à un incident ; contrôle normal toutes les 5 minutes ; délai d'1 minute avant de lancer le prochain contrôle normal après avoir atteint les 3 essais de contrôle ; « linux-admins » est le groupe de contact à notifier avec un intervalle de re-notification de 120 minutes, sur une période de 24h/24 et 7j/7, avec les options de notifications de w(arning-attention), c(ritical-critique) et r(ecovery-retablit) ; « check_http » est la commande exécutée par nagios pour vérifier l'état de ce service.

Configuration des Notifications

On déclare dans le fichier suivant les contacts permettant d'identifier la personne qui doit être contactée lors d'un problème sur le réseau. On configure le fichier « contacts » :

define contact { 
contact_name nagiosadmin
alias Administrateur Nagios
service_notification_period 24x7
host_notification_period 24x7
service_notification_options u,c,r
host_notification_options d,u,r
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email user@localhost
}

On indique le nom du contact ; le contact sera notifié des incidents liés au service 24h/24 et 7j/7 ; le contact sera notifié des incidents liés à l'hôte 24h/24 et 7j/7 ; voir + haut pour les options de notifications de service et d'hôte u(nreachable-inaccessible), c(ritical), d(own),r ; commande de notification (ici par e-mail) à utiliser pour avertir d'un incident (service et hôte) ; adresse email du contact. On configure aussi le fichier « contactgroups » :

define contactgroup { 
contactgroup_name linux-admins
alias Administrateurs linux
members nagiosadmin
}

On indique le nom du groupe et ses membres.

Information supplémentaire :

Pour configurer nagios, on peut également se servir de NAGAT (NAGios Administration Tools), un module écrit en PHP, à télécharger, qui utilise une interface graphique dans un navigateur Web ainsi que de NAGMIN, module dépendant de WEBMIN, associé à une base de donnée.

Configuration d'un Serveur de messagerie

Le serveur retenu est Postfix. Sa configuration est accessible via Webmin1, Onglet Serveurs. Les champs suivants sont à modifier dans /etc/postfix/main.cf :

En mode console, on peut tester la bonne configuration du serveur avec la commande « postfix check ». On peut relancer le daemon avec la commande « postfix reload ». Maintenant, on peut vérifier l'envoi et la réception de mails en local en mode console avec la commande mail.

Ensuite, on configure Nagios pour qu'il expédie les mails d'alerte (fichier "misccommands" avec commandes "notify-by-email" et "host-notify-by-email").

Autre méthode, on peut installer un serveur POP3 permettant la récupération des mails par un logiciel de mail distant (comme MS Exchange par exemple).

Pour ce faire :

Dans un logiciel de messagerie, il suffit d'ajouter une nouvelle source de message. Avec MS Exchange, cliquer sur le menu Outils->Services d'Outlook, cliquer sur Ajouter->Messagerie Internet pour récupérer les mails de la boîte à lettre distante par le protocole POP3.

1.4.5 Principe des Plugins de Nagios

A la différence de beaucoup d'autres outils de supervision, Nagios ne dispose pas de système interne pour vérifier l'état d'un hôte ou d'un service. A la place, il utilise des programmes externes (appelés plugins) pour exécuter ces vérifications. Nagios commande l'exécution de ces programmes et ceux-ci lui retournent les résultats de leurs contrôles. Voici un exemple des principaux plugins disponibles : « check_tcp,check_pop,check_smtp,check_ping,check_disk,check_http,... »

Grâce à cette architecture, on peut contrôler tout ce que l'on veut puisque si il n'existe pas de plugins adapté, il est possible d'écrire soi-même un petit script bash ou perl. Voir en annexe le principe de fonctionnement.

1.4.6 Utilisation de Nagios
Utilisation de l'Interface Graphique

Je fais ici une présentation sommaire de l'interface graphique en utilisant une traduction des mots anglais.

General

Les deux liens Accueil et Documentation renvoient respectivement à la page d'accueil et à la documentation complète de Nagios en Anglais.

Ces liens sont internes et il n'est pas nécessaire d'avoir un accès Internet pour avoir accès à la documentation par exemple.

Monitoring

Vue Générale: C'est une vue globale de tous les éléments contrôlés par Nagios : réseau, hôtes, services, contrôles, surveillance du dispositif, etc... On voit ainsi d'un seul coup d'oeil si tout fonctionne bien ; on peut rester sur cette page en temps normal.

Détail des Services : C'est une vue détaillée de chacun des services contrôlés pour chaque hôte. Toutes les informations de contrôle y sont mentionnées.

Détail des Hôtes : Vue détaillée de tous les hôtes supervisés et des contrôles en cours.

Vue par Groupe : Comme son nom l'indique, il s'agit d'une vue qui rassemble les hôtes selon des groupes que l'on a définis dans les fichiers de configuration. Elle mentionne le nom des hôtes, leur état, le nombre de services qui leur sont rattachés et des liens pour effectuer certaines actions (informations détaillées et accès à la page de gestion des contrôles).

Vue sommaire : Seul les groupes sont indiqués avec, pour chacun, le nombre d'hôte et le nombre de services qui leur sont rattachés (et contrôlés).

Vue Groupe et Services : C'est une vue semblable à la vue par Groupe, la différence majeure est que chaque service y est mentionné par son nom et sous la forme de tableaux faciles à lire.

Carte 2D : Chaque hôte y est représenté par une image graphique et le simple fait de laisser le pointeur de la souris sur l'une d'elle fait apparaître des informations sommaires.

Problèmes sur Services : Indique tous les services qui posent problèmes.

Problèmes sur Hôtes : Indique tous les hôtes qui posent problèmes.

Pannes Réseau : Indique les liens réseaux qui provoquent l'inaccessibilité

Commentaires : Permet d'ajouter des commentaires sur un hôte ou un service (utile par exemple pour indiquer à d'autres personnes que l'on va arrêter un serveur pour maintenance) .

Temps d'Arrêt Programmé : Permet d'arrêter l'envoi de notifications durant un temps fixé.

Informations Processus : Informations et commandes possibles sur le processus Nagios lui-même.

Informations Performances : Informations sur les contrôles actifs et passifs.

File d'Attente Contrôles : Ordre suivant lequel Nagios effectue ses différents contrôles.

Reporting

Tendances : Permet d'avoir un état graphique selon la date et le statut (« up », « down », « unreachable », « indeterminate ») de chaque hôte ou service spécifié.

Disponibilités : Permet d'avoir un rapport sous la forme de tableaux et de statistiques. Il est possible d'avoir une vue par Groupe d'hôtes également.

Histogramme des Alertes : Représentation graphique de la disponibilité d'hôtes ou de services sur une période de temps paramétrable.

Historique des Alertes : Visualisation des événements importants sous la forme d'un listing reprenant le fichier de log.

Alertes Récentes : Affichage des alertes les plus récentes.

Notifications : Indique le type de notifications envoyées aux contacts mentionnés.

Logs : Affiche tout le fichier de log.

Configuration

Visualisation : Affichage de toute la configuration d'un objet spécifié : hôte, service, contacts, périodes de contrôles, commandes, etc...

1.4.7 Problème rencontré avec Nagios

Suite au plantage de la station de surveillance, Nagios peut se bloquer en raison des fichiers de commandes externes. Ceux-ci se trouvent dans /var/spool/nagios. En cours d'utilisation, il est normal qu'un ou plusieurs fichiers de commandes soient présents dans ce répertoire. Par contre, lorsque Nagios est stoppé, il ne doit plus y en avoir aucun sinon, au re-démarrage, Nagios se bloque sur ces fichiers existants. Il ne peut pas créer un fichier qui existe déjà.

1.4.8 Modules Complémentaires à Nagios
NTRAY

Module écrit en Perl pour les systèmes d'exploitation Windows qui permet l'affichage d'une icône dans la barre des tâches. Celle-ci change de couleur (rouge, jaune, orange ou vert) selon l'état des services. Cet utilitaire peut être installé sur tous les postes des administrateurs et se sert du serveur Nagios pour accéder directement à la page d'accueil (utilise le service http).

Voir le site de Nagios -> http://www.nagios.org/download/extras.php.

NAGAT

Module écrit en PHP qui utilise une interface graphique dans un navigateur Web pour configurer les hôtes et les services sans passer par la modification directe dans les fichiers.

Suite à différents tests effectués, on peut constater que les imports/exports ont quelques problèmes et que les champs ne correspondent pas toujours aux options qui existent dans les fichiers de configuration, prudence donc avec cette version alpha et à utiliser avec précaution ! Personnellement, j'ai décidé de configurer Nagios uniquement en éditant les fichiers textes qu'il utilise (http://sourceforge.net/projects/nagat/).

NAGMIN

NAGMIN est un module de WEBMIN programmé en Perl pour l'administration de Nagios. NAGMIN ajoute des fonctionnalités à Nagios avec des dispositifs uniques de configuration en liaison avec une base de données et NMAP pour la découverte de réseau et le scan de ports.

Attention, outils en cours d'amélioration, à utiliser avec précaution (http://nagmin.sourceforge.net/ et http://sourceforge.net/projects/nagmin).

4.2 NAGIOS et SNMP (Simple Network Management Protocol)

Nagios n'est pas un gestionnaire SNMP, cependant, on peut utiliser ce protocole, soit via le plugin "check_snmp" qui utilise la commande snmpget soit via un script Perl, pour contrôler certains services ainsi que gérer des remontées d'alertes (traps snmp).

4.2.1 Installation du Protocole

Sur la machine distante, il est important d'avoir installé puis activé le service SNMP. Ce service utilise le port 161 pour les échanges de requêtes/réponses et le port 162 pour les traps.

Sur la station de surveillance, seul snmptrapd, qui réceptionne les traps (snmpd gère les requêtes en provenance d'une machine distante donc inutile sur celle-ci), doit être actifs (si on reçoit des traps bien sûr !). On peut tester le bon fonctionnement de ces processus en ligne de commande par un snmpget, un snmpwalk ou un snmptrap comme décrit dans les annexes.

4.2.1 Intégration à Nagios
Objectifs Visés

A l'aide du protocole SNMP, le but recherché était d'atteindre davantage de service(s) pour pouvoir les contrôler ainsi que de pouvoir envoyer des traps dès qu'un problème surgissait. Ceci, sans pour autant installer des logiciels supplémentaires.

Le premier objectif fut atteint grâce au plugin check_snmp et la documentation écrite par Xavier Dusart intitulée "Comment je supervise des serveurs NT" et, pour W2k ici.

Utilisation de la commande du plugin de Nagios

Le test a été fait concernant la mémoire physique disponible, la charge CPU et l'espace disque. En voici les étapes pour la mémoire physique disponible :

1°) Le service « MEM » a été déclaré comme suit :

define service { 
name MEM
service_description Memoire_Disponible
check_period 24x7
max_check_attempts 3
normal_check_interval 2
retry_check_interval 1
contact_groups linux-admins
notification_interval 0
notification_period 24x7
notification_options w,c,r
check_command check_memory_nt!35000000!20000000
register 0
}

On peut noter avec intérêt que cette commande possède deux paramètres. Le premier chiffre (35000000 octets – 35 Mo) indiquera à Nagios la valeur à partir de laquelle ce service passera en état de warning et le second chiffre (20000000 octets – 20 Mo) la valeur à partir de laquelle le service sera considéré en état « critical ».

2°) Dans le même fichier, on relie ce service à un hôte existant :

define service { 
use MEM
host_name TEST
}

3°) Dans le fichier "checkcommands", on définit la commande déclarée précédemment :

define command {
command_name check_memory_nt
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -o .1.3.6.1.4.1.311.1.1.3.1.1.1.1.0
-w $ARG1$:0 -c $ARG2$:0 -l "Mémoire Physique Disponible" -u "bits"
}

Note Importante : Pour cette commande ($ARG1$:0 soit max:min), un état OK sera retourné si le résultat est en dehors de la plage spécifiée, un état non OK si le résultat est dans la plage (limites inférieure et supérieure incluses).

Utilisation de scripts Perl associé à Nagios

Il a été nécessaire de recourir à des scripts Perl dans certains cas.

Le premier était lié au service de spool. Lorsque le service est actif, on peut le voir selon cette arborescence dans la MIB Microsoft LanMgr :

La difficulté était que cette valeur n'était plus disponible à l'arrêt du service donc Nagios affichait un état "unknow" pour ce service. Il fallait lui indiquer un état "critical" à la place, d'où le recours à un script Perl disponible dans les annexes.

Gestion des traps par Nagios

Les traps servent à envoyer une valeur stockée dans la MIB depuis un agent (serveur, routeur, ...) vers une station d'administration pour lui signaler un problème comme l'arrêt d'un service, un reboot, etc...

D'après mes recherches, en particulier sur le site de Microsoft, aucune application n'est installée par défaut sur les serveurs Windows qui permette de traduire une alerte en trap. Par contre, il est possible de les générer sur les serveurs Citrix. Un trap standard SNMP version 1 peut-être envoyé avec cette commande :

snmptrap -dv 1 192.10.10.02 public 0 192.10.10.11 6 0 '' 0 s "coucou"

L'option -d est une option de deboggage qui permet de visualiser le trap que l'on a envoyé, l'option -v va avec le chiffre suivant 1 qui indique la version du protocole utilisé (ici snmp version 1). L'adresse 192.10.10.02 est celle du destinataire du trap (ou manager).

Il faut indiquer ensuite la communauté, par défaut c'est « public ». C'est LA faille de sécurité du protocole SNMP car elle apparaît en clair sur le réseau et tout bon sniffer la fait apparaître. Quand on connaît le nom de la communauté, on peut très librement accéder à toute la table MIB d'un hôte sur le réseau et récupérer des infos précieuses sur celui-ci (OS, partages, adresses IP,...).

Le chiffre après la communauté ( ici 0 ) est l'identifiant, ou OID, de l'entreprise ( 77(réseau) et 311(système) pour Microsoft (+ 3845 pour citrix)).

La console de management des serveurs Citrix permet l'activation et l'envoi de traps SNMP vers une station spécifique, j'ai donc fait des tests avec ces serveurs.

Voici les étapes d'émission et de réception d'un trap en provenance d'un serveur Citrix vers Nagios :

traphandle default echo "[`date +%s`] PROCESS_SERVICE_CHECK_RESULT;CITRIX03;AlertesCitrix;2;
Charge CPU dépassée" >> /var/spool/nagios/nagios.cmd

Quelques explications :

Pour la commande Nagios :

Ici, tous les traps provoquent cette alerte, ce qui est inutile. On veut générer des alertes en fonction du trap reçu. Or, les traps avec un OID spécifique ne sont pas reconnus par le daemon snmptrapd lorsqu'ils sont envoyés sous le format de la version 1. Il est donc nécessaire de passer par un script perl jouant le rôle de gestionnaire des traps qui alertera Nagios selon les indications mentionnées dans les traps :

traphandle default /etc/snmp/gestion_traps

Ce script est disponible sur demande.

5 Les résultats

En associant Nagios et SNMP, on arrive à configurer une station de surveillance fiable et fonctionnelle.

Dans ce rapport, tout n'a pas été dit sur Nagios et les nombreuses possibilités qu'il offre à la fois dans son fonctionnement interne et aussi sur les nombreux plugins qu'il recèle sans parler de ceux que l'on peut développer.

Il est possible aussi de développer de nombreux compteurs supplémentaires et les ajouter dans une MIB qui deviendra une branche de la MIB principale.

Suite à la réalisation de cette station, de nombreux problèmes ont été soit évités, soit pris en charge à temps.

Par exemple, des services ont pu être redémarré rapidement sans qu'une avalanche de personnes mécontentes n'appellent pour savoir pourquoi elles ne pouvaient plus accéder à leurs applications préférées.

CONCLUSION de la 1ère Partie

L'objectif était de disposer d'une station de supervision fiable et adaptée au réseau de l'entreprise. Elle devait répondre aux critères suivants :

L'implémentation de Nagios fut un succès sous ces différents rapports.

Le coût financier fut quasi nul.

La fiabilité, déjà constatée avec son prédécesseur Netsaint, fut confirmée suite à de nombreux tests et une mise en charge progressive.

A la suite d'une erreur de manipulation, des fichiers furent supprimés mais cela permit de constater qu'en quelques heures le système était reconstructible à la condition d'avoir sauvegardé les fichiers de configuration.

L'évolutivité peut se constater dans les annexes sous la partie Evolutions et Améliorations possibles.

Enfin, chaque contrôle est paramétrable de manière précise et adapté à ce que l'on veut superviser.

PARTIE II

Réflexions Personnelles

Je me permets, dans cette partie, de traiter des différents logiciels de supervision multi environnement (Unix Linux Windows) existant, de faire un bref rappel des besoins exprimés puis d'indiquer pourquoi Nagios a été utilisé dans le cas précis du réseau de cette société.

Je me dois de souligner que cette partie n'a pas la prétention de traiter de toutes les solutions de supervision qui existent sur le marché mais d'en mentionner les principales dans le but de montrer pourquoi celle qui a été utilisée a été retenue.

1. Solutions existantes

1.1 Logiciels de supervision propriétaires

Voici un tableau résumé des logiciels propriétaires de supervision :

Des offres centrées sur la supervision réseau.

Éditeur

 

Offre

 

Fonctions

 

Équipements acceptés

 

Prix à partir de (HT)


 


 


 


 


Computer Associates

 

Network IT

 

Supervision, configuration des VLAN, intégration d'outils de configuration tiers

 

Toutes marques

 

7 927 €

(52000F)


 


 


 


 


HP

 

OpenView Express

 

Supervision, intégration d'outils de configuration tiers

 

Toutes marques

 

38 112 €

(250 000 F)










IBM

 

Tivoli

 

Supervision, intégration d'outils de configuration tiers

 

Toutes marques

 

38 112 €

(250 000 F)










Quest Software

 

Big Brother

 

Supervision, intégration d'outils de configuration tiers

 

Toutes marques

 

Gratuit en partie

Les caractéristiques sommaires de ces différentes solutions sont exposées maintenant :

UniCenter - Network IT, de Computer Associates :

Voici le commentaire d'une personne l'ayant testé :

« Unicenter, logiciel de supervision multi environnement, est composé d'un module appelé Manager qui paramètre les agents et réceptionne les résultats des mesures effectuées par ces mêmes agents. Il existe un Manager par brique fonctionnelle (OS, serveur...).

Pour nos tests nous avons installé la brique surveillance système. Les règles de surveillance sont dictées à l'agent par le biais d'un fichier. Lors d'une alerte, l'agent renvoie la notification au Manager. Ce dernier va chercher dans une base, les règles à exécuter en cas de dépassement de seuil.

Les informations remontées en temps réel sont assez complètes. En cas d'anomalie, l'administrateur peut agir sur le serveur depuis la console en lançant des scripts.

Nous avons connu un certain nombre de problèmes lors de l'installation et mieux vaut prévoir une formation pour s'engager dans le déploiement d'Unicenter. De plus, le logiciel ne dispose pas de fonctions de distribution automatique des agents.

Côté notification des alertes, il définit des niveaux de gravité en cas d'alertes réitérées et non acquittées, mais la console de log des événements est confuse. Les rapports générés avec le module Report Builder sont trop techniques et leur lisibilité médiocre. On peut limiter les accès avec une liste d'utilisateurs mais il est impossible de chiffrer les échanges entre la console, les agents et la base de données (pour la sécurité, il faudra passer par SNMP). » - Thibault Michel, Décision Micro de Décembre 2001.

Caractéristiques principales :

OpenView Express, d'HP :

Il se base sur le concept du Client/Serveur ITO qui fournit une administration intégrée de la plupart des objets constituant un système d'information tels que des éléments systèmes, réseaux, applicatifs ou bases de données.

Il gère et surveille les objets au moyen d'agents intelligents fournis avec le produit. Avec l'aide de ces agents, il est possible d'intercepter une vaste quantité de changements d'états survenus dans le système d'information et d'y répondre avec flexibilité et rapidité. Depuis son introduction en 1993, IT/Operations est devenu le coeur de la solution HP OpenView. Le serveur d'administration est l'élément central d'IT/Operations. Il renferme l'ensemble du logiciel, incluant la configuration complète courante.

Il y a un serveur d'administration par installation d'IT/Operations et ses tâches essentielles consistent à :

IT/Operations est divisé en deux composants de base :

L'agent est localisé sur les systèmes gérés, appelés noeuds.

Il est principalement responsable de :

Le gestionnaire est localisé sur le serveur d'administration, il :

IT/Operations permet de définir des filtres, des valeurs seuil ("Threshold") et des intervalles de surveillance ("monitoring intervals"). Si, par exemple, une valeur seuil est dépassée, l'agent lance une action automatique prédéfinie et/ou génère et envoie un message standard pour alerter un opérateur à la console d'administration centrale.

La fenêtre d'IT/Operations est une représentation logique des noeuds administrés relatifs à un domaine particulier de l'opérateur, c'est à dire les objets administrés de l'opérateur.

L'opérateur peut utiliser la fenêtre pour contrôler le statut de chaque noeud, et sélectionner les noeuds ou les groupes de noeuds lors de l'exécution d'une tâche spécifique.

Les noeuds administrés sont très flexibles et autorisent une grande variété d'activités, incluant :

Tivoli, d'IBM :

Tivoli est une plateforme d'administration distribuée reposant sur l'utilisation d'agents clients piloté par un serveur.

Composé de différentes briques logicielles, il adresse tous les secteurs de l'administration systèmes (supervision, gestion de comptes, diffusion de logiciels, administration de serveurs applicatifs, ...)

Il gère la supervision des systèmes et applications.

Il optimise l'efficacité du département informatique en l'aidant à identifier rapidement les dysfonctionnements et goulots d'étranglement avec des fonctions intelligentes pour corriger automatiquement les problèmes au niveau de chaque composant.

Les logiciels Tivoli permettent de superviser depuis une solution unique l'ensemble du système d'information en partageant un même entrepôt de données et bénéficiant d'une interface graphique et d'un générateur de rapports communs.

Ils offrent de nouvelles fonctions pour corriger automatiquement les problèmes au niveau de chaque composant avant même qu'ils n'apparaissent.

Big Brother, de Quest Sofware :

Logiciel de supervision système et réseau. Il permet de visualiser l'état des connexions et des services installés sur les stations. Il peut fonctionner avec MRTG. Il fonctionne sur pratiquement tous les systèmes de type Unix (solaris, hpux, redhat, debian, mandrake) et Windows 2000. Les clients existent pour Unix, Linux, Windows, Novell Netware, MacOS.

La plate forme centrale est placée sous le système de surveillance de Safety-Host. Ce système permet de superviser en permanence le bon fonctionnement de l'équipement par le biais des tests suivants :

En cas de non-réponse à un de ces tests, l'équipe SafetyHost intervient pour mettre en œuvre les procédures qui ont été prévues dans le cadre de l'exploitation de l'équipement et consignées dans le cahier de procédures.

Par le biais de cet outil, Safety-Host effectue également une démarche proactive et d'anticipation sur le serveur (prévisibilité de saturation espace disque,...).

Ce logiciel utilise des scripts pour connaître en temps réel l'état des différents composants de votre machine et de votre réseau (connexion, charge cpu, taux remplissage des disques, mémoire, trafic...).

Le gestionnaire du réseau installe donc un client Big Brother sur chacun des composants qu'il veut surveiller, et installe bien évidemment sur une machine dédiée à la supervision la partie serveur de Big Brother, qui récoltera toutes les informations.

Pour chaque information, 3 états sont définis :

Les seuils de chacun de ces états sont définis lors de la configuration du client et du serveur BB.

Le serveur Big Brother récupère donc ces infos et leur associe un code couleur (vert, orange et rouge). Une page HTML est donc créée, dans laquelle est inséré un tableau : en ligne les différents postes supervisés et en colonne les données à surveiller sur les machines, à l'intersection une icône symbolisant l'état du matériel. Cette icône est le lien vers une page Web détaillant le résultat du script.

Le fond de ces pages HTML prend la couleur la plus alarmante relevée lors de tous les contrôles, permettant à l'administrateur du réseau de connaître tout de suite l'état général du réseau.

L'administrateur peut être également prévenu par mail lorsqu'un problème survient.

Il est également possible de connaître l'historique des données sur la dernière journée ou sur plusieurs jours.

Le logiciel Big Brother ne nécessite aucune licence pour un usage non lucratif, les entreprises peuvent donc l'utiliser gratuitement sous réserve de l'enregistrement du produit auprès de l'éditeur. Par contre les entreprises vendant le produit, un service ou encore une aide en ligne, doivent acquérir la licence aux tarifs suivants :

Serveur et Client sous Unix = 695 € / unité

Serveur Windows = 695 € / unité

Client Windows = 69 € / unité

Cette licence est dite « Better than Free » ( mieux que gratuite ) car si la somme demandée est trop importante, des mesures de paiement peuvent être proposées d'une part, et plus 10% de cette somme sera versée à une des trois oeuvres caritatives mentionnées sur le site.

Pour la transmission des données, Big Brother utilise le port 1984 pour communiquer avec les machines à surveiller.

Il faut préciser que le code source de Big Brother est disponible mais qu'il n'est PAS sous licence GPL (General Public License).

Cette licence implique la liberté d'exécuter le logiciel, et ce pour n'importe quel usage ; la liberté de le modifier pour l'adapter à ses besoins (dans la pratique, cela nécessite l'accès au code source) ; la liberté de redistribuer des copies, soit gratuitement, soit contre rémunération et la liberté de distribuer des versions modifiées afin que la communauté du logiciel libre puisse en profiter.

1.2 Logiciels de supervision à code source ouvert

Voici un tableau résumé des logiciels open source de supervision :

Des logiciels libres centrées sur la supervision réseau.

Éditeur

 

Offre

 

Fonctions

 

Équipements acceptés

 

Prix à partir de (HT)


 


 


 


 


Alcôve

 

CAOBA

 

Supervision, intégration d'outils de configuration tiers

 

Toutes marques

 

9 500 €

(62 000 F)


 


 


 


 


Université Berkeley

 

Ganglia

 

Supervision orienté grands réseaux, clustering

 

Toutes marques

 

Gratuit










Aucun

 

Scotty

 

Supervision par SNMP, gestion des MIBs

 

Toutes marques

 

Gratuit

CAOBA, d'Alcôve :

CAOBA répond aux besoins de supervision des entreprises : supervision des paramètres systèmes du réseau, tels que routeurs, serveurs, stations, imprimantes; supervision des services installés, tels que ftp, ssh, ldap, bases de données; système de remontées d'alertes; auto découverte du réseau et des services fonctionnels.

La solution d'Alcôve supporte SNMP et permet la supervision d'environnements hétérogènes et distribués. En effet, CAOBA est basé sur le logiciel libre NetSaint qui met en oeuvre un système de plugins fonctionnant sur l'ensemble des plates-formes de type Unix (HP-UX, AIX, Linux, Solaris, les systèmes BSD...) et Windows (NT, 2000, XP).

Pour chacun des éléments d'infrastructure et ses composants (CPU, espace disque disponible...) et pour chacun des services (serveurs de fichiers, d'authentification, d'annuaires, de bases de données...), CAOBA permet la configuration de routines de vérification à intervalles réguliers et d'alertes associées.

La solution de supervision CAOBA offre la possibilité aux administrateurs réseaux de recevoir les alertes sous plusieurs formes : sur une console de surveillance, par email, ou encore via SMS ou pager.

Chaque élément physique à superviser est rattaché à un groupe (ex : Routeurs, serveurs Linux, serveurs NT...) et le système d'alertes autorise la création de groupes de destinataires des messages. Il est ainsi possible à l'administrateur principal de déléguer la surveillance des éléments du réseau de son choix.

La consultation des reportings s'effectue via une interface WEB. Les éléments de reporting proposés par la solution sont des vues topologiques du réseau, des tableaux de consultation des événements par éléments, par groupes, par services, par types d'alertes.

L'offre CAOBA proposée par Alcôve comprend en standard :

En termes de services associés à cette offre logicielle, Alcôve propose en standard :

L'offre CAOBA standard, proposée, est prévue pour 40 services et une centaine de postes clients. Alcôve propose également en options :

Alcôve a intégré un grand nombre de logiciels libres tels que Linux Debian, NetSaint, IPScan, NMap, NMAp to NetSaint, NSclient, et bien d'autres encore.

Ganglia, de l'Université de Berkeley (Californie) :

Ganglia est une base de données distribuée, contenant l'état actuel des machines participantes. Utilisé avec rrdtool, de jolis graphiques permettent de suivre l'état des systèmes sur quelques minutes, semaines ou mois.

Ce logiciel de surveillance de clusters (grappes) présente les informations sous la forme d'un vaste tableau comportant une ligne par noeud et une colonne par paramètre. Cette présentation permet d'obtenir une vue instantanée de l'état de l'ensemble des machines. Le rafraîchissement de cette vue se fait soit à intervalles de temps réguliers (quelques secondes par défaut), soit à la demande de l'utilisateur.

Les principales limitations de ce logiciel, apparaissent avec l'augmentation du nombre de machines prises en compte. Au delà d'une quarantaine de lignes environ, les informations ne sont plus très lisibles, et il est nécessaire de faire défiler les fenêtres pour voir l'ensemble des machines.

Un autre point ignoré par cet outil est l'historique des informations. La vue donnée correspond à un instant précis et il n'est pas possible de voir l'évolution d'un paramètre au cours du temps.

Voici un tableau de ses composants principaux :

Composant

Description

Démon du client Ganglia (gmond)

Ce démon doit être installé sur tous les noeuds que l'on veut surveiller. Il récupère différentes données puis les exporte par l'intermédiaire de XML.

Démon du serveur Ganglia (gmetad)

Le démon du serveur de Ganglia réceptionne et fusionne les données en provenance de sources multiples (des clients), stocke ces données numériques volatiles dans des bases de données locales et présente une vue simple XML de tous les clusters qui sont surveillés.

Interface web de Ganglia

L'interface graphique de Ganglia emploie un serveur web PHP pour présenter les données rassemblées par le démon serveur à un navigateur.

Ganglia gère les systèmes Linux, Solaris, FreeBSD, AIX, IRIX, Tru64, HPUX, MacOS X et Windows mais la station de supervision ne s'installe que sous Unix/Linux. Toutes les données sont échangées dans les formats XML/XDR pour en assurer l'extensibilité et la portabilité maximum.

L'ajout de "sondes" est très facilement réalisable à l'aide de simples scripts bash ou Perl, par exemple. A la rédaction de ce rapport, il n'y avait pas encore beaucoup de documentation sur ce produit nouvellement sorti.

Scotty, de développeurs indépendants :

Scotty est un outil de supervision de réseau. Il est livré avec une interface graphique : " tkined ". Il permet une représentation graphique des noeuds d'un réseau. Il permet également l'analyse du fonctionnement des noeuds à l'aide du protocole SNMP. Scotty est une distribution incluant deux composants.

Le premier est Tnm Tcl Extension. Il permet un accès aux sources d'informations des réseaux par une invite de commande Tcl. Il utilise les protocoles suivants : SNMP (SNMPv1, SNMPv2c, SNMPv2u avec accès aux définitions de MIB), ICMP, DNS, HTTP, SUN RPC, NTP et UDP.

Le deuxième composant est Tkined : un éditeur de réseau s'appuyant sur Tnm. Il peut découvrir le réseau et permet entre autre l'interrogation de MIB.

Pour les utilisateurs plus avancés, quelques scripts Unix ou un programme en C permettent de surveiller des applications. Ceux-ci peuvent être facilement intégrés dans Tkined.

2. Solution Retenue

Une première étape a consisté à éliminer tous les produits payants pour des raisons d'économie du fait que la hiérarchie désirait un produit simple, efficace et surtout gratuit tant pour le logiciel que pour éviter les frais liés à la formation.

En effet, sur des produits plus complets et, dans certains cas, trop complexes, il est nécessaire d'investir en plus dans la formation des utilisateurs et dans le transfert de compétences.

Il ne restait donc, après cette étape, que 4 logiciels en concurrence : Big Brother, Ganglia, Scotty et Nagios (anciennement Netsaint).

La deuxième étape a consisté à évaluer les possibilités des différents logiciels libres en établissant un comparatif entre les besoins et les possibilités offertes par ces solutions.

Big Brother n'a pas été retenu pour les raisons suivantes :

Ganglia n'a pas été retenu pour les raisons suivantes :

Scotty n'a pas été retenu pour les raisons suivantes :

Nagios fut retenu pour les raisons suivantes :

3. Avenir de la supervision de réseau

L’avenir de l’administration passera par l’Internet car il facilite l’administration à distance. Il se dégage déjà un standard autour :

Un troisième standard émerge autour de JAVA:

CONCLUSION

Ce stage a été véritablement enrichissant de multiples manières :

1. Professionnel

Au cours de ce stage, j'ai pu réellement appréhender ce qu'était le travail d'un administrateur réseau n'ayant que peu d'idées sur tout ce que cela demandait en termes de compétences techniques, de disponibilité et de relationnel.

De multiples casquettes sont à gérer : administration courante, relais technique entre les utilisateurs et le système informatique en place,

Une excellente connaissance de son parc et des possibilités qu'il offre est indispensable tant sur le plan matériel que logiciel.

La notion d'anticipation et de veille technologique est importante et rassurante tant pour la hiérarchie que pour tous les utilisateurs.

2. Relationnel

On sous estime souvent l'apport relationnel qu'un stage peut apporter.

Personnellement, j'y ai compris que plus la communication était présente entre les différents acteurs d'un service, plus la qualité du travail progressait.

Des échanges permanents contribuent aussi à acquérir des compétences et un savoir-faire par la transmission d'idées et de vécus.

Les relations avec les utilisateurs m'ont permis de voir que, parfois, ce qui est évident pour un informaticien ne l'est pas pas pour celui qui est novice et qu'il est nécessaire de poser des questions précises pour cerner le problème.

3. Personnel

Il est difficile de décrire toutes les phases par lesquelles on passe lors d'un stage où, chaque jour, on apprend de nouvelles choses.

J'ai noté l'importance de se remettre en question de manière régulière dans le but d'évoluer et d'acquérir les techniques indispensables à ce métier.

Certaines qualités sont indispensables à travailler comme l'humilité, la concentration, la communication et la diligence, tout cela pour fournir un travail sérieux et de qualité.

L'investissement paraît important au départ mais c'est parce que l'on ne possède pas assez les techniques et les compétences nécessaires pour y arriver.

La formation initiale est plus que suffisante, mais en fait, rien ne vaut la mise en situation réelle pour mieux comprendre le fonctionnement d'une entreprise, de ses services et de son architecture informatique propre, fruit d'une adaptation permanente aux besoins recensés.

En résumé, ce stage m'a permit d'évoluer dans ma compréhension de la technique et des individus, d'acquérir des compétences recherchés et de constituer un tremplin adéquat pour une carrière dans l'administration réseau.

ANNEXES

1. Le protocole SNMP

Le protocole SNMP (Simple Network Management Protocol) est un protocole d'administration réseau composé de trois types d'éléments :

- des AGENTS sur les hôtes distants chargés d'enregistrer en permanence les informations du système local dans la MIB

- une MIB (Management Information Base), base de donnée contenant les valeurs que l'on désire récupérer.

- une NMS (Network Management Station) capable d'aller chercher et d'interpréter les données.

Schéma SNMP




Pour interroger une MIB, il existe 5 commandes de base sous linux : snmpget, snmpgetnext, snmpset, snmpwalk et snmptrap cette dernière permettant l'envoi d'alertes à la NMS sur la base d'une valeur d'une variable présente dans la MIB.

Voici un exemple en ligne de commande :



                Cette commande effectue une requête dans l'arborescence de la table MIB à partir de l'adresse IP de l'hôte (ici 192.10.20.20). Ici, on demande une description du système telle qu'elle est enregistrée dans la table MIB du serveur concerné.
                Il est à noter que dans la MIB par défaut d'un serveur Windows NT, on peut accéder à deux branches de l'arborescence principale, l'une est nommée mib-2 (contenant des informations sommaires sur l'OS, les interfaces et les protocoles) et l'autre est nommée lnmib (contenant des informations sur les services réseaux actifs).

On peut bien sûr ajouter des branches supplémentaires pour augmenter le nombre de valeurs à contrôler. Pour cela, on peut utiliser celle qui est développée par Gart Williams (site : http://www.snmp4tpc.com/) disponible gratuitement en téléchargement (sous le nom de PERFMIB).

Il a développé la branche des compteurs du système Microsoft (.1.3.6.1.4.1.311.1.1..3.1.1.*). On a ainsi accès aux informations de mémoire, de charge CPU, d'espace disque, etc...

Pour les serveurs 2000, il existe par défaut une branche de la mib-2 Standard, appelée "host" (.1.3.6.1.2.1.25.*), qui contient certains compteurs (ou valeurs) système comme l'uptime, l'utilisation de la mémoire, l'espace disque, la charge du processeur,...

Gart Williams en a développé une autre pour Windows 2000 (toujours appelée PERFMIB) mais dont le nombre de compteurs est plus restreint que pour les serveurs NT. Pour avoir tous les compteurs disponibles, il est nécessaire de payer une licence.

Pour les serveurs Citrix, c'est identique aux serveurs Windows 2000. L'avantage est que l'on peut générer un large variété de traps.

Schéma d'une MIB standard


2. Compléments sur Nagios

2.1 Installation sur Mandrake 9.1

Il faut d'abord télécharger les fichiers suivants sur le site www.rpmfind.net par exemple :

nagios-1.0-2mdk.i586.rpm

-> paquetage pour installer nagios

nagios-www-1.0-2mdk.i586.rpm

-> paquetage pour l'interface web

nagios-plugins-1.3b1-2mdk.i586.rpm

-> paquetage de modules nécessaires

fping-2.4b2-2mdk.i586.rpm

-> paquetage pour utiliser ICMP

libradius0-0.3.2-1mdk.i586.rpm

-> paquetage de librairies pour Radiusclient

ntp-4.1.1-2mdk.i586.rpm

-> paquetage pour utiliser NTP

ucd-snmp-utils-4.2.3-4mdk.i586.rpm

-> paquetage pour utiliser SNMP

libsnmp0-4.2.3-4mdk.i586

-> fichier de librairies pour protocole SNMP

Ensuite, on clique droit sur chacun des paquetages :

Ouvrir avec... -> Installateur de logiciels.

Il existe un ordre d'installation : d'abord nagios-plugins puis nagios-1.0 enfin le reste des paquetages. Voici l'arborescence de l'installation de Nagios :

/etc/nagios

-> répertoire contenant les fichiers de configuration

/usr/lib/nagios

-> répertoire contenant CGI + modules (les « check »)

/var/log/nagios

-> répertoire contenant les fichiers de logs

/var/spool/nagios

-> répertoire du fichier de commande externe

/usr/share/nagios

-> répertoire de sons, images et documentation

/etc/rc.d/init.d/nagios

-> fichier de démarrage (du daemon)

/var/run/nagios

-> fichier indiquant le PID du programme

/usr/sbin/nagios

-> fichier exécutable de nagios

/var/lock/subsys/nagios

-> fichier système bloqué en cours d'exécution

/etc/httpd/conf/nagios-httpd.conf

-> fichier d'alias

L'utilitaire d'installation demandera peut-être d'autres fichiers pour satisfaire les dépendances.

2.2 Serveur Web

Nagios a également besoin d'un Serveur Web. Il faut vérifier que l'on possède bien le paquetage pour le serveur Web Apache. Ensuite, qu'il fonctionne, en vérifiant que le daemon ou processus httpd soit actif. On teste enfin le tout en tapant l'url suivante dans un navigateur (Mozilla) :

http://localhost/ -> une jolie page d'accueil doit s'afficher !

S'il est nécessaire de (re)démarrer les daemons httpd et nagios. On peut le faire de deux façons :

A ce stade, on peut vérifier que l'on a accès à la page d'accueil de nagios en tapant cette url : http://localhost/nagios/

3. Evolutions et améliorations

3.1 Logiciel Nagios

Comme tout logiciel à code source ouvert, Nagios est peut-être promis à un bel avenir tant que des développeurs continueront à le faire évoluer.

Cette évolution est logiquement catalysée par le nombre d'utilisateurs et par une communauté désirant s'affranchir des solutions payantes.

3.1.1 Sécurisation de Nagios

1°) Ne pas lancer Nagios en tant que « root » ; il faut ajouter au fichier de configuration un « user » et un « group » qui ne possède pas tous les droits.

2°) Désactiver les commandes externes si on ne les utilise pas.

3°) Accéder à l'interface Web via une authentification.

4°) Utiliser des chemins complets dans la définition des commandes (évite le lancement de « chevaux de Troie »).

5°) Cacher les informations sensibles à l'aide des macros $USERx$ : les CGI lisant les fichiers de configuration, il est recommandé de ne pas y laisser d'informations sensibles (user, password) et de les cacher par l'utilisation de macros définit dans les fichiers de ressources non parcourut par les CGI et dont on peut restreindre les droits.

3.1.2 Performances du processus Nagios

Il est possible d'augmenter sensiblement les performances de Nagios de différentes façons :

1°) Préférer l'utilisation des contrôles passifs aux contrôles « normaux » permet de limiter la charge induite par le traitement des résultats.

2°) Utiliser l'interpréteur Perl intégré accélérera les traitements.

3°) Optimiser la configuration matérielle de la station de surveillance en particulier l'accès aux disques qui peuvent être un goulet d'étranglement

3.1.3 Gestionnaire d'événements dans Nagios

Il est possible d'exécuter des commandes optionnelles à chaque fois qu'un changement d'état a lieu. Cela permet de résoudre les problèmes de manière préventive avant que quelqu'un ne reçoive une notification. L'exemple le plus évident étant de vouloir redémarrer un service à la première alerte.

Une seconde utilité est celle d'enregistrer les événements relatifs aux hôtes ou aux services dans une base de donnée externe.

3.1.4 Supervision Redondante avec Nagios

Lorsque l'on désire accéder à des portions du réseau inaccessible depuis la station de surveillance ou encore lorsque celle-ci est défaillante, on peut implémenter Nagios de manière à ce que d'autres stations prennent le relais.

C'est un fonctionnement maître esclave(s) dans le cas d'une défaillance et en pool dans le cas de multiples réseaux.

3.1.5 Supervision Répartie avec Nagios

Le but est de répartir l'excès de charge induite par les contrôles de services du processus central Nagios sur un ou plusieurs serveurs répartis. Cette possibilité ne concerne que les entreprises qui possèdent des centaines voire des milliers d'hôtes.

Le serveur central écoute simplement les résultats des contrôles alors que ce sont les serveurs répartis qui ordonnancent les contrôles.

3.1.6 Supervision de clusters de services et d'hôtes avec Nagios

Dans le cas où l'on veut connaître l'état général de services groupés ou d' hôtes groupées, il existe un plugin permettant de le faire.

On peut le faire de deux manières : superviser individuellement les éléments du cluster ou superviser en tant qu'entité collective.

Nagios gère très bien le clustering avec son plugin « check_cluster ».

3.1.7 Modules supplémentaires de Nagios

Il existe d'autres possibilités exploitables comme le support de base de données, la détection du balayage de port en combinant Nagios et le logiciel Portsentry, les alertes de rejet de connexions par les enveloppes TCP/IP,...

Les derniers développements sont disponibles sur le site officiel de Nagios :

http://www.nagios.com

3.2 Utilisation du protocole SNMP

Le protocole SNMP s'est enrichi, depuis sa version 1 de nombreuses évolutions décrites ci-après.

3.2.1 Versions supérieures du protocole

La version 2 améliore le protocole sous 6 aspects distincts :

Le problème de SNMPv2 c'est qu'il n'existe actuellement aucun standard largement accepté, à la différence de SNMPv1. Il n'est pas facile de rencontrer des versions de SNMPv2 d'agents ou de software qui utilisent les nouvelles commandes. Il faut laisser passer le temps et voir ce qu'il en adviendra dans le futur proche.

3.2.2 Les défauts du protocole SNMP

4. Exemple de Script Perl utilisé avec Nagios

Script testant le service de spool par SNMP

 1 #!/usr/bin/perl 
2 my $ip_address = shift || &usage();
3 my $oid = ".1.3.6.1.4.1.77.1.2.3.1.1.7.83.112.111.111.108.101.114";
4 my $return_value;
5
6 $return_value = system("/usr/lib/nagios/plugins/check_snmp -H $ip_address
7 -C 'public' -o $oid -l 'Service Spooler'");
8
9 if ( $return_value != 0 ) {
10 $return_value = 2;
11 }
12
13 exit $return_value;
14
15 sub usage {
16 print "Arguments requis !\n";
17 print "\n";
18 print "Plugin en Perl testant le Service Spooler pour Nagios et NT OS\n";
19 print "Usage: check_print_nt.pl <adresse ip>\n";
20 print "\n";
21 print "<addresse ip> = Addresse IP du serveur NT à interroger.\n";
22 exit -1;
23 }

Quelques explications :

ligne 1 : on utilise l'interpréteur Perl

lignes 2-4 : déclaration et affectations des variables utilisées

lignes 6,7 : on fait exécuter d'abord le script "check_snmp" (plugin de Nagios) pour récupérer ensuite une valeur de retour dans la variable "$return_value", il est aussi possible de faire directement un <snmpget AdresseIP communauté OID> et de récupérer une valeur de retour dans "$return_value".

Cette variable contient soit la valeur 0 pour un état OK, soit une autre valeur pour les états UNKNOWN,CRITICAL,UNREACHABLE.

lignes 9-11 : si la valeur de retour est différente de 0, elle prendra la valeur 2 pour un état CRITICAL

ligne 13 : on retourne la nouvelle valeur à Nagios

lignes 15-23 : procédure de deboggage en mode console appelée lorsque le paramètre est incorrect

Tous droits Réservés - Juin 2003 - MERAT Jean-Luc

Retour à l'accueil