Difference between revisions of "Nagios"

From air
Jump to navigation Jump to search
Line 7: Line 7:
 
== 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.<br/> 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 used 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 plugin, 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/>
Line 19: Line 27:
 
* Exécution de script et méthode à distance
 
* Exécution de script et méthode à distance
 
* Utilisation du protocole SNMP (Simple Network Management Protocol)<br/>
 
* Utilisation du protocole SNMP (Simple Network Management Protocol)<br/>
 
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.
 
Il offre un système de plugin, permettant à l'utilisateur de configurer et d'adapter Nagios à ses besoins.
 
 
=== Mots-clés ===
 
Supervision, Analyse, Prévention, Alerte, Réseau, Administration
 
 
== Synthèse ==
 
 
=== Supervision===
 
   
 
==== 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éseau. <br/> Il s'agît d'un protocole non connecté, qui 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/>
+
SNMP est un protocole réseau permettant l’administration, le contrôle et la supervision de la majorité des équipements réseau. <br/> Il s'agît d'un protocole non connecté. <br/>Il 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/>
   
 
[[File:Snmp_Agent_Schema.png‎|thumb|center|upright=6|alt=Schéma Réseau utilisant SNMP|Schéma Réseau utilisant SNMP]]
 
[[File:Snmp_Agent_Schema.png‎|thumb|center|upright=6|alt=Schéma Réseau utilisant SNMP|Schéma Réseau utilisant SNMP]]
Line 42: Line 40:
 
*La première va permettre de demander à l'agent une information de la base MIB.
 
*La première va permettre 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/>
 
*La seconde permet de demander un ensemble d'information présent dans la MIB. <br/>
Le second type de requêtes est une requête d'édition, ou 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, s'il 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/>
+
Le second type de requête est une requête d'édition, ou 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, s'il 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 un get response.
 
L'agent SNMP va répondre à ces requêtes par un 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 particulier, comme par exemple un disque dur en panne sur un serveur de stockage ou un grand nombre de requête sur un firewall.
+
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 particulier, 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 version de SNMP, la version 3 apportant de réelles améliorations au niveau de la sécurité du protocole.
+
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é afin d’être facilement lisible et modifiable par les manager SNMP.<br/> La structure générale d’une MIB est la suivante : <br/>
+
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]]
 
[[File:Mib_schema.png‎‎|thumb|center|upright=6|alt=Schéma MIB SNMP|Schéma de la base MIB utilisée par SNMP]]
   
 
<br/>
 
<br/>
Pour réaliser une demande, on utilise les identifiants universel, les OIDs (Object Identifier), definit par l’International Telecommunication Union(ITF). Un OID est composé d'une suite d'entier, chacun représentant un noeud. Pour consulter une valeur, on se déplace dans la base à l'aide des différents identifiant de noeuds. <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 standard de l'IETF <ref> Base MIB de l'IETF [http://www.simpleweb.org/ietf/mibs/]</ref>
+
Pour réaliser une demande, on utilise les identifiants universel, les OIDs (Object Identifier), definit par l’International Telecommunication Union(IETF RFC 2256). Un OID est composé d'une suite d'entier, chacun représentant un noeud. Pour consulter une valeur, on se déplace dans la base à l'aide des différents identifiants de noeuds. <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éfinit 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 ====
 
==== Principe ====
Line 71: Line 72:
 
L'ordonnanceur va trier les commandes à exécuter en fonction de leurs priorité. En fonction du résultat, on va pouvoir effectuer des traitements complémentaires, qui peuvent être une autre commande ou une notification à un autre plugin.
 
L'ordonnanceur va trier les commandes à exécuter en fonction de leurs priorité. En fonction du résultat, on va pouvoir effectuer des traitements complémentaires, qui peuvent être une autre commande ou une notification à un autre plugin.
 
Les plugins Nagios sont des programmes exécutables écrit dans différents languages(C,Shell,Perl...) qui vont retourner une valeur, qui sera interprété par Nagios core.<br/> Ces valeurs sont les suivantes :
 
Les plugins Nagios sont des programmes exécutables écrit dans différents languages(C,Shell,Perl...) qui vont retourner une valeur, qui sera interprété par Nagios core.<br/> Ces valeurs sont les suivantes :
  +
<br/>
 
 
{| border="1" cellpadding="20" cellspacing="0"
 
{| border="1" cellpadding="20" cellspacing="0"
 
!Valeur
 
!Valeur
Line 89: Line 90:
 
|-
 
|-
 
|}
 
|}
  +
<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.
 
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 ou l'on délègue 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>
+
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 ou l'on délègue 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]]
 
[[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 interroge l'ensemble des hôtes distant 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ésentent 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.
+
Dans cette version, Nagios est exécuté sur une seule machine, et les plugins interrogent l'ensemble des hôtes distant 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ésentent 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 ====

Revision as of 18:28, 17 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 used 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 plugin, 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 »)
  • Exécution de script et méthode à distance
  • 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éseau.
Il s'agît d'un protocole non connecté.
Il 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. Ces requêtes sont "get-request" et "get-next-request".

  • La première va permettre 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, ou 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, s'il 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 un 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 particulier, 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 universel, les OIDs (Object Identifier), definit par l’International Telecommunication Union(IETF RFC 2256). Un OID est composé d'une suite d'entier, chacun représentant un noeud. Pour consulter une valeur, on se déplace dans la base à l'aide des différents identifiants de noeuds.
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éfinit 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 leurs priorité. En fonction du résultat, on va pouvoir effectuer des traitements complémentaires, qui peuvent être une autre commande ou une notification à un autre plugin. Les plugins Nagios sont des programmes exécutables écrit dans différents languages(C,Shell,Perl...) qui vont retourner une valeur, qui sera interprété 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 ou l'on délègue 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 distant 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ésentent 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 avait exécuter le plugin.
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 ou 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 />