Les Nagios plugins : un standard de sonde partagé par Nagios, Icinga et Centreon

Une sonde Nagios n'est qu'un petit programme qui renvoie un code et une ligne de texte. Ce contrat minimal explique pourquoi les mêmes plugins tournent encore dans des outils très différents.

Nagios, anciennement Netsaint, est un logiciel libre de supervision (monitoring) sous licence GPL. Wikipédia le décrit en trois parties : un moteur qui ordonnance les contrôles, une interface web, et des sondes, appelées greffons ou plugins. Ce sont ces plugins qui ont survécu à l'outil : leur interface est devenue un standard, repris par Icinga, Naemon, Shinken, Sensu et Centreon.

Cette page explique ce contrat, où trouver les plugins aujourd'hui, et comment Centreon les exécute. Pour la vue d'ensemble côté Centreon, voyez la page sur la supervision avec Centreon.

Monitoring Plugins ou Nagios Plugins : deux projets

Il existe aujourd'hui deux distributions de plugins « standard », ce qui trouble souvent les recherches.

ProjetQui le maintientSite
Monitoring Pluginsl'équipe de bénévoles qui maintenait historiquement les Nagios Pluginswww.monitoring-plugins.org
Nagios PluginsNagios Enterprises, qui contrôle le domainenagios-plugins.org

Selon la FAQ du projet Monitoring Plugins, l'équipe a transféré le domaine nagios-plugins.org à Nagios Enterprises en 2011, puis l'entreprise a fait pointer le domaine vers son propre site début 2014. L'équipe a continué le même projet sous le nouveau nom. Son paquet regroupe plus de cinquante plugins standard, chacun étant un outil en ligne de commande autonome, et la version stable affichée sur son site est la 3.0.3.

Pour l'installation, la même FAQ recommande fortement les paquets binaires de votre distribution plutôt que la compilation des sources, réservée aux mainteneurs de paquets et aux tests.

Le contrat d'un plugin

Les lignes directrices de développement fixent trois règles que tout moteur compatible attend.

Le code retour donne le statut

CodeStatutSignification selon les lignes directrices
0OKle service a pu être contrôlé et fonctionne
1Warningcontrôlé, mais au-delà d'un seuil d'alerte ou fonctionnement douteux
2Criticalservice arrêté, ou au-delà d'un seuil critique
3Unknownarguments invalides ou échec interne du plugin

Un détail compte : les erreurs de plus haut niveau, comme un échec de résolution de nom ou un délai réseau dépassé, ne devraient généralement pas être rapportées en Unknown.

Une ligne de texte, puis les données de performance

Le plugin affiche une première ligne lisible, suivie après un | des données de performance. Le format attendu est :

'label'=value[UOM];[warn];[crit];[min];[max]

C'est ce bloc que le moteur transmet à son traitement des données de performance, et que Centreon transforme en graphiques.

Des seuils exprimés en plages

Un seuil est une plage [@]start:end. Par défaut, l'alerte se déclenche quand la valeur sort de la plage ; avec @, quand elle y entre. Le tableau de la documentation donne ces cas :

La documentation précise que tous les plugins ne gèrent pas encore ce format. Vérifiez donc l'aide de chacun avec --help.

Deux plugins courants : SNMP et HTTP

check_snmp interroge un équipement en SNMP, dans les versions 1, 2c ou 3, sur le port 161 par défaut. Sa syntaxe de base, d'après sa page de manuel :

check_snmp -H 192.168.10.30 -o <OID> -C <communaute> -P 2c -w <plage> -c <plage>

Pour le web, check_http est désormais déprécié : sa page de manuel indique que check_curl le remplace, qu'il s'utilise à l'identique et que check_http sera retiré. Remplacez donc check_http par check_curl dans vos définitions de commandes.

check_curl -H www.example.com -S -s "Bienvenue"

Ici -S active le HTTPS et -s attend une chaîne dans le contenu. Le même plugin sait vérifier la date d'expiration d'un certificat avec -C.

Utiliser des plugins Nagios dans Centreon

Centreon exécute des plugins exactement de cette façon : son moteur, Centreon Engine, lance périodiquement des commandes définies dans Configuration > Commands, avec des macros remplacées au moment de l'exécution. Dans Centreon 25.10, la ressource $USER1$ pointe vers /usr/lib64/nagios/plugins, emplacement des plugins de type Nagios.

BesoinOption Centreon
Un contrôle courant (Linux, Windows, SNMP, HTTP)un Monitoring Connector, avec ses plugins centreon-plugins
Un plugin Nagios déjà utilisé ailleursune commande personnalisée appelant le binaire
Reprendre une configuration Nagios existantel'outil Nagios Reader to Centreon CLAPI

Pour tester une commande, Centreon recommande de la copier depuis le panneau de détails de Resources Status, puis de l'exécuter sur le collecteur sous le compte centreon-engine :

su - centreon-engine

Si vous avez créé une liste blanche de commandes sur un collecteur, ajoutez-y vos plugins personnalisés : la documentation précise qu'une fois une commande listée, toutes les autres sont bloquées.

Et Windows ?

Les plugins Nagios tournent sur le serveur de supervision. Pour lire l'intérieur d'un serveur Windows, il faut un agent ou un protocole : SNMP, NRPE, NSClient++ ou, chez Centreon, son propre agent CMA. Centreon distribue des versions de NRPE et de NSClient++ empaquetées pour ses connecteurs. Pour d'autres façons d'interroger une cible, voyez la supervision d'un serveur HPE, en SNMP et par API REST, et la supervision d'Oracle côté base de données.

Pour comparer cette approche par plugins à un modèle centré sur l'agent, voyez Zabbix ou Centreon pour la supervision open source, et la rubrique Centreon pour la suite.

Questions fréquentes

Quelle différence entre Nagios Plugins et Monitoring Plugins ?

Ce sont deux projets issus du même code. Monitoring Plugins est maintenu par l'équipe qui gérait historiquement les Nagios Plugins ; Nagios Plugins est désormais piloté par Nagios Enterprises, propriétaire du domaine nagios-plugins.org.

Que signifient les codes retour 0, 1, 2 et 3 ?

0 pour OK, 1 pour Warning, 2 pour Critical et 3 pour Unknown. Le moteur de supervision déduit le statut de ce seul code, la ligne de texte servant à l'humain.

Centreon peut-il utiliser des plugins Nagios ?

Oui. Centreon Engine exécute des commandes qui appellent des plugins, et sa ressource $USER1$ pointe vers le répertoire des plugins de type Nagios. Testez chaque plugin sous le compte centreon-engine.

Faut-il encore utiliser check_http ?

Non. Sa page de manuel le déclare déprécié et annonce son retrait. check_curl le remplace à l'identique, il suffit de changer le nom dans la commande.

Comment superviser un équipement en SNMP avec un plugin Nagios ?

Avec check_snmp, en indiquant l'hôte, l'OID à lire, la version SNMP et la communauté ou les identifiants SNMPv3. Pour un serveur ou un switch complet, un connecteur Centreon dédié évite de gérer chaque OID à la main.