Nagios
Présentation
- Enseignants : Georges-Pierre Bonneau, Didier Donsez (EA2013)
- Auteur : Bianco Jean-Francois <Jean-Francois.Bianco@e.ujf-grenoble.fr>
- Télécharger : Présentation
Abstract
Supervision is the ability to check a network status of different network devices, hosts and services. The supervision lets you know the state of the system in real time and react to problems in the network. Nagios is an open source monitoring tool, to monitor all computer network component devices (Server, Router, Switch ...). Nagios uses the SNMP protocol and provides a plugin system, allowing the user to configure and adapt Nagios needs.
Keywords
supervision,monitoring,SNMP,Nagios
Résumé
La supervision est le fait de pouvoir vérifier l’état d’un système d’information comprenant différents équipements réseaux, hôtes et services. La supervision permet ainsi de connaître l’état du système en temps réel, de prévenir et réagir aux problèmes pouvant impacter celui-ci. Nagios est un outil de supervision open source, permettant de surveiller l’ensemble des périphériques composant un réseau informatique (Serveur, Routeur, Switch…) et utilisant le protocole SNMP. Il offre un système de plugins, permettant à l'utilisateur de configurer et d'adapter Nagios à ses besoins.
Mots-clés
Supervision, Analyse, Prévention, Alerte, Réseau, Administration, Nagios
Synthèse
Supervision
La supervision est une méthode qui permet d’avoir une vue d’ensemble d’une plateforme informatique. Celle-ci offre la possibilité d’analyser son fonctionnement ainsi que de prévenir et de réagir aux problèmes pouvant atteindre le système.
Pour cela, il existe trois méthodes de supervision :
- L’analyse des logs (avec des outils tels que « Analog » ou « pflogsumm »)
- L'exécution de script et méthode à distance
- L'utilisation du protocole SNMP (Simple Network Management Protocol)
SNMP (Simple Network Management Protocol)
SNMP est un protocole réseau permettant l’administration, le contrôle et la supervision de la majorité des équipements réseaux.
Il s'agît d'un protocole non connecté.
Ce dernier repose sur un principe de « client-serveur », le serveur étant le manager SNMP, et le client étant l’agent SNMP, comme le montre le schéma suivant :
Le manager va permettre d'interroger les agents SNMP afin d'obtenir des informations sur leur état. Pour cela, le manager va pouvoir exécuter deux types de requêtes.
Le premier correspond à des requêtes d'interrogation : "get-request" et "get-next-request".
- La première donne la possibilité de demander à l'agent une information de la base MIB.
- La seconde permet de demander un ensemble d'information présent dans la MIB.
Le second type de requête est une requête d'édition, grâce à laquelle le manager va pouvoir mettre à jour des informations présentes sur l'agent SNMP (set-request). En effet, le protocole SNMP ne permet pas d'exécuter une commande, mais uniquement de modifier des informations présentes sur l'agent. Ainsi, si l'on souhaite effectuer une commande sur un agent, on modifie une variable dans la base MIB de celui-ci. Ce changement de variable sera détecté par l'agent, qui effectuera l'action liée au changement de la variable.
L'agent SNMP va répondre à ces requêtes par une get response.
Le protocole possède un dernier type de requête, utilisé par les agents SNMP. Cette requête, dite "trap", consiste à envoyer une alerte au manager SNMP en cas de défaillance détectée par l'agent SNMP. Le manager va recevoir cette requête, et pouvoir la traiter en fonction de sa configuration. Pour que cette requête soit efficace, les messages "trap" doivent être limités aux cas particuliers, comme par exemple un disque dur en panne sur un serveur de stockage ou un grand nombre de requêtes sur un firewall.
Il existe 3 versions de SNMP, la version 3 apportant de réelles améliorations au niveau de la sécurité du protocole.
MIB (Management Information Base)
Les agents SNMP stockent les informations dans une base de données normalisée, MIB (Management Information base). Celle-ci est hiérarchisée afin d’être facilement lisible et modifiable par les managers SNMP.
La structure générale d’une MIB est la suivante :
Pour réaliser une demande, on utilise les identifiants universels, les OIDs (Object Identifier), definis par l’International Telecommunication Union(IETF RFC 2256). Un OID est composé d'une suite d'entiers, chacun représentant un noeud. Pour consulter une valeur, on se déplace dans la base à l'aide des différents identifiants de noeud.
Par exemple, si l’on souhaite connaître la valeur de l’état ADSL sur un modem, il suffit d’interroger celui-ci avec l’OID suivant 1.3.6.1.2.1.10.94.1 (iso.org.dod.internet.mgmt.mib2.transmission.adslMIB.adslLineMib).
L'ensemble de la base MIB respecte le standard MIB 2 (RFC 1213) de l'IETF, défini en 1991 <ref> Base MIB de l'IETF [1]</ref>
Nagios
Historique
L'outil de supervision Nagios est basé sur le logiciel NetSaint (1999), un logiciel de supervision système réalisant la supervision des hôtes et des services, mais ne réalisant pas d'analyse réseau. En 2002, NetSaint devient Nagios.
La première version de Nagios core est sortie en novembre 2002. Trois nouvelles versions ont été réalisées : 2.0 en 2006, 3.0 en 2008 et enfin 4.0 en 2013.
Principe
Nagios est basé sur un système de plugins, qui utilise un ordonnanceur de commandes fourni par Nagios Core.
Ainsi, Nagios n'est un outil de supervision que lorsqu'on l'utilise avec des plugins adaptés. Ces plugins vont utiliser le noyau de Nagios en lui transmettant différentes commandes :
L'ordonnanceur va trier les commandes à exécuter en fonction de leur priorité. Selon le résultat, on va pouvoir effectuer des traitements complémentaires, pouvant être une autre commande ou une notification à un autre plugin.
Les plugins Nagios sont des programmes exécutables écris dans différents languages(C,Shell,Perl...) qui vont retourner une valeur, qui sera interprétée par Nagios core.
Ces valeurs sont les suivantes :
Valeur | Statut |
---|---|
0 | OK |
1 | Warning |
2 | Critical |
3 | Unknown |
En plus de cette valeur de retour, le plugin doit afficher sur la sortie standard un message texte correspondant à la signification de la valeur de retour (80 caractères maximum), qui sera utilisé lorsque Nagios notifiera le résultat du plugin.
Nagios peut être utilisé de façon centralisé (un manager et tous les plugins sur le même hôte), ou de façon décentralisée, via un plugin particulier (NRPE), qui va communiquer avec les machines auxquelles est déléguée l'exécution des plugins. Il existe des plugins mis à disposition des utilisateurs sur le site du projet <ref>Plugins mis à disposition [2]</ref>
Version Centralisée
Dans cette version, Nagios est exécuté sur une seule machine, et les plugins interrogent l'ensemble des hôtes distants dans le réseau.
L'avantage de cette version est qu'elle est simple à mettre en oeuvre. Il suffit d'activer le protocole SNMP sur ses équipements réseaux, et de configurer la surveillance via les plugins fournis par l'installation de base (dont une interface Web). Les inconvénients sont que l'on se limite au contenu des MIBs présent dans les équipements, et que le protocole SNMP possède une faible sécurité réseau. Cette utilisation est donc conseillée uniquement pour les réseaux locaux.
Version Décentralisée
Dans cette version, Nagios est exécuté sur une machine, mais délègue l'exécution des plugins sur des machines distantes, via le plugin NRPE. La machine distante va mettre en oeuvre le plugin, et communiquer le résultat au serveur Nagios via le plugin NRPE. Ce plugin utilise SSL pour crypter les échanges, afin qu'ils soient entièrement sécurisés. Le serveur va interpréter le résultat comme ci c'était lui qui l'avait exécuté.
L'avantage de ce système est de pouvoir exécuter les plugins sur différentes machines, ce qui rend possible la supervision sur plusieurs sites, la communication entre le serveur Nagios et l'hôte distant étant sécurisée. L’inconvénient est que ce système demande plus de ressources, et que le plugin NRPE soit adapté aux machines sur lesquelles il est exécuté.
Exemple plugin
Ce plugin <ref>Plugin exemple [3]</ref> permet de vérifier l'espace disque disponible sur l'hôte :
#!/bin/bash used_space=`df -h / | grep -v Filesystem | awk '{print $5}' | sed 's/%//g'` case $used_space in [1-84]*) echo "OK - $used_space% of disk space used." exit 0 ;; [85]*) echo "WARNING - $used_space% of disk space used." exit 1 ;; [86-100]*) echo "CRITICAL - $used_space% of disk space used." exit 2 ;; *) echo "UNKNOWN - $used_space% of disk space used." exit 3 ;; esac
Démonstration
Une démonstration de Nagios est disponible sur le site du projet : Démonstration
Annexes
Liens
- Protocole SNMP :
- Nagios :
Références
<references />