En plus des différents checks disponibles par défaut dans Centreon, il existe des plugins packs, ou catalogue de Packs de Supervision gratuits ou payants, que l’on peut télécharger via l’interface web.
Centreon étant un outil de supervision open source et communautaire, il est également possible de trouver des plugins gratuits mis à disposition par la communauté.
Une autre solution est de créer directement ses propres plugins, à condition d’avoir les connaissances nécessaires.
Nous allons découvrir comment installer des plugins packs via l’interface ainsi que l’installation des plugins Centreon Open Source qui peuvent être utilisés conjointement avec les plugins Pack.
Vous devrez vous rendre dans la section Configuration/Pack de plugins
pour trouver les 6 plugins gratuits proposés. Si on s’inscrit sur le site de Centreon, 5 autres plugins packs deviennent gratuits, les autres étant payant.
Il existe plus de 150 plugins packs disponibles dans l’offre IMP.
Pour installer et activer les plugins packs, cliquer sur le plugin à installer.
Dans le cadre de cette procédure, le plugin de Cisco Standard sera installé
Cliquer sur le plugin pour afficher les détails :
Pour l’installer, il suffit de cliquer sur l’icone + des 2 manières suivantes:
ou
Patienter pour que le plugin s’installe automatiquement.
Une fois installé l’icône du plugin affiche une marque, confirmant l’installation
Les différents checks et Templates seront à présent disponibles dans leurs sections respectives.
Pour utiliser les différents checks inclus dans les plugins pack, il faut absolument garder en tête la notion d’héritage qui a été précédemment expliqué.
En effet, les commandes, Templates de services et Templates d’Hôtes sont déjà liés les uns aux autres lors de l’installation d’un pack.
Petit rappel :
Généralement, lors de l’installation d’un pack, cette notion de hiérarchie et d’héritage ne sera pas retouchée mais plutôt utilisée.
Il sera toutefois nécessaire de customiser les valeurs des warning
, critical
et autres valeurs à vérifier.
Pour les besoins de cette procédure voici un exemple.
Lors de l’’installation des packs Linux SNMP
ou Windows SNMP
, le Template de service Base-Ping-LAN-custom
devient accessible.
Ce Template va permettre d’effectuer la supervision de la connectivité réseau à l’aide du ping pour les hôtes liés à ce Template.
Toutefois il est nécessaire de le configurer selon ses besoins, le nombre de paquets envoyés ou les valeurs pour le warning
et critical
ne sont pas forcément celles que l’on souhaite.
Il est également important de positionner correctement l’ensemble des périodes de check, des intervalles de supervision ainsi que les notifications comme indiqué précédemment dans cette procédure.
En effet par défaut, tout est vide.
Une fois les plugins installés, un certain nombre de commandes et de Templates sont disponibles.
Nous avons vu comment les utiliser mais il est également possible si on le souhaite, de ne pas utiliser les Templates prédéfinies et de recréer ses propres Templates à partir des commandes (checks) disponibles.
Pour cela il faudra procéder de la même façon que précédemment dans cette procédure.
Il existe de nombreux sites proposant des listes de plugins mis à disposition gratuitement.
Par exemple, le site Exchange Nagios est plutôt bien fourni : https://exchange.nagios.org
Toute fois pour les besoins de cette procédure, nous allons prendre en exemple le plugin centreon_plugins.pl nommé plugins Centreon Open Source
.
Il s’agit d’un plugin écrit en perl qui est très complet et qui permet de mettre en place un très grand nombre de checks différents.
Adresse du github: https://github.com/centreon/centreon-plugins
Avant toute chose, si ce n’est pas déjà fait il faut installer la commande « git »
apt install git
Une fois la commande installée, se déplacer dans le répertoire /tmp puis télécharger le plugin depuis Github à l’aide des commandes ci-dessous :
cd /tmp
git clone https://github.com/centreon/centreon-plugins
Le répertoire « centreon-plugins » devrait être visible dans /tmp
4,0K drwxr-xr-x 18 root root 4,0K 21 oct. 17:23 centreon-plugins```
Déplacer le dossier dans /usr/lib/nagios/plugins/
puis lui ajouter les droits nécessaires pour son exécution par centreon
cp -rf /tmp/centreon-plugins/ /usr/lib/nagios/plugins/
cd /usr/lib/nagios/plugins
chmod 755 -Rf centreon-plugins
cd centreon-plugins
chmod +x centreon_plugins.pl
Avant de commencer, voici le contenu du dossier :
root@centreon-central:/usr/lib/nagios/plugins/centreon-plugins# ls -lsah
total 148K
4,0K drwxr-xr-x 18 root root 4,0K 21 oct. 17:23 .
4,0K drwxr-xr-x 3 root root 4,0K 21 oct. 17:23 ..
4,0K drwxr-xr-x 78 root root 4,0K 21 oct. 17:23 apps
4,0K drwxr-xr-x 4 root root 4,0K 21 oct. 17:23 blockchain
4,0K drwxr-xr-x 4 root root 4,0K 21 oct. 17:23 centreon
4,0K -rwxr-xr-x 1 root root 989 21 oct. 17:23 centreon_plugins.pl
44K -rwxr-xr-x 1 root root 41K 21 oct. 17:23 changelog
4,0K drwxr-xr-x 16 root root 4,0K 21 oct. 17:23 cloud
4,0K drwxr-xr-x 3 root root 4,0K 21 oct. 17:23 contrib
4,0K drwxr-xr-x 19 root root 4,0K 21 oct. 17:23 database
4,0K drwxr-xr-x 4 root root 4,0K 21 oct. 17:23 doc
4,0K drwxr-xr-x 4 root root 4,0K 21 oct. 17:23 example
4,0K drwxr-xr-x 8 root root 4,0K 21 oct. 17:23 .git
4,0K drwxr-xr-x 2 root root 4,0K 21 oct. 17:23 .github
4,0K drwxr-xr-x 11 root root 4,0K 21 oct. 17:23 hardware
4,0K -rwxr-xr-x 1 root root 2,4K 21 oct. 17:23 Jenkinsfile
12K -rwxr-xr-x 1 root root 12K 21 oct. 17:23 LICENSE.txt
4,0K drwxr-xr-x 87 root root 4,0K 21 oct. 17:23 network
4,0K drwxr-xr-x 12 root root 4,0K 21 oct. 17:23 notification
4,0K drwxr-xr-x 11 root root 4,0K 21 oct. 17:23 os
8,0K -rwxr-xr-x 1 root root 4,4K 21 oct. 17:23 README.md
4,0K drwxr-xr-x 3 root root 4,0K 21 oct. 17:23 snmp_standard
4,0K -rwxr-xr-x 1 root root 371 21 oct. 17:23 sonar-project.properties
4,0K drwxr-xr-x 29 root root 4,0K 21 oct. 17:23 storage
Les dossiers contiennent les informations que le plugin va utiliser lors des différents checks.
Les fichiers sont des exécutables. Celui qui nous intéresse et que nous utiliserons est
centreon_plugins.pl
Précédemment nous avons vu que lorsque nous utilisions une commande, la variable $USER1$
était utilisée.
Elle correspond au chemin suivant : /usr/lib/nagios/plugins/
et permet de faire appel aux commandes se trouvant dans ce répertoire.
Par exemple : /usr/lib/nagios/plugins/check_centreon_snmp_memory
en y associant les valeurs nécessaires au check permettra d’effectuer un check de la RAM sur le ou les appareils ciblés.
$USER1$/check_centreon_snmp_memory -H $HOSTADDRESS$ -C $ARG1$ -v $ARG2$ -w $ARG3$ -c $ARG4$
L’exécutable centreon_plugins.pl
s’utilise de la même façon cependant il se trouve dans /usr/lib/nagios/plugins/centreon-plugins/
Afin d’utiliser ce plugin nous allons donc créer une nouvelle ressource.
Pour cela aller dans Configuration/Collecteurs/Ressources
et cliquer sur Ajouter
:
Remplir les informations comme sur la capture d’écran et cliquer sur Sauvegarder
:
Les commandes qui seront enregistrées dans Centreon commenceront donc par
$USER2$/centreon_plugins.pl
Maintenant que tout est prêt, nous allons faire AVANT TOUT un test directement depuis la CLI de centreon.
Commencer par faire une recherche des différents plugins Windows à disposition.
cd /usr/lib/nagios/plugins/centreon-plugins
./centreon_plugins.pl --list-plugin | grep os | grep windows
PLUGIN: os::windows::local::plugin
PLUGIN: os::windows::snmp::plugin
PLUGIN: os::windows::wsman::plugin
Il est également possible d’effectuer des recherches dans chacun des différents répertoires précédemment cités : apps, centreon, cloud, contrib, database, docs, Example, hardware, Network, notification, Os, snmp_standard, storage
La marche à suivre sera la même :
./centreon_plugins.pl --list-plugin | grep database
PLUGIN: cloud::azure::database::cosmosdb::plugin
PLUGIN: cloud::azure::database::elasticpool::plugin
PLUGIN: cloud::azure::database::mariadb::plugin
PLUGIN: cloud::azure::database::mysql::plugin
PLUGIN: cloud::azure::database::redis::plugin
PLUGIN: cloud::azure::database::sqldatabase::plugin
PLUGIN: cloud::azure::database::sqlmanagedinstance::plugin
PLUGIN: cloud::azure::database::sqlserver::plugin
PLUGIN: database::cassandra::jmx::plugin
PLUGIN: database::couchdb::restapi::plugin
PLUGIN: database::db2::plugin
Domain name or IP address of the Db2 database system
(Uncataloged database connections)
--port TCP/IP server port number that is assigned to the Db2 database
--database
Name for the Db2 database system. If --server is not set, it's a
cataloged connection (database alias).
PLUGIN: database::elasticsearch::restapi::plugin
PLUGIN: database::firebird::plugin
--database
PLUGIN: database::influxdb::plugin
PLUGIN: database::informix::snmp::plugin
PLUGIN: database::informix::sql::plugin
PLUGIN: database::mongodb::plugin
PLUGIN: database::mssql::plugin
--database
Select database .
PLUGIN: database::mysql::plugin
PLUGIN: database::oracle::plugin
PLUGIN: database::postgres::plugin
--database
PLUGIN: database::redis::plugin
Check Redis database.
PLUGIN: database::rrdtool::local::plugin
Check rrdtool database.
PLUGIN: database::sap::hana::plugin
--database
PLUGIN: database::sybase::plugin
PLUGIN: database::warp10::sensision::plugin
Pour revenir à Windows, le plugin qui nous intéresse et qui permettra de faire des checks en snmp est le PLUGIN os::windows::snmp::plugin
Il s’agit en réalité d’une arborescence qui pourrait être vue de cette manière : os/windows/snmp/plugin/
Chaque plugin comprend différents modes d’exécution qui peuvent être utilisés. Ces modes peuvent être vu comme des catégories.
Pour afficher la liste des modes de Windows, effectuer la commande suivante :
./centreon_plugins.pl --plugin=os::windows::snmp::plugin --list-mode
Plugin Description:
Check Windows operating systems in SNMP.
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.
--pass-manager
Use a password manager.
Modes Meta:
multi
Modes Available:
cpu
interfaces
list-interfaces
list-processes
list-services
list-storages
memory
processcount
service
storage
swap
time
uptime
La liste
Mode Available
correspond aux modes disponibles pour superviser un hôte Windows.
A titre d’exemple pour cette procédure, le mode CPU sera utilisé.
Commencer par afficher l’aide pour voir les arguments à utiliser
./centreon_plugins.pl --plugin=os::windows::snmp::plugin --mode=cpu --help
Une liste détaillée comprenant 4 grandes parties va apparaitre (le détail ne sera pas repris ici) :
Maintenant qu’on a vu les différentes options, passons à l’exécution de la commande
./centreon_plugins.pl --plugin=os::windows::snmp::plugin --mode=cpu --hostname=10.0.0.8 --snmp-community=public --snmp-version=2c
OK: 2 CPU(s) average usage is: 40.00% | 'cpu0'=40.00%;;;0;100 'cpu1'=40.00%;;;0;100 'total_cpu_avg'=40.00%;;;0;100
–plugin=os::windows::snmp::plugin -> Le chemin du plugin utilisé dans la commande
–mode=cpu -> le mode utilisé par le plugin
–hostname=10.0.0.8 -> le nom FQDM ou l’ip du serveur à sonder (peut varier selon le mode choisi)
–snmp-community=public -> la communauté SNMP configurée sur le serveur (peut varier selon le mode choisi)
–snmp-version=2c -> la version du protocole SNMP qui sera utilisé
Il est possible d’ajouter des avertissements à la commande afin de définir un niveau d’alerte à l’aide de
--warning=X
et--critical=Y
( X et Y sont des pourcentages)
./centreon_plugins.pl --plugin=os::windows::snmp::plugin --mode=cpu --hostname=10.0.0.8 --snmp-community=public --snmp-version=2c --warning=75 --critical=90
OK: 2 CPU(s) average usage is: 42.00% | 'cpu0'=41.00%;;;0;100 'cpu1'=43.00%;;;0;100 'total_cpu_avg'=42.00%;0:75;0:90;0;100
Les tests fait directement depuis la CLI de centreon étant concluant, passons à la création de commandes depuis l’interface graphique.
Si l’on souhaite vérifier l’utilisation des CPU, il est tout à fait possible de reprendre la commande précédemment utilisée, ce qui donnera :
$USER2$/centreon_plugins.pl --plugin=os::windows::snmp::plugin --mode=cpu --hostname=$HOSTADDRESS$ --snmp-community=$ARG1$ --snmp-version=$ARG2$ --warning=$ARG3$ --critical=$ARG4$
Les variables seront à définir dans le Template de service :
$HOSTADDRESS$
-> IP*
$ARG1$
-> la communauté SNMP*
$ARG2$
-> la version du protocole SNMP qui sera utilisée*
$ARG3$
-> valeur à définir pour une alerte de type « warning »*
$ARG4$
-> valeur à définir pour une alerte de type « critique »*
Cependant toujours à des fins d’exemple pour cette procédure, nous allons effectuer une commande utilisant des « macros personnalisées » afin de vérifier le trafic des interfaces réseau de nos serveurs.
Les macros standards sont prédéfinies dans le code source des moteurs de supervision. Ces différentes macros permettent de récupérer la valeur de différents objets au sein des commandes. Une macro commence et se termine toujours par le signe « $ ».
Une liste complète des macros est disponible à cette adresse
Commencer par se connecter à l’interface graphique de Centreon puis cliquer sur Configuration/Collecteurs/Ressources
puis Ajouter
:
Les macros personnalisées vont dépendre de ce qui sera à superviser mais voici une liste qui peut être utile de créer :
$_SERVICEMODE$
$_SERVICEDISK$
$_SERVICEHOST$
$_SERVICEINTERFACE$
$_SERVICEOPTION$
$_SERVICEUSERNAME$
$_SERVICEPASSWORD$
$_SERVICEPORT$
$_SERVICEPROCESS$
$_SERVICESID$
$_SERVICECOMMAND$
$_SERVICESUBCOMMAND$
$_SERVICETIMEOUT$
$_SERVICEWARNING$
$_SERVICEWARNINGIN$
$_SERVICEWARNINGOUT$
$_SERVICECRITICAL$
$_SERVICECRITICALIN$
$_SERVICECRITICALOUT$
Une fois les macros créées et sauvegardées, cliquer sur Configuration/Commandes/Contrôles puis Ajouter
:
Commencer par nommer la commande puis écrire la commande dans la section Ligne de commande
:
$USER2$/centreon_plugins.pl --plugin=$_SERVICEPLUGIN$ --hostname=$HOSTADDRESS$ --snmp-community=$_HOSTSNMPCOMMUNITY$ --snmp-version=$_HOSTSNMPVERSION$ --mode=$_SERVICEMODE$ --interface=$_SERVICEINTERFACE$ --warning-in-traffic=$_SERVICEWARNINGIN$ --warning-out-traffic=$_SERVICEWARNINGOUT$ --critical-in-traffic=$_SERVICECRITICALIN$ --critical-out-traffic=$_SERVICECRITICALOUT$ $_SERVICEOPTION$
Cliquer sur le bouton Décrire les macros
Un pop-up va alors s’ouvrir permettant de décrire les différentes macros qui seront utilisées
Attention, les informations utilisées ici le sont à titre d’exemple afin d’avoir une bonne visibilité de la commande. Les valeurs qui seront réellement utilisées seront définies dans le Template de service qui sera créée par la suite.
Cliquer sur Sauvegarder
Les informations apparaissent alors dans la commande.
Valider la création de la commande en cliquant sur Sauvegarder
Les serveurs ayant plusieurs interfaces, il nous faut dans un premier temps savoir quelle est l’ID de l’interface que l’on souhaite superviser. Pour cela effectuer la commande suivante directement dans la CLI de centreon :
./centreon_plugins.pl --plugin=os::windows::snmp::plugin --mode=list-interfaces --hostname=172.20.0.4 --snmp-community=**** --snmp-version=2c --interface= --name --oid-display=ifDesc --filter-status=up
La liste des interfaces apparait il ne reste plus qu’à choisir l’interface ciblée
List interfaces:
'Software Loopback Interface 1' [speed = 1073, status = up, id = 1]
Skipping interface 'WAN Miniport (IKEv2)': no matching filter status
'Broadcom BCM5708C NetXtreme II GigE (NDIS VBD Client) #46' [speed = 1000, status = up, id = 7]
Dans notre exemple l’ID de l’interface est « 7 ». C’est cette valeur qui sera utilisée afin de récolter des informations lors de l’utilisation du check
Passons maintenant à la création du Template de service qui utilisera cette commande.
Cliquer sur Configuration/Services/Modèles
puis Ajouter
.
De la même manière que vu précédemment lors de la création de Templates, nous allons remplir les informations mais cette fois-ci ce seront les « macros personnalisées » qui seront utilisées et définies
Cliquer sur Sauvegarder
pour enregistrer la Template
Cliquer sur Configuration/Hôtes/modèles
puis Ajouter
:
A nouveau, de la même manière que vu précédemment lors de la création de Templates, nous allons créer un Template d’hôte dédiée à la vérification du trafic.
Remplir les différentes informations puis dans la section Relations
, choisir le Template de service précédemment créée pour l’associer avec ce Template d’hôtes.
Cliquer sur Sauvegarder
pour enregistrer le Template.
Il ne reste plus qu’à associer ce Template avec un hôte.