Académique Documents
Professionnel Documents
Culture Documents
RAPPORT A R CH I T E CT U R E L O GI CI E L L E
SUPERVISION SYSTEME ET
APPLICATIVE (MONITORING) :
ETAT TECHNOLOGIQUE
Préparé par
Fadi ABDELMESSIH
Ali ABDELKAFI
Marvin CESCHEL
Thai Ha NGUYEN
Présenté à
M. Philippe Salvan
Le 8 novembre, 2013
Résumé Exécutif
La supervision est une technique industrielle de suivi et de pilotage informatique de procédés
de fabrication automatisés. La supervision concerne l'acquisition de données (mesures,
alarmes, retour d'état de fonctionnement) et des paramètres de commande des processus
généralement confiés à des automates programmables. [1]
Dans ce rapport, nous présentons tout d’abord ce qu'est un superviseur et ce qu'il supervise.
Par la suite, on explicite les protocoles de supervision existants et on se concentre sur le
protocole SNMP. Enfin, on présente deux solutions de supervision existantes sur le marché :
MRTG et Nagios.
SUPERVISION SYSTEME ET APPLICATIVE (MONITORING) 2
Introduction
Devant le problème récurrent de la gestion de nombreux serveurs et services associés, que ce
soit sur Internet ou non, on voudrait savoir ce qu'il se passe à tout instant afin de pouvoir
réagir rapidement en cas de problèmes. Ces problèmes peuvent en général être de trois types :
Afin de simplifier l'administration de tels systèmes, on utilise de plus en plus des moniteurs
qui sont chargés de cette supervision. Ces moniteurs disposent de différents outils qui
permettront :
d'avoir des informations précises sur les systèmes supervisés à chaque instant
(performance, disponibilité, cohérence) qui permettront de réaliser des graphes, utiles
pour visualiser les performances et les tendances
Afin de récupérer des données à partir des machines supervisées, les moniteurs utilisent des
protocoles réseaux. Nous verrons deux des principaux protocoles utilisés, à savoir SNMP et
Syslog.
SUPERVISION SYSTEME ET APPLICATIVE (MONITORING) 4
- Via un logiciel dédié, ins tallé directement sur les machines qu’on souhaite surveiller
(solutions de type MRTG, voir partie 3.2 : « MRTG »)
- Ou via une solution externe de type ASP (Application Service Provider, c’est-à-dire
un fournisseur d’applications en ligne) via Internet (on p eut citer par exemple
ServeurMonitor ou WebLiveAlert). En particulier, le monitoring de site internet est
très développé.
L’avantage de cette dernière solution est qu’il devient alors simple et peu cher de disposer
d’un outil de monitoring performant, et ce sans devoir investir beaucoup d’argent, de
temps et de compétences. On évitera notamment la mise en place d’infrastructures
techniques, le recrutement de personnes compétentes, l’achat d’un logiciel spécialisé et le
temps de gestion de ces logiciels.
Le superviseur doit d’abord pouvoir collecter et enregistrer des données à partir des machines
monitorées.
Cependant, le superviseur :
performance
doit être performant, c'est à dire qu'il doit être capable de superviser dans les temps.
Également, il doit permettre la mise à l'échelle, c'est-à-dire permettre de superviser
différentes machines dans les temps
mémoire suffisante
Pour réaliser cette supervision, SNMP est un des protocoles les plus utilisés (voir partie sur
SNMP).
SUPERVISION SYSTEME ET APPLICATIVE (MONITORING) 6
1.3.2 Le réseaux
Le superviseur peut superviser un réseau informatique afin de savoir si une machine est
accessible et avec quelle qualité.
Usuellement, le superviseur envoie périodiquement des requêtes à un serveur pour voir s'il est
accessible. Si tel est le cas, on peut également connaître son temps de réponse. Si la requête
ne reçoit pas de réponse, le superviseur peut effectuer plusieurs actions :
Dans le cas d'un serveur web par exemple, on peut superviser via différents protocoles (ex :
HTTP, HTTPS, SNMP, FTP, SMTP, POP3, IMAP, DNS, SSH, TELNET, SSL, TCP, ICMP,
SIP, UDP). Cette supervision peut être interne ou externe. La supervision effectuée de
manière externe est plus fiable car elle continue à fonctionner même quand le serveur tombe
en panne, ou est éteint. Également, celle-ci permet de réaliser des tâches automatiques quand
certains seuils sont franchis (allouer plus de mémoire, réaliser une sauvegarde).
On cherche d'abord à voir si nos applications fonctionnent comme il faut. Pour ce faire, on
utilise des tests qui permettront de vérifier leur bon fonctionnement, et cela sans générer une
charge trop importante ou modifier les données applicatives. On peut également regarder les
fichiers de logs.
En second lieu, on cherche à voir si nos applications logicielles sont performantes. Pour ce
faire, la gestion de la performance des applications, dite APM (« Application performance
management »), permet de surveiller et de gérer leur performance et leur disponibilité. On
cherche à détecter et à diagnostiquer les problèmes de performance des applications afin de
maintenir un certain niveau de service.
Ces métriques permettent de pouvoir évaluer la performance d'une application donnée dans le
temps, et ainsi permet de prévenir différents problèmes qui pourraient surgir. Ainsi, si au bout
d'un moment, l'application est de plus en plus utilisée, on peut détecter si oui ou non notre
système gère correctement la montée en charge. Si ce n'est pas le cas, ces métriques nous
permettront de prévenir le problème, plutôt que de le guérir. En effet, corriger un problème
quand il s'est déjà produit peut s'avérer très coûteux (en termes de temps, d'argent et de
ressource humaine), par rapport à sa prévention.
On observe qu'il peut être difficile de surveiller la performance d'une application car celles-ci
7 SUPERVISION SYSTEME ET APPLICATIVE (MONITORING)
Également, l'environnement dans lequel les applications actuelles s'exécutent est de plus en
plus complexe et ceci pose un frein au monitoring de leur performance. En effet, la
virtualisation des applications, les applications distribuées ou utilisant le Cloud, les services
web, ou les architectures orientées services peuvent avoir des composants éparpillés sur
différentes machines.
SUPERVISION SYSTEME ET APPLICATIVE (MONITORING) 8
2. Protocoles de supervision
Il existe beaucoup de protocoles permettant de collecter des informations des systèmes qu’on
veut superviser. On peut exploiter ces protocoles via des programmes ou des scripts Shell
pour superviser. Egalement, on peut utiliser les produits du marché comme Nagios qui est
l’un des plus populaires (voir la partie 3 : Outils de supervision).
SNMP est l’un des protocoles de supervision les plus importants. Pour cette raison, nous nous
y concentrerons ici. D'autres protocoles peuvent également être utilisés dans la supervision.
On peut citer JMX (protocole spécifique à Java pour le monitoring et l'administration) et des
protocoles propriétaires TCP/IP ou UDP.
Dans le domaine de supervision, on peut utiliser des commandes pour superviser les systèmes,
parmi lesquelles on cite :
2.2 SNMP
2.2.1 Introduction
2.2.2 Histoire
SNMP est une spécification de gestion de réseau créé en 1988 qui est devenue le standard
d'échange d'informations sur le réseau. Avant SNMP et les logiciels de supervisions, les
administrateurs étaient attachés aux périphériques réseaux afin d’accéder à la configuration et
afin de recevoir les données de dépannage. Le SNMP a été conçu pour faciliter le processus
de gestion des réseaux.
2.2.3 Versions
SNMPv1 a été facile à implémenter, mais cette version contient des problèmes de sécurité. Dans
SNMPv2, la sécurité est meilleure que la version 1 mais il reste toujours un problème
d’authentification et de cryptage du point de vue sécurité. La version SNMPv3 a été conçue pour
résoudre les problèmes des deux premières versions et elle est reste compatible avec les anciennes
versions.
2.2.4 Usage
En utilisant SNMP, on peut récupérer des informations sur les équipements réseaux tels que
les routeurs, les imprimantes, les concentrateurs et également on peut récupérer des
informations sur les ordinateurs normaux. Les informations qui peuvent être récupérées en
utilisant SNMP sont nombreux. Avec SNMP on peut obtenir par exemple le System up time
(qui est le temps durant lequel la machine était disponible et fonctionnelle), le taux d’usage
des CPU et le taux d’usage des disques durs.
2.2.5 Modèle
Un système réseau qui utilise le protocole SNMP est constitué de trois éléments
fondamentaux qui sont :
a. Le MIB « Management Information Base » qui est une collection d'informations
structuré sur une entité réseau, par exemple un routeur, un commutateur ou un serveur.
Ainsi, on peut constater que le gestionnaire SNMP agit comme une interface entre le
gestionnaire humain du réseau et entre le nœud de réseau géré. De même, l'agent SNMP agit
comme une interface entre le gestionnaire SNMP et entre le nœud de réseau supervisé.
SUPERVISION SYSTEME ET APPLICATIVE (MONITORING) 10
Le protocole de réseau utilisé entre le gestionnai re SNMP et l’agent SNMP est sans doute
SNMP, mais il doit y avoir un autre protocole pour comprendre et composer les informations
demandées. Ces dernières peuvent être n’importe quoi comme l’usage des disques durs d’un
nœud du réseau où s'exécute un agent.
Donc, le point crucial est qu'il devrait y avoir une structure standard dans laquelle la requête
doit être formée par le gestionnaire SNMP et la requête doit être compris par l'agent SNMP.
Pour comprendre cette structure, on a besoin de comprendre l’élément de base du SNMP qui
est un objet. Toutes les informations qui peuvent être interrogées en utilisant SNMP sont vues
en termes d'un objet. Par exemple, « le System up time » est identifié par un objet qui
s’appelle ‘sysUpTime’. Chaque objet a un identifiant unique, le OID « Object Identifier ». Le
groupe d’OID forme le MIB qui est la base de la gestion des informations.
On peut remarquer dans la figure 2 que toutes les informations du protocole SNMP sont
structurées sous forme d’arbre. On peut remarquer que l’information associée à chaque nœud
individuel a un OID spécifique.
SNMP assure la communication entre le gestionnaire et l’agent via les messages suivants :-
SNMP GET
SNMP GET-NEXT
SNMP GET-RESPONSE
SNMP SET
SNMP TRAP
Le message TRAP est utilisé par l’agent pour envoyer une information à propos de certaines
valeurs alarmantes d’un objet de MIB au gestionnaire.
2.2.7 Avantages
2.2.8 Limites
SUPERVISION SYSTEME ET APPLICATIVE (MONITORING) 12
2.3 Syslog
Le protocole Syslog est composé de deux parties, une partie client qui émet les informations
sur le réseau en utilisant UDP et une partie serveur qui collecte les informations et crée les
journaux.
Le journal Syslog a 8 niveaux de gravité (security levels) représenté par un chiffre
Allant de 0 (Emergency) jusqu’à 7 (Debug).
Par exemple :
Sep 14 14:09:09 machine_de_test dhcp service[warning] 110 corps du message
3. Outils de supervision
Actuellement, pour la surveillance réseau, système et application, on peut trouver plusieurs
logiciels de monitoring et de supervision dans le marché. Ces logiciels sont classés en deux
catégories :
Des logiciels payants : NAGIOS XI, Hp OpenView, IBM Tivoli Monitoring, etc.
On présente ci-après un tableau montrant les spécificités des principaux outils de supervision
des réseaux [8] :
Auto Supervision
Tendance Alerte SNMP Syslog IPv6 Licence
découverte distribué
AccelOps X X X X X X X Commercial
Licence
Argus X X X X X X
Artistique
Avaya
X X X X X X X Commercial
VPFM
CA
X X X X X X X Commercial
Spectrum
Cacti X X X X X X X GPL
HP
X X X X X X X Commercial
OpenView
IBM
Tivoli
X X X X X X X Commercial
Network
Manager
IPHost
Network X X X X X X Commercial
monitor
Monitorix X X X X X GPL
Nagios X X X X X X X GPL
OpenNMS X X X X X X X GPLv3
Opsview X X X X X X X Commercial
Gratuit mais
op5
X X X X X X X limité,
Monitor
Commercial
PRTG
Freeware et
Network X X X X X X X
Commercial
Monitor
Zabbix X X X X X X X GPL
Zenoss X X X X X X X GPL
SUPERVISION SYSTEME ET APPLICATIVE (MONITORING) 14
Les deux parties qui suivent présentent en détail deux des principaux logiciels de supervision :
MRTG et Nagios.
Le Multi Router Traffic Grapher, ou tout simplement MRTG, est un logiciel libre pour la
supervision de trafic réseau. Il permet à l'utilisateur de voir le trafic réseau en temps réel sous
forme graphique.
MRTG est écrit en Perl et peut fonctionner sur Windows, Linux, Unix, Mac OS et NetWare.
MRTG est utilisé par OVH (hébergeur français de site web) pour offrir à ses clients de
serveurs dédiés la possibilité de suivre l’évolution du trafic généré par les sites hébergés sur
leurs serveurs dédiés [11].
3.2.1 Fonctionnement
MRTG utilise le Simple Network Management Protocol (SNMP) pour interroger des
équipements réseaux tels que des routeurs, commutateurs, ou serveurs disposant d'une MIB
(Management Information Base, base d'information pour la gestion du réseau).
MRTG enregistre toutes les réponses des équipements dans des fichiers logs.
À partir des fichiers logs, MRTG génère des fichiers HTML contenant des graphiques
décrivant le trafic pour chaque équipement réseaux.
15 SUPERVISION SYSTEME ET APPLICATIVE (MONITORING)
MRTG peut être configuré pour exécuter des scripts ou des commandes, et analyser leurs
réponses. Le site MRTG contient une grande bibliothèque de scripts externes afin de
permettre le suivi des statistiques de base de données SQL, les règles de pare-feu, température
du CPU…
3.2.2 Caractéristiques
Mesure le trafic entrant et le trafic sortant.
Les résultats sont obtenus par l'intermédiaire d'un agent SNMP, ou par le résultat d'une
ligne de commande.
Recueille généralement les données toutes les cinq minutes (il peut être configuré pour
collecter des données moins fréquemment).
Les résultats sont tracés en fonction du temps jour, semaine, mois et année.
Ajustement automatique des échelles des graphes pour un meilleur affichage.
Calcule la valeur moyenne et la valeur maximale.
Peut-être configuré pour envoyer des emails d'avertissement si certaines valeurs
dépassent un certain seuil.
3.2.3 Avantages
3.2.3 Inconvénients
SUPERVISION SYSTEME ET APPLICATIVE (MONITORING) 16
3.3 Nagios
3.3.1 Général
Anciennement appelé NetSaint, Nagios est actuellement un ensemble de produits classés dans
deux catégories : payant et open source.
Du côté payant, on trouve Nagios XI, le système de supervision dédié entreprise basé
sur Nagios Core, ainsi que plusieurs autres produits ou services comme Nagios
Fusion, Nagios Network Analyzer.
Du côté open source, on trouve Nagios Core (le noyau), Nagios Plugins (des plugins),
Nagios Frontends (l’interface web, Windows, Linux, des applications mobile) et
Nagios Configuration Tools (Outils et interfaces graphiques pour simplifier la
configuration de Nagios Core).
Nagios est écrit en C et utilise un serveur Web Apache. Il fonctionne sous Linux et Unix, mais
il y a également une version Windows nommé Nagwin.
Dans le marché des logiciels de supervision, il existe plusieurs logiciels basés sur Nagios
comme par exemple : Icinga, Centreon, Overmon, Shinken, Vigilo, Eyesofnetwork, etc.
D'ailleurs, Nagios propose plusieurs d'outils pour faciliter la configuration, par exemple :
Lilac, NagiosQl, NConf, OneCMDB, Ignomagus, etc.
3.3.2 Fonctionnalités
Surveillance des services réseaux : SMTP, POP3, HTTP, NNTP, PING, etc.
Surveillance des ressources des hôtes : charge du processeur, occupation des disques
durs, utilisation de la mémoire, etc.
Des plugins permettent de personnaliser facilement des vérifications de services.
La vérification des services peut être exécutée en parallèle.
Possibilité de définir la hiérarchie du réseau en utilisant des hôtes « parents », ce qui
permet la détection des hôtes qui sont à l’arrêt ou injoignables. Quand ces problèmes
sont résolus, des services et des personnes en contacts sont notifiés.
Nagios définie des gestionnaires d’événements pour une résolution proactive des
problèmes.
Il y a une rotation automatique des fichiers log, support pour l’implémentation de la
surveillance redondante des hôtes
Une interface web (optionnelle) offre une vision pour consulter différents événements
du réseau et du système, et permet de faciliter l’intégration de plugins
En cas de problème, des notifications sont envoyées par email ou par d'autres
méthodes personnalisées.
Des données sont collectées et archivées automatiquement.
Possibilité de planifier la période d’activité, des intervalles de vérification des objets
dans Nagios.
3.3.3 Supervision active et supervision passive
Figure 5
Les contrôles actifs sont initiés par le démon Nagios. Quand Nagios a besoin de vérifier le
statut d'un hôte ou un service, il exécute un plugin et transmet des informations sur ce qui doit
être vérifié. Le plugin va alors vérifier l'état de fonctionnement de l'hôte ou du service et
renvoie ses résultats au démon Nagios. Nagios traite les résultats de vérification de l'hôte ou
du service et prend les mesures appropriées si nécessaire.
Supervision passive
Les contrôles passifs sont initiées et réalisées par les applications / processus externes
SUPERVISION SYSTEME ET APPLICATIVE (MONITORING) 18
Les résultats des contrôles passifs sont soumis à Nagios pour le traitement
Les contrôles passifs sont utiles pour superviser des services qui sont:
Asynchrones et ne peuvent pas être monitorés efficacement par des activités planifiés
régulièrement
Situés derrière un pare-feu et ne peuvent pas être contrôlés depuis l'hôte de
surveillance
Figure 6
3.3.4 Architecture
Nagios est un programme modulaire qui s'adapte facilement aux besoins grâce à l’utilisation
de plugins. Nagios contient les parties principales suivantes :
Le noyau – Nagios Core : Un moteur léger qui offre les fonctionnalités essentielles de
supervision, avec une portée limitée mais possédant plusieurs API pour les étendre.
Ces fonctionnalités sont l'ordonnancement des contrôles, la vérification de l'exécution,
la vérification des traitements, la gestion des événements et des alertes. Effectuer des
vérifications, l'envoi de notifications, le traitement des données de performance, et de
nombreuses autres tâches sont généralement hors de portée pour Nagios Core et sont
manipulés essentiellement par des Plugins.
L'interface d’utilisateur – Nagios Frontends : À la base Nagios Core propose une
interface défaut de CGI. D'ailleurs, son interface d'utilisateur a été enrichie par
l’interface web, des thèmes, l’interface Windows et Linux et des applications mobiles.
Elle donne une vue d’ensemble du système d’information et des possibles anomalies.
Les plugins – Nagios Plugins: ce sont des extensions autonomes qui fournissent
énormément de fonctionnalités au noyau. Ils sont sous forme de scripts ou de
programmes exécutables que l’on peut compléter en fonction des besoins de chacun.
On connaît environ 3000 plugins de Nagios dont environ 50 sont officiels. Ces plugins
fonctionnent soit en local sur la machine supervisée, soit s'exécutent à distance en
utilisant des protocoles réseaux tels que HTTP, SMTP, SSH ou autres.
Figure 7
3.3.5 Plugins
La force principale de Nagios est sa grande modularité qui lui permet de s'adapter facilement
aux besoins des utilisateurs grâce aux plugins. Ils fonctionnent comme des applications
autonomes, mais sont généralement conçus pour être exécutés par Nagios base.
Des plugins sont des codes binaires (écrits et compilés en C, C++, etc.) ou des scripts shell
SUPERVISION SYSTEME ET APPLICATIVE (MONITORING) 20
exécutable (shell, Php, Perl, etc.). En personnalisant des plugins, il faut respecter des codes
retour qui sont dans la norme suivante :
0 OK (tout va bien)
1 WARNING (Alerte)
2 CRITICAL (Alerte critique)
3 UNKNOWN (impossible de connaître l'état du service)
En plus, un plugin peut fournir d'autres informations (sous la forme d'une chaîne de
caractères) qui seront affichées à côté du statut de la machine.
L'avantage des plugins est que l'utilisateur peut les créer lui-même en fonction des besoins
pour étendre des fonctionnalités du noyau. Ces plugins permettent de contrôler à peu près tout
ce qu'on peut penser. Si on peut automatiser le processus de vérification de quelque chose, on
peut le contrôler avec Nagios. Il y a déjà beaucoup de plugins qui ont été créés afin de
surveiller les ressources de base tels que la charge du processeur, l'utilisation du disque, le
taux de ping, etc.
L'inconvénient des plugins est le fait que Nagios n'a absolument aucune idée de ce qui est
monitoré. Ce sont peut-être des statistiques du réseau de circulation, les taux d'erreurs de
données, tempérées ambiante, la tension du CPU, la vitesse du ventilateur, la charge du
processeur, espace disque, etc. Nagios ne comprend pas les détails de ce qui est surveillé - il
suit juste les changements dans l'état de ces ressources. Seuls les plugins eux-mêmes savent
exactement ce qu'ils monitorent et comment effectuer des vérifications.
Exemple de plugins :
Les plugins actifs comme NRPE (Nagios Remote Plugin Executor) : On peut
choisir parmi un certain nombre de services disponibles pour répondre à la demande
de Plugins à distance. C'est ce qu'on appelle la supervision active . Des services sont :
monitorer l’utilisation de disque dur, le load average, la vérification des services http,
ftp.
Les plugins passifs comme NSCA (Nagios Service Check Acceptor), NRDP
(Nagios Remote Data Processor) : ces plugins sont utiles pour monitorer des services
et des hôtes qui sont derrière des firewall. Des informations sont remontées de façon
passive vue du point de vue de Nagios.
NSClient++ : qui est un plugin lourd pour la supervision des serveurs Windows
NT/2K/XP.
Check_SNMP : pour la supervision basée sur SNMP à travers le réseau.
4. Conclusion
Dans le cadre de la gestion de nombreux serveurs et services associés, les outils de monitoring
apportent une très grande plus-value
Ainsi, les outils de supervision sont actuellement devenus très accessibles, et permettent ainsi
au plus grand nombre de personnes de profiter de ses avantages pour gérer ses serveurs et ses
applications.
SUPERVISION SYSTEME ET APPLICATIVE (MONITORING) 22
[3] Don Jones, “The Five Essential Elements of Application Performance Monitoring”,
http://www.realtimepublishers.com/feeapm.php
[12] “Nagios”, http://nagios.sourceforge.net
[14] “Supervision”, http://www.memoireonline.com
[15] “Nagios”, http://www.nagios.com