Nagios
Description
Fonctionnalités générales
- Nagios est un système de surveillance de services réseau (SMTP, HTTP…) et de ressources système (CPU, espace disque…).
- Plus précisément, dans la terminologie Nagios, il s'agit de monitorer des services et des hosts, chaque service étant affecté à un host ou à un groupe de hosts. A un instant "t", un host se trouve dans un état down, unreachable ou ok, et un service dans un état critical, warning, unknown ou ok.
- Conceptuellement, Nagios est un moteur :
- d’acquisition d’états de hosts et de services (checks),
- de déclenchement conditionnel d’actions préventives et curatives (handlers), et
- de déclenchement conditionnel de notifications.
- Ces acquisitions, actions et notifications sont assurées par des plugins.
- L'outil s'adresse aussi bien à de petites infrastructures (une dizaine de service) qu'à des architectures conséquentes (plusieurs milliers de serveurs repartis sur plusieurs sites) pour lesquelles il propose un modèle de supervision distribuée.
- Nagios offre une interface web qui permet de visualiser l'état des services et des hosts que l'on veut surveiller (tableau de bord). Cette interface web permet également l'administration (très partielle) du monitoring.
Autres fonctionnalités
- Le déclenchement d'une acquisition d'état est normalement à l'initiative de Nagios : cela s'appelle un active check. Mais Nagios est aussi à l'écoute pour recevoir des états de services/hosts de toute provenance (déclenchés par exemple par cron jobs) : ce sont les passive checks.
- L'envoi d'alertes, hautement paramétrable, peut se faire par mail, par SMS, etc. Une personnalisation est possible par host, par service, par état, par destinataire (contact), suivant le jour de la semaine, suivant l'heure de la journée, etc. Les alertes peuvent être réémises périodiquement, et peuvent s'escalader : par exemple, on peut faire en sorte que le weekend, l'équipe d'astreinte reçoive les alarmes en premier, et qu'en cas de problèmes persistants, toute l'équipe d'exploitation soit automatiquement avertie.
- Lorsqu'un problème est décelé, le host ou le service passe d'abord dans un état de type soft : il est en alarme dans le tableau de bord, mais les alertes ne sont pas encore envoyées et il est possible de tenter de le résoudre en exécutant un handler (par exemple en effaçant les fichiers temporaires sur une partition pleine). Après plusieurs checks et tentatives de résolution infructueux (dont le nombre est paramétrable par service/host), l'état passe dans le type hard, et les alertes sont envoyées.
- Il est possible de programmer des périodes de maintenance (scheduled downtime) pour un host donné. Pendant ces périodes, l'envoi d'alarmes relatives à ce hosts est suspendu.
Interopérabilité
- Les plugins sont des programmes autonomes, développés et distribués indépendamment du moteur Nagios. Une distribution de plusieurs dizaines de plugins, sous forme de petits programmes C, scripts shell et Perl, est téléchargeable sur le site officiel.
- La description de l’infrastructure à monitorer (hosts, services, etc.) et du contexte (contacts, commandes, périodes, etc.) est exprimée dans un formalisme objet (avec notion d'héritage), sous forme de fichiers textes.
- Il existe nombre d'outils permettant de générer cette base de données d'objets (notamment via une interface web).
- Les états courants des hosts/services sont mémorisés dans des fichiers textes et exprimés dans un formalisme objet.
- Les informations collectées sont archivées dans des logs au format texte. L’addon NDOutils, téléchargeable sur le site officiel, permet de stocker ces informations dans une base MySQL.
- D'autres addons sont téléchargeables sur le site officiel, les deux plus connus étant NRPE et NSCA, qui permettent de faire du client/serveur entre Nagios et ses plugins.
Contexte d'utilisation dans mon laboratoire/service
Nagios monitore les ressources informatiques et réseau de la plateforme en ligne pour les mathématiques (PLM) http://plm.math.cnrs.fr/, du LAL http://www.lal.in2p3.fr , du LAPP http://www.lapp.in2p3.fr , etc. LCG utilise Nagios : http://www.gridpp.ac.uk/wiki/Nagios_Plugins
Limitations, difficultés, fonctionnalités importantes non couvertes
-
Nagios ne garde pas d’historique des changements d’état (mis à part dans ses logs). Son interfaçage, directe ou indirecte, avec un outil comme RRDtool peut, de ce point de vue, se révéler judicieux, pour créer des graphes représentant l'évolution des valeurs d'acquisition au cours du temps.
-
L'inverse est également possible : utiliser un outil grapheur capable d'envoyer des informations à Nagios. Cette fonctionnalité est présente par exemple dans l'outil Munin.