Nous allons découvrir les plugins Centreon Open Source qui peuvent être utilisés conjointement avec les plugins Pack. Il existe plusieurs manières d'utiliser les plugins Centreon : par le repo Centreon, en téléchargeant le paquets sur l'espace de téléchargement de Centreon ou en récupérant les sources sur le GitHub. Ces plugins remplacent les plugins historiques qui étaient livrés avec Centreon Web. Ces plugins sont basés essentiellement sur le langage PERL, ils utilisent, entre autres, les librairies SNMP, XML, JSON et Memcached.
Tout d'abord nous aborderons les prérequis avec une distribution DEBIAN et l'installation des plugins, puis nous verrons quelques exemples de fonctionnement et enfin les paramétrages nécessaires sur l'interface Web de Centreon.
MAJ 17-09-2014 Beaucoup de progrès depuis la création de cet article, les plugins Centreon se sont étoffés de nombreux modules comme nous allons essayer d'aborder tout au long de ces articles. Dernière modification en date, l'option remote du module os::linux::local::plugin permettant la supervision d'hôte distant avec le protocole ssh.
MAJ 21-09-2014 Nouvel article sur le module os::linux::snmp::plugin.
MAJ 16-06-2017 Mise à jour de l'article.
MAJ 01-05-2018 Mise à jour de l'article.
MAJ 03-02-2019 Mise à jour de l'article pour l'option version.
MAJ 30-04-2020 rectification pour les plugins récupérés sur le GitHub.
Je vous invite à consulter la documentation officielle de Centreon sur les plugins.
Tout d'abord nous aborderons les prérequis avec une distribution DEBIAN et l'installation des plugins, puis nous verrons quelques exemples de fonctionnement et enfin les paramétrages nécessaires sur l'interface Web de Centreon.
MAJ 17-09-2014 Beaucoup de progrès depuis la création de cet article, les plugins Centreon se sont étoffés de nombreux modules comme nous allons essayer d'aborder tout au long de ces articles. Dernière modification en date, l'option remote du module os::linux::local::plugin permettant la supervision d'hôte distant avec le protocole ssh.
MAJ 21-09-2014 Nouvel article sur le module os::linux::snmp::plugin.
MAJ 16-06-2017 Mise à jour de l'article.
MAJ 01-05-2018 Mise à jour de l'article.
MAJ 03-02-2019 Mise à jour de l'article pour l'option version.
MAJ 30-04-2020 rectification pour les plugins récupérés sur le GitHub.
Je vous invite à consulter la documentation officielle de Centreon sur les plugins.
Les plugins Centreon sont disponibles sur le repo Centreon. Ils sont packagés avec les librairies perl nécessaires décrites ci-dessous ( mécanisme FatPacked permettant d'assembler les dépendances Perl en un seul fichier ). Lors de la première installation, quelques plugins sont installés par défaut. Ensuite, il est possible de télécharger les plugins qui vous sont nécessaires. Pour rappel, les plugins Centreon sont Open Source mais les plugins Pack qui réalisent les configurations de templates d'hôtes et services sont soumis à licence.
1 Pré requis
Avant d'installer nos plugins, assurez-vous d'avoir les librairies suivantes. Ceci est valable pour Debian 7 à 9
apt-get install libxml-libxml-perl libjson-perl libwww-perl libxml-xpath-perl libnet-telnet-perl libnet-ntp-perl libnet-dns-perl libnet-ldap-perl libdbi-perl libdbd-mysql-perl libxml-simple-perl libdbd-pg-perl -y
Pour les modules os::linux::snmp::plugin et os::windows::snmp::plugin avec le mode time, installez ce package Debian.
apt-get install libdatetime-perl
Pour le module apps::nsclient::restapi::plugin avec le mode time, installez ce package Debian.
apt-get install liburi-encode-perl
2 Installation
Cette section concerne l'installation des plugins sur une distribution autre que l'ISO Centreon. Depuis le 21 mai 2019, il existe deux modes d'installation pour les plugins Centreon.
2.1 Installation par l'archive centreon-plugins-20200204
Vous pouvez télécharger les plugins sur l'espace de téléchargement de Centreon.
cd /usr/local/src
wget http://files.download.centreon.com/public/centreon-plugins/centreon-plugins-20200204.tar.gz
tar xzf centreon-plugins-20200204.tar.gz
cd centreon-plugins-20200204
Il faudra rendre exécutable les fichiers et les déplacer dans le dossier /usr/lib/centreon/plugins
chmod +x *
mkdir -p /usr/lib/centreon/plugins
mv * /usr/lib/centreon/plugins/
2.2 Installation via GitHub
Si vous êtes impatient de récupérer les dernières versions des plugins, Il est possible de récupérer les sources sur le GitHub de Centreon. Installons le paquet git-core.
apt-get install git-core
Nous devons récupérer le dépôt git du projet dans le dossier de votre choix.
git clone https://github.com/centreon/centreon-plugins.git
Avant de copier les fichiers dans le dossier des plugins, rendre exécutable le script principal.
cd centreon-plugins
chmod +x centreon_plugins.pl
Adaptez l’emplacement de la cible en fonction de votre configuration. Attention, il est important de ne pas placer les plugins du Github au même emplacement des plugins FatPacked.
cp -R * /usr/lib/centreon/centreon-plugins/
Pour une installation dans le dossier /usr/local (compilation par défaut).
cp -R * /usr/local/plugins/libexec/
Et enfin, si vous avez encore le moteur historique Nagios.
cp -R * /usr/lib/nagios/plugins/
2.2a Mise à jour des plugins Centreon avec git
Si vous avez gardé le dossier original des plugins Centreon. Vous pouvez utiliser la commande suivante pour effectuer une mise à jour.
cd centreon-plugins
git pull
2.3 Version de Centreon-Plugins
2.3a Version FatPacked
Pour vérifier la version d'un plugin Centreon, une commande bien utile. Celle-ci vous retourne la date de la mise à jour de ces plugins. Par exemple pour le plugin Linux SNMP
/usr/lib/centreon/plugins/centreon_linux_snmp.pl --version
Global Version: 20190412 (9997d13a)
2.3b Version GitHub
Pour vérifier la version de centreon_plugins.pl
/usr/lib/centreon/centreon-plugins/centreon_plugins.pl --version
Global Version: (dev)
Si vous télécharger les plugins depuis le GitHub, la commande suivante vous retournera une valeur (dev).
/usr/lib/centreon/centreon-plugins/centreon_plugins.pl --version
Global Version: (dev)
Pour obtenir la dernière version que vous avez téléchargé, modifiez le fichier centreon/plugins/script.pm comme ceci à la ligne 33 :
my $global_version = '20190111';
ou automatiquement comme ceci :
cd centreon-plugins
latestTag=$(git describe --tags `git rev-list --tags --max-count=1`)
sed -i -e "s/(dev)/$latestTag/g" centreon/plugins/script.pm
3 Principes de fonctionnement
3.1 Version Plugin officiel
Pour choisi un plugin, lister le dossier /usr/lib/centreon/plugin en recherchant par rapport à un mot clé. Par exemple le plugin pour mysql :
root@debian:/usr/lib/centreon/plugins# ls * | grep mysql
centreon_mysql.pl
Pour connaître les modes de supervision de chaque plugin, vous devez exécuter la commande suivante :
/usr/lib/centreon/plugins/centreon_mysql.pl --list-mode
Plugin Description:
Check MySQL Server.
You can use following options or options from 'sqlmode'
directly.
--host
Hostname to query.
--port
Database Server Port.
……………
……………
Modes Available:
connection-time
databases-size
innodb-bufferpool-hitrate
long-queries
myisam-keycache-hitrate
open-files
qcache-hitrate
queries
replication-master-master
replication-master-slave
slow-queries
sql
sql-string
tables-size
threads-connected
uptime
Pour obtenir des détails sur un mode de supervision, saisissez la commande suivante :
/usr/lib/centreon/plugins/centreon_mysql.pl --mode=[mode de supervision] --help
exemple
/usr/lib/centreon/plugins/centreon_mysql.pl --mode=connection-time --help
Vous obtiendrez l'aide suivante :
Usage:
centreon_plugins.pl [options]
Options:
--plugin
Specify the path to the plugin.
--list-plugin
Print available plugins.
--version
Print global version.
--help Print a brief help message and exits.
--ignore-warn-msg
Perl warn messages are ignored (not displayed).
--runas Run the script as a different user (prefer to use directly the
good user).
--environment
Set environment variables for the script (prefer to set it
before running it for better performance).
--convert-args
Change strings of arguments. Useful to use '!' in nrpe protocol.
Example: --convert-args='##,\x21'
Pour obtenir une aide plus complète, il faudra ajouter le nom des dépendances perl. Obtenez ce nom avec la commande suivante :
/usr/lib/centreon/plugins/centreon_mysql.pl --list-plugin
-----------------
PLUGIN: database::mysql::plugin
Plugin Description:
Check MySQL Server.
You can use following options or options from 'sqlmode'
directly.
--host
Hostname to query.
--port
Database Server Port.
Lancez la commande précédente avec le nom du plugin
/usr/lib/centreon/plugins/centreon_mysql.pl --plugin=database::mysql::plugin --mode=connection-time --help
Plugin Description:
Check MySQL Server.
You can use following options or options from 'sqlmode'
directly.
--host
Hostname to query.
--port
Database Server Port.
Global Options:
--mode Choose a mode.
--dyn-mode
Specify a mode with the path (separated by '::').
--list-mode
List available modes.
--mode-version
Check minimal version of mode. If not, unknown error.
--version
Display plugin version.
--sqlmode
Choose a sql mode (Default: "dbi").
--list-sqlmode
List available sql modes.
--multiple
Multiple database connections (some mode needs it).
Output Options:
--verbose
Display long output.
--debug Display also debug messages.
--filter-perfdata
Filter perfdata that match the regexp.
--explode-perfdata-max
Put max perfdata (if it exist) in a specific perfdata (without
values: same with '_max' suffix) (Multiple options)
--change-perfdata --extend-perfdata
Change or extend perfdata. Syntax:
--extend-perfdata=searchlabel,newlabel,target[,newuom]
Common examples:
Change storage free perfdata in used:
--change-perfdata=free,used,invert()
Change storage free perfdata in used:
--change-perfdata=used,free,invert()
Scale traffic values automaticaly:
--change-perfdata=traffic,,scale(auto)
Scale traffic values in Mbps:
--change-perfdata=traffic_in,,scale(Mbps),mbps
Change traffic values in percent:
--change-perfdata=traffic_in,,percent()
--extend-perfdata-group
Extend perfdata from multiple perfdatas (methods in target are:
min, max, average, sum) Syntax:
--extend-perfdata-group=searchlabel,newlabel,target[,newuom]
Common examples:
Sum wrong packets from all interfaces (with interface need
--units-errors=absolute):
--extend-perfdata-group=',packets_wrong,sum(packets_(discard
|error)_(in|out))'
Sum traffic by interface:
--extend-perfdata-group='traffic_in_(.*),traffic_$1,sum(traf
fic_(in|out)_$1)'
--change-short-output
Change short output display.
--change-short-output=pattern~replace~modifier
--range-perfdata
Change perfdata range thresholds display: 1 = start value equals
to '0' is removed, 2 = threshold range is not display.
--filter-uom
Filter UOM that match the regexp.
--opt-exit
Optional exit code for an execution error (i.e. wrong option
provided, SSH connection refused, timeout, etc) (Default:
unknown).
--output-xml
Display output in XML Format.
--output-json
Display output in JSON Format.
--output-file
Write output in file (can be used with json and xml options)
--disco-format
Display discovery arguments (if the mode manages it).
--disco-show
Display discovery values (if the mode manages it).
--float-precision
Set the float precision for thresholds (Default: 8).
dbi Options:
--datasource
Datasource (required. Depends of database server).
--username
Database username.
--password
Database password.
--connect-options
Add options in database connect. Format:
name=value,name2=value2,...
--sql-errors-exit
Exit code for DB Errors (default: unknown)
--timeout
Timeout in seconds for connection
Mode:
Check database connection time.
--warning
Threshold warning in milliseconds.
--critical
Threshold critical in milliseconds.
3.2 Version GitHub
L'exemple suivant est fait avec la version GitHub. L'utilisation des plugins Centreon est axée autour du fichier centreon_plugins.pl. Celui-ci appellera d'autres modules Perl en fonction du choix du plugin. Ensuite il appliquera la méthode de supervision du plugin choisi avec l'option mode.
Pour connaître les plugins installés, vous devez exécuter la commande suivante :
/usr/lib/centreon/centreon-plugins/centreon_plugins.pl --list-plugin
exemple
./centreon_plugins.pl --list-plugin
-----------------
PLUGIN: hardware::ups::mge::snmp::plugin
DESCRIPTION:
Check UPS MerlinGerin in SNMP.
-----------------
PLUGIN: network::stonesoft::snmp::plugin
DESCRIPTION:
Check Stonesoft firewall in SNMP.
-----------------
PLUGIN: apps::pacemaker::local::plugin
DESCRIPTION:
Check Pacemaker through local commands (the plugin can use SSH).
…………………………
Pour trouver un plugin spécifique, vous pouvez utiliser la commande suivante :
exemple pour http
exemple pour linux
./centreon_plugins.pl --list-plugin | grep http | grep PLUGIN
PLUGIN: apps::protocols::http::plugin
exemple pour linux
./centreon_plugins.pl --list-plugin | grep linux | grep PLUGIN
PLUGIN: os::linux::snmp::plugin
PLUGIN: os::linux::local::plugin
Comme indiqué sur le Readme du GitHub de Centreon, pour connaître les modes de supervision de chaque plugin, vous devez exécuter la commande suivante :
/usr/lib/centreon/centreon-plugins/centreon_plugins.pl --plugin=[type de plugin] --list-mode
exemple
/usr/lib/centreon/centreon-plugins/centreon_plugins.pl --plugin=os::freebsd::snmp::plugin --list-mode
Plugin Description:
Check Freebsd operating systems in SNMP. Some modes ('cpu', 'load,
'swap', 'memory') needs 'bsnmp-ucd'.
……………
……………
Modes Available:
cpu
cpu-detailed
disk-usage
diskio
inodes
interfaces
list-diskspath
list-interfaces
list-storages
load
memory
processcount
storage
swap
tcpcon
uptime
Pour obtenir des détails sur un mode de supervision, saisissez la commande suivante :
/usr/lib/centreon/centreon-plugins/centreon_plugins.pl --plugin=[type de plugin] --mode=[mode de supervision] --help
exemple
./centreon_plugins.pl --plugin=hardware::printers::standard::rfc3805::plugin --mode=marker-impression --help
Vous obtiendrez l'aide suivante :
Une courte description du plugin
L'aide des options globales
L'aide des options d'affichage du résultat
L'aide éventuelle pour le SNMP
L'aide éventuelle sur le cache pour les données temporaires utilisées par le plugin
Et enfin l'aide proprement dite du mode de supervision
Plugin Description:
Check printers compatible RFC3805 (Printer MIB v2) in SNMP. Don't know
if you can have multiple printer devices at once. So it's not managed
yet.
L'aide des options globales
Global Options:
--mode Choose a mode.
--dyn-mode
Specify a mode with the path (separated by '::').
--list-mode
List available modes.
--version
Display plugin version.
L'aide des options d'affichage du résultat
Output Options:
--verbose
Display long output.
--filter-perfdata
Filter perfdata that match the regexp.
--opt-exit
Exit code for an option error, usage (default: unknown).
--output-xml
Display output in XML Format.
--output-json
Display output in JSON Format.
--disco-format
Display discovery arguments (if the mode manages it).
--disco-show
Display discovery values (if the mode manages it).
L'aide éventuelle pour le SNMP
Snmp Options:
--hostname
Hostname to query (required).
--snmp-community
Read community (defaults to public).
--snmp-version
Version: 1 for SNMP v1 (default), 2 for SNMP v2c, 3 for SNMP v3.
--snmp-port
Port (default: 161).
--snmp-timeout
Timeout in secondes (default: 1) before retries.
--snmp-retries
Set the number of retries (default: 5) before failure.
--maxrepetitions
Max repititions value (default: 50) (only for SNMP v2 and v3).
--subsetleef
How many oid values per SNMP request (default: 50) (for get_leef
method. Be cautious whe you set it. Prefer to let the default
value).
--snmp-username
Security name (only for SNMP v3).
--authpassphrase
Authentication protocol pass phrase.
--authprotocol
Authentication protocol (MD5|SHA)
--privpassphrase
Privacy protocol pass phrase
--privprotocol
Privacy protocol (DES|AES)
--contextname
Context name
--contextengineid
Context engine ID
--securityengineid
Security engine ID
--snmp-errors-exit
Exit code for SNMP Errors (default: unknown)
L'aide éventuelle sur le cache pour les données temporaires utilisées par le plugin
Retention Options:
--memcached
Memcached server to use (only one server).
--statefile-dir
Directory for statefile (Default:
'/var/lib/centreon/centplugins').
--statefile-concat-cwd
Concat current working directory with option '--statefile-dir'.
Useful on Windows when plugin is compiled.
Et enfin l'aide proprement dite du mode de supervision
Mode:
Check marker impressions between two checks.
--warning
Threshold warning.
--critical
Threshold critical.
4 Des plugins, en veux-tu ? en voilà !
Les plugins (modules perl) sont organisés par dossiers :
- apps pour les applications, les protocoles.
- centreon librairie commune pour les modules,
- cloud pour les applications de type cloud (docker, aws),
- database pour les bases de données,
- example pour pouvoir créer ses plugins,
- hardware pour les serveurs, imprimantes et onduleurs,
- network pour tout le matériel actif réseau,
- notification pour les équipements envoyant des alertes de notification,
- os pour les systèmes d'exploitation,
- snmp_standard pour les requêtes SNMP standard,
- storage pour le matériel type NAS, lecteur de bande
Voici un extrait de la richesse des plugins.
- apps pour les applications, les protocoles.
- centreon librairie commune pour les modules,
- cloud pour les applications de type cloud (docker, aws),
- database pour les bases de données,
- example pour pouvoir créer ses plugins,
- hardware pour les serveurs, imprimantes et onduleurs,
- network pour tout le matériel actif réseau,
- notification pour les équipements envoyant des alertes de notification,
- os pour les systèmes d'exploitation,
- snmp_standard pour les requêtes SNMP standard,
- storage pour le matériel type NAS, lecteur de bande
Voici un extrait de la richesse des plugins.
Voici plusieurs exemples et configuration des plugins sur une installation full centreon.
   Voir en détail les plugins os
   Voir en détail les plugins apps
   Voir en détail les plugins Database
   Voir en détail les plugins os
   Voir en détail les plugins apps
   Voir en détail les plugins Database