Nouveau système de plugin Centreon

This post is also available in: Anglais

Merethis présente en avant-première de Gentilly un nouveau système de plugin ; ce système doit remplacer à terme les anciens plugins Centreon.
Les travaux pratiques valent mieux que des longs discours, nous allons commencer en testant et installant ce système de plugin.

Installation

Téléchargez et décompressez l’archive suivante sur un serveur Linux/BSD (ou autre) de votre choix : centreon-plugins-beta-1.0.tar
Afin de profiter pleinement des fonctionnalités du système, vous pouvez installer les dépendances Perl suivantes:

La dépendance “SNMP” correspond à une évolution importante des plugins Centreon ; les plugins n’utiliseront plus la vénérable bibliothèque “Net::SNMP” pour diverses raisons:

  • aucunes évolutions depuis 2010 (L’authentification SNMP v3 par certificat n’est par exemple pas possible) ;
  • comportement différent de la bibliothèque entre SNMP v1 et SNMP v2.

Mode opératoire

Les plugins de supervision sont exécutées à partir d’un même programme: “centreon_plugins.pl”.
Le principe est assez simple. L’utilisateur doit spécifier le “plugin” (option ‘–plugin’) et la supervision souhaité pour ce plugin (option ‘–mode’):

$ perl centreon_plugins.pl --plugin=os::linux::plugin --mode=load --host 127.0.0.1
OK: Load average: 0.00, 0.02, 0.00| 'load1'=0.00;;;0;; 'load5'=0.02;;;0;; 'load15'=0.00;;;0;;

Il est possible de connaitre les modes possibles avec l’option ‘–list-mode':

$ perl centreon_plugins.pl --plugin=os::linux::plugin --list-mode
...
Modes Available:
traffic
processcount
cpu
memory
diskio
swap
uptime
load
storage

Les arguments d’un mode sont visualisable avec l’option ‘–help':

$ perl centreon_plugins.pl --plugin=os::linux::plugin --mode=load --help

Des fonctionnalités en vrac

Ce système de plugin permet (liste non exhaustive) :

  • au niveau utilisation :
    • Des formats de sortie différent : options ‘–output-xml’ ou ‘–output-json’ ;
    • Exécution avec un utilisateur différent : option ‘–runas’ ;
    • Affichage des erreurs d’exécution Perl.
  • au niveau développement :
    • Associer un mode à plusieurs plugins : par exemple, un mode vérifiant les interfaces réseaux en SNMP peut être associé à un plugin “Linux” et “Cisco” ;
    • Simplifier le développement des plugins et notamment en SNMP ;
    • Une gestion des versions et de l’aide (en utilisant la documentation “Pod”) ;
    • Une gestion des fichiers de rétention (stocker sur un disque local ou un serveur “memcached”).

Des plugins!!!

En plus de ce nouveau système, vous trouvez déjà les plugins suivants:

  • Vérification “Linux” (SNMP) (–plugin=os::linux::plugin) ;
  • Vérification “Windows (SNMP) (–plugin=os::windows:plugin) ;
  • Vérification “Bluecoat” (SNMP) (–plugin=network:bluecoat::plugin) ;
  • Vérification “MySQL” (SQL) (–plugin=database::mysql::plugin).

Vous n’avez pas d’excuse pour tester cela.
Les retours (critiques ou encouragements) sont fortement appréciés.
Laissez vos commentaires (techniques) sur https://forge.centreon.com/projects/centreon-plugins

Prochainement, un billet expliquera comment développer ses propres plugins. Les plus courageux peuvent d’ores et déjà lire le code source et visualiser notamment le code dans le répertoire “example”.

– Update 21/05/14–

Incoming search terms:

  • plugin centreon
  • centreon nagios plugin
  • centreon snmp:plugin: mode storage
  • centreon_windows_snmp pl storage

9 réflexions au sujet de « Nouveau système de plugin Centreon »

    • Bonjour,

      Merci pour le retour. Je vais essayer de vous répondre.
      Le but est d’avoir une bibliothèque et une méthode gérant les différents éléments d’un plugin de supervision. Cela est mieux que l’ancienne système car il y’en avait pas :) C’était du copié/collé de code à gauche à droite. Ce nouveau système va permettre de réduire les bugs. Il existe une bibliothèque “Nagios::Plugin” mais elle est beaucoup trop “simple”.
      Cette nouvelle bibliothèque apporte surtout :
      – Une gestion SNMP avec l’API “officiel” du projet ‘net-snmp’ ;
      – Une gestion des fichiers de rétention avec “memcached” ;
      – …

      Après, le développeur a toujours une importance dans la qualité du plugin. Cela reste ouvert mais encadré. Enfin, vous remarquerez que le scope de plugin va s’éteindre au delà de la supervision standard SNMP. (d’autres plugins ont été ajoutés dans la forge)

      • Bonsoir,

        Dans le temps, j’avais déjà planché sur une telle initiative et je n’étais pas le seul. De nombreux modules étendant Nagios::Plugin ont été écrits bien que la version SNMP utilise encore Net::SNMP. De mon côté, j’étais parti sur le module Perl SNMP de Net-SNMP.
        Dans la mesure où il existe une version légère de Nagios::Plugin, en quoi ce dernier est-il trop « simple » ? Que lui manquait-il donc ? Pourquoi ne pas l’avoir simplement étendu avec un nouveau module (par exemple, un module Nagios::Plugin::Cache) ?

        • C’est une bonne question. Nous connaissons bien le système du libre et les difficultés de contribution.
          Je ne pense pas qu’il était possible d’importer toutes ces modifications dans le module “Nagios::Plugin”: gestion des arguments, de l’aide, du SNMP, des modes, memcached,…
          La philosophie me semble différente:
          – “Nagios::Plugins” te fournit des fonctions pour développer ton plugin ;
          – Cette bibliothèque te fournit un cadre.

          De plus, il faut bien voir qu’il y’a la bibliothèque mais aussi les plugins.

          • Au contraire, tu ne les intègres pas dans le module en lui-même mais tu crées un nouveau module héritant du premier dans lequel tu ajoutes ce que tu veux. C’est ce que j’avais fait.

            Pour les options, j’avais ainsi une gestion commune quelque soit le plugin utilisant le module.

            Quant à la gestion du cache, tu peux faire un autre module héritier de Nagios::Plugin (parce que ce n’est pas propre à SNMP, àmha).

  1. Ça va relancer les débats sur supervision SNMP/nrpe :)

    Bonne iniative. Je vais tester cela prochainement.

    Le but, réduire le nombre de page de commande :).

    Est-il possible d’imaginer un appel a de multiple indicateurs pour limiter les requêtes ?

    • Cela serait possible mais on va avoir un problème au niveau de la collision entre les arguments spécifiques des différents “modes”.
      Sinon, au niveau des “modes” de base SNMP, tu peux vérifier les interfaces globalement (en filtrant par regexp).

  2. Bonjour,

    Moi je me pose une question depuis le temps. J’ai connu Centreon comme une interface à Nagios et une alternative à nagios-pnp, et je n’ai jamais vraiment testé Centreon en soit.

    Mais Centreon est-il un outil de supervision totalement indépendant de nagios?

    Pour revenir à la question des plugins, typiquement là j’ai besoin de développer un plugin pour développer un service particulier sur mes machines, dois-je suivre le guide de développement des plugins nagios, ou Centreon recommande le sien? Comment ça se passe dans ce cas particulier?

    Merci,

    Cordialement.

Leave a Reply