Difference between revisions of "Nagios"

From air
Jump to navigation Jump to search
 
(13 intermediate revisions by the same user not shown)
Line 3: Line 3:
 
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2013]])
 
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2013]])
 
* Auteur : Bianco Jean-Francois <Jean-Francois.Bianco@e.ujf-grenoble.fr>
 
* Auteur : Bianco Jean-Francois <Jean-Francois.Bianco@e.ujf-grenoble.fr>
  +
* Télécharger : [http://air.imag.fr/images/e/e2/Outils_de_supervision_Nagios_BIANCO.pdf Présentation]
* Télécharger :
 
   
 
== Abstract ==
 
== Abstract ==
   
The supervision is to monitoring a IT system. It can prevent and detect the problems in real time, and give alert if necessary. Nagios is an open source monitoring system. It offers monitoring and control for Server,Router,Switch and all devices using Simple Monitor Network Protocol (SNMP).
+
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 ===
 
=== Keywords ===
supervision,monitoring,SNMP
+
supervision,monitoring,SNMP,Nagios
 
 
 
== Résumé ==
 
== 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.
 
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.
 
<br/>
 
<br/>
 
Pour cela, il existe trois méthodes de supervision :
 
Pour cela, il existe trois méthodes de supervision :
 
* L’analyse des logs (avec des outils tels que « Analog » ou « pflogsumm »)
 
* L’analyse des logs (avec des outils tels que « Analog » ou « pflogsumm »)
* Exécution de script et méthode à distance
+
* L'exécution de script et méthode à distance
* Utilisation du protocole SNMP (Simple Network Management Protocol)<br/>
+
* L'utilisation du protocole SNMP (Simple Network Management Protocol)<br/>
   
  +
==== SNMP (Simple Network Management Protocol) ====
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…) utilisant le protocole SNMP.
 
  +
SNMP est un protocole réseau permettant l’administration, le contrôle et la supervision de la majorité des équipements réseaux. <br/> Il s'agît d'un protocole non connecté. <br/>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 : <br/>
Il offre un système de plugin, permettant à l'utilisateur de configurer et d'adapter Nagios à ses besoins.
 
   
  +
[[File:Snmp_Agent_Schema.png‎|thumb|center|upright=6|alt=Schéma Réseau utilisant SNMP|Schéma Réseau utilisant SNMP]]
=== Mots-clés ===
 
Supervision, Analyse, Prévention, Alerte, Réseau, Administration
 
 
== Synthèse ==
 
   
=== Protocole SNMP ===
 
 
==== SNMP (Simple Network Management Protocol) ====
 
   
  +
  +
<br/>
  +
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. <br/>
  +
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. <br/>
  +
  +
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) ====
 
==== 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.<br/> La structure générale d’une MIB est la suivante : <br/>
  +
  +
[[File:Mib_schema.png‎‎|thumb|center|upright=6|alt=Schéma MIB SNMP|Schéma de la base MIB utilisée par SNMP]]
  +
  +
<br/>
  +
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. <br/> 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).<br/>
  +
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 [http://www.simpleweb.org/ietf/mibs/]</ref>
   
 
=== Nagios ===
 
=== Nagios ===
  +
[[File:Nagios_logo.png‎‎|thumb|right|upright=6|alt=Nagios_logo|Logo du projet Nagios]]
 
==== Historique ====
 
==== 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. <br/>
 
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. <br/>
La première version de Nagios core est sortie en novembre 2002. Trois nouvelles ont été réalisées : 2.0 en 2006, 3.0 en 2008 et enfin 4.0 en 2013.
+
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. <br/>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 :
  +
  +
[[File:Coeur_nagios.png|thumb|center|upright=6|alt=Schéma Nagios Core|Schéma fonctionnement Nagios Core‎‎]]
  +
  +
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.<br/> Ces valeurs sont les suivantes :
  +
<br/>
  +
{| border="1" cellpadding="20" cellspacing="0"
  +
!Valeur
  +
!Statut
  +
|-
  +
|0
  +
|OK
  +
|-
  +
|1
  +
|Warning
  +
|-
  +
|2
  +
|Critical
  +
|-
  +
|3
  +
|Unknown
  +
|-
  +
|}
  +
<br/>
  +
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 [http://www.nagios.org/download/plugins]</ref>
 
==== Version Centralisée ====
 
==== Version Centralisée ====
  +
[[File:Nagios_centralise.png|thumb|center|upright=6|alt=Schéma Nagios Centralisé|Schéma utilisation nagios sur un hôte]]
 
  +
  +
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. <br/>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 ====
 
==== Version Décentralisée ====
  +
[[File:Nagios_decentralise.png|thumb|center|upright=6|alt=Schéma Nagios Décentralisé|Schéma utilisation nagios avec plugin NRPE]]
 
   
  +
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é. <br/>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é.
   
=== Démonstration ===
+
==== Exemple plugin ====
  +
Ce plugin <ref>Plugin exemple [https://www.digitalocean.com/community/articles/how-to-create-nagios-plugins-with-bash-on-ubuntu-12-10]</ref> permet de vérifier l'espace disque disponible sur l'hôte :
  +
<pre>
  +
#!/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
  +
</pre>
   
  +
==== Démonstration ====
  +
[[File : Demo nagios.png|thumb|center|upright=6|alt=Screenshot Demo Nagios |Capture démonstration nagios ]]
  +
<br/>Une démonstration de Nagios est disponible sur le site du projet : [http://nagiosxi.demos.nagios.com/ Démonstration]
   
   
Line 54: Line 137:
   
 
=== Liens ===
 
=== Liens ===
  +
*Protocole SNMP :
  +
**[http://irp.nain-t.net/doku.php/215snmp:10_le_principe Principe du protocole SNMP]
  +
**[http://en.wikipedia.org/wiki/Simple_Network_Management_Protocol Simple Network Management]
  +
*Nagios :
  +
**[http://www.nagios.org/ Site projet Nagios] <br/>
  +
**[http://nagios.sourceforge.net/docs/nagioscore-3-en.pdf Documentation Nagios Core]
  +
**[http://fr.slideshare.net/labynocle/cours-supervision-sysres-et-prsentation-de-nagios Cours Outils de supervision Erwan Ben Souiden - Université Paris XVIII] <br/>
  +
**[http://web.univ-pau.fr/~cpham/M2SIR/BIBLIO/DOC04-05/Nagios.pdf Les outils d’administration et de supervision réseau Thierry Briche, Matthieu Voland - Université de Pau] <br/>
  +
   
   

Latest revision as of 10:28, 18 November 2013

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 :

Schéma Réseau utilisant SNMP
Schéma Réseau utilisant SNMP



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 :

Schéma MIB SNMP
Schéma de la base MIB utilisée par SNMP


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

Nagios_logo
Logo du projet 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 :

Schéma Nagios Core
Schéma fonctionnement Nagios Core‎‎

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

Schéma Nagios Centralisé
Schéma utilisation nagios sur un hôte

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

Schéma Nagios Décentralisé
Schéma utilisation nagios avec plugin NRPE

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

Screenshot Demo Nagios
Capture démonstration nagios


Une démonstration de Nagios est disponible sur le site du projet : Démonstration


Annexes

Liens


Références

<references />