Outils de monitoring réseau

J'ai installé Zabbix pour la surveillance du réseau de l'Université de Polynésie Française (UPF), ce rapport présente la réfléxion sur ces outils et leur mise en oeuvre.

J’ai installé Zabbix pour la surveillance du réseau de l’Université de Polynésie Française (UPF), ce rapport présente la réfléxion sur ces outils et leur mise en oeuvre.

Les outils de monitoring réseau

I/La nécessité du monitoring réseau

1/Les dangers que peut rencontrer un réseau informatique

Un réseau informatique peut être l’objet de nombreux problèmes : que ce soit l’indisponibilité d’un serveur ou une défaillance physique du réseau, les risques sont multiples, et les conséquences en général très importantes. Ces pannes peuvent ainsi bloquer un réseau complet, paralysant les outils de travail d’une entreprise, ou encore empêcher les clients d’accéder au site web d’une société. En plus du manque à gagner que peuvent engendrer ces pannes, elles mettent aussi en doute le sérieux de l’entreprise. Il faut donc tout faire afin d’améliorer la fiabilité de son système informatique.

2/ La nécessité d’empêcher les pannes

2.a/Un système informatique parfait

Il y a donc une nécessité d’empêcher les pannes. Bien sûr, une étude sérieuse de la conception du système permet d’éviter la plupart des problèmes, mais, comme nous le savons tous, il est impossible de réaliser un système informatique infaillible. De la défaillance matérielle à la défaillance logicielle, les événements provoquant une panne sur le réseau interviennent bien souvent de façon imprévisible. Tout réseau est donc susceptible de tomber en panne de manière inopinée.

2.b/La nécessité de prévenir les pannes en temps réel

Puisqu’on admet l’impossibilité de mettre en place un système totalement fiable dont la disponibilité serait permanente, la seule solution possible serait d’analyser en permanence nos installations, et agir le plus vite possible lorsque des conditions critiques aboutissant à une panne sont atteintes. Mais il est impossible de surveiller en permanence le bon fonctionnement de l’ensemble de ses systèmes. D’autres parts, collecter l’ensemble des informations du réseau demanderait un travail considérable.

3/La solution : Les outils de monitoring réseau

3.a/Confier ce travail à un logiciel

Afin de bénéficier d’une surveillance permanente et efficace de l’ensemble de nos réseaux informatiques, il est nécessaire de confier la tâche de surveillance à un logiciel, qui aura pour tâche de relever à intervalles réguliers toutes les caractéristiques du système. On pourra ainsi bénéficier d’une surveillance permanente, et locale à chaque système informatique installé, nous permettant d’agir dès qu’un problème se présentera. Nous allons voir dans les parties suivantes les bénéfices qu’apporte ce type de logiciels.

3.b/Etre alerté lors d’un problème

Tout d’abord, l’utilisation d’un logiciel de surveillance va nous permettre de gérer des systèmes d’alarme, que le programme enclenchera dans des moments prédéfinis. Nous pouvons ainsi demander au logiciel de nous alerter lorsqu’un serveur atteint des conditions de fonctionnement critiques ; ou encore lorsqu’un service est subitement devenu indisponible. On peut envisager d’être prévenu de ces problèmes par téléphone, mail ou encore SMS. On peut ainsi être tenu au courant en permanence des événements du réseau, et agir immédiatement en cas de problème.

3.c/Avoir accès à une archive des événements du réseau

L’utilisation d’un utilitaire de surveillance nous permettra aussi de garder en archive l’ensemble des données du système. Ces archives seront très instructives sur le comportement de la machine, en nous donnant la possibilité de connaître l’ensemble des événements qui ont conduit au plantage du service ; l’intérêt est ainsi double, car cela va nous permettre de mieux comprendre la panne et de remettre ainsi beaucoup plus vite le serveur sur pied, ainsi que de prendre connaissance de nouvelles « fragilités » dans un réseau.

3.d/Effectuer des actions automatiques

Beaucoup de pannes sont très simples à réparer, et leur réparation facilement réalisable à base de script. Grâce à un logiciel de surveillance adapté, nous pourrions lancer ses scripts dès que la panne se produit. Cela nous permettrait de réparer de façon quasi-instantanée un service, et aussi de réaliser automatiquement quelques opérations de maintenance, telles que la purge des disques durs en cas de saturation.

II/Quoi, et comment surveiller ?

1/ Quoi surveiller ?

Les réseaux étant constitués d’un très grand ensemble d’éléments, il peut être difficile de cibler les équipements à surveiller en priorité.

1.a/Les services

Les réseaux ayant généralement pour rôle de permettre l’accès à des services proposés par des machines distantes, il va de soit que les machines hébergeant ces services doivent être en permanence surveillées. Directement accessibles par l’utilisateur, l’indisponibilité de ces services serait très vite pénalisante pour l’ensemble du réseau, et discréditerait réellement le travail de monitoring. Nous devons donc demander au logiciel de monitoring de s’assurer en permanence de la bonne marche de ces services.

1.b/Les équipements

La surveillance des services ne suffit pas ; A quoi sert-il de surveiller la bonne fonctionnalité d’un système si certains utilisateurs ne peuvent y accéder du fait d’un routeur inutilisable ? Les routeurs, switchs et autres équipements intermédiaires doivent donc être surveillés également, afin de s’assurer que les moyens d’accès aux services soient opérationnels.

2/Comment surveiller ?

2.a/La surveillance selon les différentes couches OSI

Les couches OSI nous offrent différentes possibilités d’analyse d’un réseau, réparties dans les couches 3, 4, 6 et 7. Correctement utilisées, celles-ci nous permettront de récolter des informations essentielles sur l’état du réseau et de ces services :

– La couche 3

nous offre le protocole « ICMP echo » (ping), qui permet de savoir si une machine est bien connecté sur le réseau, et en état de marche. Il s’agit généralement du premier test effectué lors d’un contrôle, qui permet de savoir si l’équipement cible est bel et bien joignable.

– La couche 4

nous permet de tester les différents ports d’un serveur, en utilisant une connexion TCP ou UDP. Bien que cela permette de savoir si un service est bien présent sur une machine, la couche 4 ne nous permet pas de savoir si un service est pleinement fonctionnel.

– La couche 5

offre Netbios, uniquement sous Windows, qui permet de recueillir différents statistiques sur une machine. Cette disponibilité limitée limite énormément son utilisation.

– La couche 6

nous permet d’utiliser SNMP(Single Network Management Protocol), l’outil de supervision de réseau. Utilisé par de nombreux routeurs, ce protocole nous permettra de surveiller efficacement les équipements intermédiaires.

– La couche 7

nous permet un test complet des différents services d’une machine. On peut en effet imaginer des tests qui effectueraient juste un ensemble de requête vers le service afin de tester pleinement sa disponibilité.

Les couches 6 et 7 permettent aux éléments surveillés de communiquer eux même leurs informations au logiciel de monitoring. Dans la couche 6, on peut utiliser SNMP pour diffuser les informations en broadcast, et sur la couche 7 on peut mettre en place un système d’agent installé sur la machine surveillée.

2.b/La surveillance d’autres facteurs

Il y a des caractéristiques purement « systèmes » à surveiller, qui vont nous permettre de prévenir les pannes, et d’analyser les capacités des équipements à supporter les demandes. Les taux de charge CPU et mémoire nous donnent un aperçu intéressant de la charge du serveur, et pourraient permettre des systèmes de régulation afin de garantir un pourcentage de ressources égal à chaque service.

D’autres facteurs, tel que la saturation des disques, sont à prendre en compte car ils peuvent causer une panne du système.

III/Présentation de deux outils de monitoring réseaux

A titre d’exemple, nous allons présenter deux outils de monitoring réseau couramment utilisés : Nagios, et Zabbix. Ces deux logiciels sont sous licence GPL, ce qui permet leur libre utilisation ainsi qu’un accès complet au code source. La licence GPL vous donne aussi le droit de distribuer votre propre version d’un logiciel, à condition que cette version supporte aussi pleinement la licence GPL.

1/Nagios

1.a/Disponibilité

Certainement le plus utilisé des logiciels de monitoring réseau, Nagios est prévu à l’origine pour Linux, mais fonctionne sur tout Unix, et tourne sous la forme d’un daemon. Il est néanmoins possible de le lancer en mode utilisateur, ce qui ajoute à sa facilité d’utilisation. Pour installer Nagios, aucun pré requis logiciel n’est nécessaire. Pour utiliser l’interface de supervision Web décrite en dessous, il faut néanmoins avoir installé Apache.

1.b/Possibilités

Nagios offre de nombreuses possibilités d’alertes, par mail ou sms, sur de nombreux éléments d’un système :

-Indisponibilité d’un service : Nagios peut par défaut exécuter des tests sur la plupart des services courants : POP3, HTTP, SMTP… et prévenir automatiquement en cas de défaillances

-Indisponibilité d’un équipement : Nagios est capable d’effectuer des tests de présence et de disponibilité sur chaque équipement, en faisant la différence entre hôtes injoignables et hôtes arrêtés, grâce à un système hiérarchique d’hôtes parents.

-Le dépassement de conditions critiques prédéfinies telles que :

-Les taux de charge CPU et Mémoire

-La liste des processus

-Des facteurs externes, tels que les températures. Une température anormalement élevée dans une machine peut en effet être la source de plantages aléatoires.

Nagios offre un système de gestionnaire d’évènements, qui va permettre de définir des actions à effectuer face à des pannes typiques. Par exemple, on peut imaginer le simple redémarrage automatique d’un service qui posséderait malheureusement des problèmes de stabilité le mettant fréquemment hors service, ou encore la désactivation de certains processus lorsque le serveur n’est plus capable de satisfaire les demandes qui lui sont faites. Cette possibilité de gérer de façon simple les différents éléments du réseau constitue un moyen simple d’automatiser des taches courantes nécessaires à l’entretien du système.

L’ensemble des informations scrutées est bien sûr archivée,  afin de permettre une analyse de l’évolution du réseau. Nagios utilise une base de données SQL pour stocker ces informations, dont le logiciel est ensuite capable d’utiliser pour réaliser de multiples statistiques et représentation graphique.

Nagios offre la possibilité de pouvoir surveiller en temps réel son réseau via une interface Web, ce qui permet d’avoir une vue globale du système d’un instant à l’autre. Nagios est également très évolutif, car il utilise un design à base de plugins. L’utilisateur peut donc créer lui-même ses propres modules de vérifications, et donc surveiller des applications pour lesquelles le programme n’était pas prévu à l’origine. Cela peut être très intéressant pour surveiller la disponibilité d’un nouveau service.

Voici quelques exemples d’utilisations de Nagios :

Nous pouvons ici voir la page de suivi en temps réel des différents services du système. Chaque ligne indique le compte rendu d’un test, avec dans l’ordre l’hôte testé, le service testé, le résultat (OK, Warning, CRITICAL, Pending), la date du dernier test, la durée de la surveillance, le nombre d’essais et le détail du test. On retrouve en vert les services disponibles, en rouge les services en condition critique, et en gris les services pour lesquels les tests sont suspendus.

Ce screenshot montre la capacité de Nagios à générer des graphiques illustrant l’organisation du réseau. On peut ainsi obtenir une vue globale du réseau, et obtenir les informations de chaque nœud en cliquant dessus.

Cette photo montre les possibilités de représentations graphiques que peut générer Nagios à partir de ses archives. Nous avons ici le nombre d’événements qui sont intervenus autour du service ‘SYS Volume’, ainsi que leurs types, selon l’heure de la journée.

Vous pouvez également accéder à une démonstration interactive complète en ligne à l’adresse suivante : http://nagios.square-box.com/ (login : guest, password : guest)

1.c/Installation

L’installation de Nagios ne nécessite aucun logiciel particulier, à part la présence d’un compilateur C. Comme dit précédemment, Nagios fonctionne sous tout Unix. TCP/IP doit bien sûr être correctement configuré.

L’utilisation de l’interface web implique par contre la présence d’un serveur web, correctement configuré pour supporter les CGI. En effet l’interface web de Nagios fonctionne sous la forme de plusieurs CGI. Aussi, la libraire gd (http://www.boutell.com/gd/) devra être installée sur le système car Nagios l’utilise pour générer ses graphiques.

La phase de configuration de Nagios est relativement importante, et implique de nombreux réglages. Nous allons les aborder en détail :

Il est tout d’abord nécessaire de créer le répertoire de base où l’on va installer Nagios. Nous allons ici le placer dans le répertoire /usr/local/nagios, après l’avoir créé par la commande mkdir /usr/local/nagios.

Bien que cela ne soit pas réellement obligatoire, il peut être plus pratique de créer un compte utilisateur spécifique à Nagios plutôt que de le lancer à partir d’un compte utilisateur non dédié. Dans la suite de l’exemple nous supposerons qu’il existe un utilisateur nommé nagios.

Nous allons maintenant lancer la compilation du logiciel. Comme de nombreux autres logiciels sous Linux, la phase de compilation débute par le traditionnel appel au script configure :

./configure –prefix=prefix –with-cgiurl=cgiurl –with-htmurl=htmurl –with-nagios-user=someuser –with-nagios-grp=somegroup

Où:

Prefix

correspondra au repertoire de base spécifié plus haut (ici /usr/local/nagios)

Cgiurl

correpondra au répertoire contenant les CGI de Nagios (stockés dans le répertoire cgi-bin, donc ici ce répertoire sera /usr/local/nagios/cgi-bin)

Htmurl

correspondra au à l’URL à demander pour accéder à l’interface principale de Nagios (par défaut nagios)

Somegroup

doit correspondre au groupe qui possède les droits sur les fichies installés (par défaut nagios)

Passé cette phase de configuration, on peut lancer la compilation proprement dite par la commande make :

make all

Une fois compilé, on peut lancer l’installation proprement dite :

make install

Le script d’installation nous offre aussi la possibilité de réer automatique un script d’initialisation dans le répertoire /etc/rc.d/init.d/nagios en lançant simplement la commande suivante :

make install-init

Néanmoins le fichier généré doit être adapté à votre système d’exploitation.

Après installation, la liste des répertoires suivantes doit se trouver dans le fichier /usr/local/nagios :

bin/

contenant l’ensemble des binaires de Nagios

etc/

qui comporte les fichiers de configuration

sbin/

les fichiers des CGI

share/

les fichiers html de l’interface web

var/

utilisé pour les fichiers de journalisation

1.d/Configuration

Nagios est maintenant installé, nous allons maintenant passer à la phase de configuration. Celle-ci passe par la création de plusieurs fichiers de configuration, que nous allons décrire :

Le fichier de configuration principal : /usr/local/nagios/etc/nagios.cfg

Il s’agit du fichier de configuration principal, qui comporte les éléments de configuration essentiels à Nagios. Ce fichier est créé lors de l’appel à la commande configure dans la phase de compilation, et est lu par le processus Nagios et ses CGI.

Les fichiers de ressources

C’est dans ces fichiers que nous devons stocker les macros que nous pouvons définir, ainsi que des informations de configurations telles qu’une url de connexion à une base de données. Il est possible d’utiliser un ou plusieurs fichiers de ressources, ce paramètre est à régler grâce à la directive resource_file présente dans le fichier de configuration principal. On peut stocker des informations sensibles dans ce type de fichiers, car ceux-ci ne sont pas accessibles à travers les CGI.

Le fichier de configuration des objets

On stocke dans ce fichier la définition la liste des hôtes et des services à surveiller.

Le fichier de configuration des CGI

/usr/local/nagios/etc/cgi.cfg

On peut dans ce fichier régler de nombreux paramètres qui agiront sur le fonctionnement des CGI. Un fichier type est généré automatiquement lors du lancement de la commande configure de la phase de configuration.

Une fois la configuration effectuée, Nagios nous offre la possibilité de vérifier l’intégrité de l’ensemble de la configuration, par la commande

nagios –v /usr/local/nagios/etc/nagios.cfg

Nagios va alors contrôler l’intégrité de vos fichiers, et s’arrêtera sur la première erreur rencontrée, en indiquant la ligne du fichier en cause. De nombreux messages d’avertissement sont généralement affichés, mais peuvent être ignorés sans risque car il s’agit avant tout de recommandations.

1.e/Lancement de Nagios

Nous pouvons maintenant démarrer Nagios. Dans un premier temps, nous allons le lancer en temps que processus prioritaire, afin de tester notre configuration

nagios /usr/local/nagios/etc/cgi.cfg

On pourra ainsi voir si le lancement se fait sans erreur, et on pourra simplement stopper Nagios par CTRL-C.

Néanmoins ce logiciel a été conçu pour fonctionner en tant que daemon, nous allons donc voir comment le lancer en tant que daemon. Ce mode de fonctionnement implique la création d’un fichier de configuration dans le répertoire /etc/rc.d/init.d/, et de créer un lien avec les scripts des différents runlevel pour lesquels Nagios doit démarrer. On peut utiliser le fichier de configuration exemple créé par la commande configure, en utilisant la commande make install-daemoninit. Ce script est prévu pour Linux, des modifications seront certainement nécessaires si vous souhaitez installer Nagios sur un autre Unix.

1.f/Conclusion sur Nagios

Bien que la phase de configuration implique un travail conséquent, le résultat en vaut la peine, au vue des multiples possibilités de Nagios. Epprouvé et très complet, il vous permettra de surveiller de manière très efficace vos réseaux, et son interface Web le rend très pratique à utiliser.  Enfin, son système de plug-ins vous permettra d’étendre facilement son utilisation à tous les tests que vous souhaitez ; vous pourrez ainsi la stabilité des serveurs que vous aurez vous-même créés.

2/ZABBIX

2.a/ Introduction

Zabbix est une solution complète de surveillance qui permet de surveiller son réseau à moindre cout. Il peut fonctionner soit par test direct des machines, soit par un système d’agent installé sur la machine envoyant à intervalles réguliers les informations de monitoring. Zabbix offre de nombreuses possibilités d’alertes, par mail ou sms. Il est téléchargeable gratuitement à l’adresse http://www.zabbix.com.

2.b/ Possibilités

2.b.1/ Surveillance des applications 

Zabbix utilise principalement SNMP (Single Network Management Protocol) pour collecter ses informations de surveillances. Le programme peut ainsi surveiller n’importe quelle application comme Oracle, WebSphere, WebLogic, Exchange, etc. supportant SNMP, ou tout serveur en utilisant un agent installé en interne sur la machine cible.

2.b.2/ Surveillance des Serveurs

Le serveur Zabbix tourne sur : AIX, FreeBSD, HP-UX, Linux, MacOSX, OpenBSD, SCO Open Server, Solaris, Tru64/OSF.

L’agent Zabbix tourne sur les mêmes plateformes que le serveur ainsi que sur d’autres plateformes comme : Win NT 4.0/2000/2003/XP, Novell NetWare. La disponibilité de certains services (SMTP, IMAP, POP3, HTTP, SSHD, etc) peuvent être surveillées sans aucun agent installé.

Toute plateforme ou composant réseau supportant SNMP (routeur, switch, hubs, imprimantes…) peut être surveillé de façon simple par Zabbix.

2.b.3/ Surveillance du réseau

Zabbix produit en plus des statistiques sur le trafic dans un réseau, une carte donnant une bonne représentation de son infrastructure. Cette carte montre les composants, les connexions, les statuts des composants, et les raisons pour les quelles un composant n’est pas disponible ou a n’importe quels problèmes. Voici un exemple de carte générée par Zabbix :

Ce screenshot est une représentation du réseau. Le « OK» vert signifie que le composant fonctionne correctement. La carte montre le statut de tous les éléments incluant les connecteurs. On peut ainsi avoir une vue globale et pratique du réseau.

Affichage de la carte en mode plein écran.

2.c/ Utilisation

2.c.1/ Surveillance des performances 

L’une des plus importantes utilisations de Zabbix est la surveillance de performance, la charge du processeur, le nombre de processus actifs, nombre de processus, activité du disque, et la taille de mémoire disponible font partie des paramètres système que Zabbix peut surveiller.

Zabbix peut produire des graphiques pour aider l’administrateur à identifier des goulots d’étranglement dans le réseau. Voici quelques exemples de graphes :

Le graphique montre trois paramètres différents – la dernière charge de processeur, la charge moyenne de processeur (5 minutes) et la charge moyenne de processeur (15 minutes) pour le centre serveur.

Charges du réseau. Moyennes pour 1 minute (nombre de bytes envoyés/reçus). On peut ainsi constater des possibles congestions du réseau.

Le graphique montre de charge du disque /dev/hdb. Grâce à ce type de graphiques on peut ainsi voir si la vitesse d’accès aux données est suffisante, ou s’il faut mettre en œuvre un système de disque RAID pour améliorer le débit.

Le graphique montre la mémoire système (RAM) disponible. La saturation mémoire peut limiter sensiblement la rapidité des services hébergés sur la machine.

Le graphique montre l’utilisation de la mémoire sur une longue période.

2.c.2/ Utilisation des alertes

Un administrateur peut définir pratiquement n’importe quel état possible pour un déclenchement d’alerte, en utilisant des expressions flexibles. Quand ces expressions deviennent vraies (ou fausses), une alerte sera envoyée à n’importe quelle adresse définie par l’administrateur.

Un programme externe peut être utilisé pour faire suivre les alertes, pour pas exemple les émettre par SMS.

2.c.3/ Contrôle de l’intégrité

Zabbix offre la possibilité de contrôler des fichiers critiques pour le système comme les fichiers de configurations, les binaires, le noyau, les scripts … une alerte est déclanchée quand un de ces fichiers est modifiés, indiquant ainsi que l’intégrité du système est en danger.

2.d/ Installation

L’installation de Zabbix se fait en quelques minutes, il suffit de suivre les instructions contenues dans cette page www.zabbix.com\manual_install_server.html pour le serveur, www.zabbix.com\manual_install_agent.html pour l’installation de l’agent sous Unix. www.zabbix.com\manual_config_w32.html pour l’installation de l’agent sous Win NT 4.0/2000/2003/XP.

Il vous restera à configurer votre agent, pour cela consulter la page www.zabbix.com\manual_config.html.

La configuration de Zabbix est très simple, car elle se fait via l’interface Web. Voici respectivement la page de configuration principale, celle de gestion des droits des utilisateurs et la page de configuration des hôtes surveillés :

La page de configuration principale

La page de gestion des utilisateurs

La page de configuration des hôtes

2.e/Conclusion sur Zabbix

Bien que moins répandu que Nagios, Zabbix offre à peu de chose près les mêmes possibilités. Zabbix l’emporte néanmoins sur la simplicité de configuration, se faisant à partir d’une interface HTML. D’autres parts son système d’agents permet de surveiller des propriétés systèmes sur des OS autres qu’Unix.

3/Les autres logiciels de surveillance réseau

3.a/Les logiciels gratuits

Il existe quelques autres logiciels de surveillance utilisable gratuitement :

Angel Network Monitor, conçu en langage Perl. Le principe de ce programme est de lancer des sous-scripts Perl de test

Autostatus

MARS , un logiciel de surveillance écrit en Java, qui simule des connexions Client

Mon

NetMRG

PIKT, un logiciel multi-usages assurant entre autre la surveillance de système informatique

Scotty, basé sur le langage de script Tcl

Snips, anciennement connu sous le nom de Nocol

Spong, un très simple logiciel de monitoring écrit en Perl

Jffnms

3.b/Les logiciels payants

Parmi les logiciels de surveillance réseau payants, on peut citer :

IPSentry, fonctionnant sur les plateformes Windows NT.

Intermapper, qui vous indiquera en temps réel les flux présents sur votre réseau.

IpMonitor

BigBrother

Conclusion

Ces logiciels de surveillance constituent un moyen très efficace de palier à tous les problèmes que peuvent rencontrer un réseau informatique. En permettant d’éviter au maximum les pannes et d’assurer une remise en service rapide, ces outils permettent d’améliorer de façon significative la disponibilité d’un système.

Ils donnent aussi la possibilité d’étudier son évolution à long terme, afin de mieux évaluer les capacités du réseau et de décider si une mise à niveau est nécessaire.

Ces outils ne remplacent pas l’administrateur réseau, mais facilitent grandement son travail.

Par ailleurs, Uperto insiste sur le caractère « particulièrement abouti » de certaines applications de supervision Open Source : Cacti, Nagios, Zabbix ou OpenNMS notamment. « Il est vrai que leurs  périmètres techniques et fonctionnels ne sont pas aussi étendus que ceux des solutions propriétaires. Mais par leur nature, les projets Open Source peuvent aisément être enrichis, le coût de développement additionnel restant de toute façon bien plus faible que l’implémentation d’une solution propriétaire », conclut la SSII.