Nagios : supervision de services réseau et de ressources système

Fiche PLUME
Statut de la fiche : Logiciel : En MAJ
  • Création ou MAJ importante : 24/04/2008
  • Correction mineure : 30/10/2008
Auteur :
  • Jacquelin Charbonnel - LAREMA (CNRS, Université d'Angers )
Contact pour cette fiche :
Responsable thématique :
Mots clés
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 de surveillance des services/hosts monitorés (tableau de bord), qui permet également l’administration partielle du serveur.
Autres fonctionnalités: 
  • Le déclenchement des acquisitions peut être à l’initiative de Nagios (active checks) ou indépendent (passive checks, déclenchés par exemple par cron jobs).
  • 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, tous les ASR soient automatiquement avertis.
  • 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.
Interopérabilité: 
  • Les plugins sont des programmes autonomes, développés et distribués indépendamment du moteur. 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: 

Nagios monitore les ressources informatiques et réseau du LAREMA http://math.univ-angers.fr, de la plateforme en ligne de Mathrice http://www.mathrice.org, du LAL http://www.lal.in2p3.fr , du LAPP http://www.lapp.in2p3.fr , etc. LCG utilise Nagios : https://twiki.cern.ch/twiki/bin/view/LCG/GridMonit...

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

Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré: 

DragonFly BSD, NetBSD, OpenBSD et certaines distributions Linux (Debian, Fedora, Gentoo, Mandriva, PLD, Skolelinux, Suse, Ubuntu).

Plates-formes : 
  • Nagios, ses plugins et addons officiels tournent sur plate-forme UNIX. Ils sont téléchargeables sous forme de tarballs et RPM.
  • Il existe des contributions de plugins/addons pour surveiller des services sur Windows.
Logiciels connexes: 
  • Nagios Checker est une extensions de Firefox/Thunderbird qui, en récupérant périodiquement par HTTP/HTTPS la page web des états d’un ou plusieurs serveurs Nagios, affiche les alertes en cours sur ces serveurs : résumé dans la barre d’état, popup reprenant l’état des hosts/services en alertes, alertes sonores.
  • Nagios Tray est un outil similaire de surveillance d’alertes Nagios, tournant sur Windows, qui affiche un popup lorsqu’une nouvelle alerte apparait sur un serveur Nagios
  • RRDtool, http://www.rrdtool.org, une fiche PLUME existe
  • Cacti, http://www.cacti.net, un frontend pour RRDTool
Autres logiciels aux fonctionnalités équivalentes: 
Environnement de développement
Type de structure associée au développement: 

Le moteur est développé par Ethan Galstad.
Le développement des plugins est collaboratif.

Eléments de pérennité: 
Références d'utilisateurs institutionnels: 

1436 sites se sont déclarés utilisateurs de Nagios au 2008/04/22, sur http://nagios.org/userprofiles. On peut y lire par exemple que Tulip It Services Corp monitore 100 000 hosts (1 000 000 de services) avec Nagios, et que Yahoo Inc monitore 200 000 services répartis sur 100 000 hosts.

Environnement utilisateur
Liste de diffusion ou de discussion, support et forums: 
Documentation utilisateur: 

Toute la documentation est disponible sur le site http://www.nagios.org/docs en particulier :

  • une documentation en anglais (format HTML et PDF). La version HTML est installée avec l’application et intégrée à l’interface web de l’application,
  • une documentation en français (de Christian Vanguers and Pierre-Antoine Angelini) pour la version 1,
  • une documentation en français pour les versions 2.x http://nagios.manubulon.com/traduction,
  • des documentations en allemand et japonais.

De l’information additionnelle, rédigée collaborativement, est également disponible sur http://www.nagioscommunity.org/wiki

Divers (astuces, actualités, sécurité): 
  • Il est extrêmement facile de développer ses propres plugins : l’interface entre Nagios et ses plugins est très simple, et ces derniers peuvent être développés en n’importe quel langage, et pour n’importe quelle plate-forme.
  • Nagios accorde une attention particulière à la pertinence de l’envoi d’alertes, ce qui est crucial pour éviter un flot d’alarme ingérable en situation de crise. Par exemple :
    • lorsqu’un host tombe, une seule alerte est envoyée (Nagios considère inutile d’alerter pour chacun des services d’un host qui ne répond plus)
    • lorsqu’un host/service oscille, c’est-à-dire change d’état trop rapidement, Nagios envoie une alerte indiquant que le host/service bagote (flaps), puis suspend l’envoi d’alarme pour ce host/service jusqu’à ce que la situation se calme.
    • on peut de surcroît limiter l’envoi d’alertes en définissant des dépendances entre les hosts/services : par exemple, on peut spécifier que le virtual host HTTP X dépend du service Apache. Dans ce cas, si Apache est en alarme, aucune alerte n’est envoyée pour X.
  • Pour peu qu’on ait pris le soin de renseigner pour chaque host son ou ses hosts parents (au sens de la topologie du réseau), Nagios est capable :
    • de générer une carte des hosts du réseau, avec états et liens entre eux,
    • de différencier un host down d’un host unreachable : un host est unreachable si typiquement il ne répond pas au ping et si sur chaque chemin entre lui et le serveur Nagios il existe un host down (autrement dit, il est inaccessible par Nagios, mais fonctionne peut-être normalement).
Contributions: 

Il existe une communauté de développeurs de plugins/addons et un repository centralisé des contributions : http://www.nagiosexchange.org