Nagios

Présentation

 * Enseignants : Georges-Pierre Bonneau, Didier Donsez (EA2013)
 * Auteur : Bianco Jean-Francois 
 * 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

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". 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.
 * 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.

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

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 : 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

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 permet de vérifier l'espace disque disponible sur l'hôte : 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
 * 1) !/bin/bash

Démonstration
thumb|center|upright=6|alt=Screenshot Demo Nagios |Capture démonstration nagios Une démonstration de Nagios est disponible sur le site du projet : Démonstration

Liens

 * Protocole SNMP :
 * Principe du protocole SNMP
 * Simple Network Management
 * Nagios :
 * Site projet Nagios
 * Documentation Nagios Core
 * Cours Outils de supervision Erwan Ben Souiden - Université Paris XVIII
 * Les outils d’administration et de supervision réseau Thierry Briche, Matthieu Voland - Université de Pau