One plugin to rule them all (or not)

This post is also available in: Anglais

Attention, ce billet est obsolète , merci de vous rendre sur la documentation des plugins : http://documentation.centreon.com/docs/centreon-plugins/en/latest/

Ce billet fait suite au message suivant: https://blog.centreon.com/nouveau-systeme-plugin-centreon/

“centreon-plugins” est composé d’une bibliothèque et des plugins de supervision. Après 6 mois d’évolution, le nouveau système est apte pour une utilisation en production. Néanmoins, certains plugins peuvent être en “Work in Progress”.
Il est à noter que “centreon-plugins” est libre et gratuit (licence GPLv2).
Une forge pour l’ouverture de bugs et les demandes d’évolutions est disponible : https://forge.centreon.com/projects/centreon-plugins

Installation

La dernière version est récupérable via un client “git”. L’adresse git est: http://git.centreon.com/centreon-plugins.git
Attention, si vous êtes sous Windows, veuillez utiliser le mode “Checkout as-is” (“core.autocrlf input”) pour ne pas avoir des retours à la ligne Windows (“\r\n”). Dans le cas contraire, les messages d’aides ne s’afficheront pas.
Pour son utilisation, le langage Perl est nécessaire. Le code est architecturé de la façon suivante:

  • ‘centreon/': répertoire intégrant les bibliothèques ;
  • ‘example/': répertoire avec des exemples ;
  •  ‘*/': répertoires avec les différents plugins répartis selon un classement permettant de rendre plus aisée la navigation ;
  •  ‘centreon_plugins.pl': LE script central.

Pourquoi le langage Perl ?

Le moment troll est arrivé :)
“centreon-plugins” utilise uniquement le langage Perl (Plus précisément: sous les bindings Perl, du code C/C++ existe :) De plus, des commandes/powershell sont utilisées par certains plugins).

Les raisons du choix de Perl sont les suivantes:

  • Installé par défaut sur de nombreux systèmes (Solaris, AIX, Linux, BSD,…). Sous Windows, ‘perl-strawberry’ et ‘activePerl’ peuvent être utilisées (les plugins sont aussi compilables en un seul exécutable) ;
  • Très performant pour la lecture de flux (le point fort du langage: l’intégration des expressions regulières dans le langage) ;
  • Large écosystème de modules (‘SNMP’, ‘OpenIPMI’, ‘DBI’ (‘DBD’ pour Oracle, MySQL, Postgres, Informix,…), ‘Openswan’, ‘LWP’, ‘Net::Telnet’, …) ;
  • Stable: les plugins ont été testées sur Perl 5.8, 5.11 et 5.16 (Ce point peut être un inconvénient pour certains :).

Mode opératoire

Comme expliqué dans l’ancien billet, l’utilisateur doit spécifier le « plugin » (option ‘–plugin’) et la supervision souhaitée pour ce plugin (option ‘–mode’). La liste des plugins évolue avec le temps. Vous pouvez récupérer la liste en exécutant la commande suivante:

$ perl centreon_plugins.pl --list-plugin

Actuellement, 63 plugins existent pour superviser par exemple:
Cisco 3750, Switch Brocade, Linux, Matériel Sun, Imprimantes, Onduleurs, MySQL, ActiveDirectory, Apache,…

Ils existent plusieurs catégories de plugins:

  • SNMP: équipements réseaux, Matériel HP,… Ces plugins nécessitent le module Perl “SNMP” ;
  • DBI: bases de données. Ces plugins nécessitent le module Perl “DBI” et “DBD” idoine ;
  • WSMAN: applicatif Windows. Ce système est encore expérimental et nécessite le module Perl “Openwsman” >= 2.4 ;
  • WEB: Apache, Nginx, Tomcat,… Ces plugins nécessitent le module Perl “LWP” ;
  • LOCAL: Linux, AIX,… Ces plugins peuvent être exécutées localement sur le système ou à distance via des options en ssh (commandes ‘ssh’ ou ‘plink’) sans utiliser ‘check_by_ssh’ :
  • AUTRES: Matériel Sun, EMC Clariion,… Ces plugins nécessitent des dépendances diverses et variées (Module Net::Telnet ou le client navisphere par exemple).

Voici un exemple pour exécuter le plugin linux en local et à distance:
$ perl centreon_plugins.pl --plugin=os::linux::local::plugin --mode=cpu --verbose
OK: CPUs usages are ok. | 'cpu0_user'=1.32%;;;0;100 'cpu0_nice'=0.04%;;;0;100 'cpu0_system'=0.25%;;;0;100 'cpu0_idle'=98.27%;;;0;100 'cpu0_wait'=0.00%;;;0;100 'cpu0_interrupt'=0.04%;;;0;100 'cpu0_softirq'=0.08%;;;0;100 'cpu0_steal'=0.00%;;;0;100
CPU '0' Usage: User 1.32 %, Nice 0.04 %, System 0.25 %, Idle 98.27 %, Wait 0.00 %, Interrupt 0.04 %, Soft Irq 0.08 %, Steal 0.00 %

$ perl centreon_plugins.pl --plugin=os::linux::local::plugin --mode=cpu --verbose --hostname=[xxx.xxx.xxx.xxx] --remote --ssh-command='plink' --ssh-option='-l=[user]' --ssh-option='-pw=[password]' --ssh-option='-batch'
OK: CPUs usages are ok. | 'cpu0_user'=0.16%;;;0;100 'cpu0_nice'=0.00%;;;0;100 'cpu0_system'=0.07%;;;0;100 'cpu0_idle'=99.72%;;;0;100 'cpu0_wait'=0.02%;;;0;100 'cpu0_interrupt'=0.01%;;;0;100 'cpu0_softirq'=0.01%;;;0;100 'cpu0_steal'=0.00%;;;0;100
CPU '0' Usage: User 0.16 %, Nice 0.00 %, System 0.07 %, Idle 99.72 %, Wait 0.02 %, Interrupt 0.01 %, Soft Irq 0.01 %, Steal 0.00 %

Un autre exemple pour l’exécution d’un plugin SNMP:
$ perl centreon_plugins.pl --plugin=os::linux::snmp::plugin --mode=tcpcon --hostname=[xxx.xxx.xxx.xxx] --snmp-community=public --snmp-version=2c
OK: Total connections: 2 | 'total'=2;;;0; 'con_closed'=0;;;0; 'con_closeWait'=0;;;0; 'con_synSent'=0;;;0; 'con_established'=2;;;0; 'con_timeWait'=0;;;0; 'con_lastAck'=0;;;0; 'con_listen'=6;;;0; 'con_synReceived'=0;;;0; 'con_finWait1'=0;;;0; 'con_finWait2'=0;;;0; 'con_closing'=0;;;0;

Les évolutions

Au préalable, je remercie les contributeurs/utilisateurs (Florian Asche, Eric Coquard, Dominique Ritouret, Eric de Baumont, Simon Bomm, Duret Family,…) du nouveau système de plugins.
Toutes les contributions sont appréciées.
Pour des contributions de plugins, un code review est réalisé par moi-même.
Les évolutions suivantes sont prévues dans un futur proche:

  • Nouveaux plugins: IBM HMC, Exchange 2010, Varnish, UPS MGE,…
  • Ajout d’options pour l’utilisation du connecteur SSH: création d’une API de dialogue entre les plugins SSH et le connecteur (https://forge.centreon.com/issues/5487) ;
  • Ajout d’options pour l’utilisation d’un connecteur VMWare VIX API: Les plugins “LOCAL” pourront utiliser l’API VIX pour lancer des commandes sur le système ciblé.

Ces plugins sont réalisés dans le cadre du projet “Plugins Packs” de Merethis. Les Plugins Packs visent à industrialiser le déploiement et faciliter la maintenance des sondes de votre plateforme de supervision Centreon Enterprise Server.
Ces sondes, dans leur version packagée en RPM pour Red Hat et CentOS, incluent donc de la documentation, les modèles d’hôtes et de services et sont supportées par nos équipes.
Ces plugins sont maintenant utilisés dans 90% des nouveaux plugin-packs (paquets CES 2.2/3.0 pour l’industrialisation du déploiement).
Vous voulez tester ces plugin packs ou nous faire un retour d’expériences de votre utilisation, contactez-nous !

== update le 19/12/2014==

Une réflexion au sujet de « One plugin to rule them all (or not) »

  1. Bonjour,

    Merci pour votre feedback. Certains équipements ne remplissent pas les OIDs “ifname”. Vous pouvez changer avec l’option –oid-filter et –oid-display (plus d’information dans l’aide du plugin).
    En ce qui concerne le packaging, il est prévu en standard lorsque centreon 3.x sortira.

Leave a Reply