Maintenant que notre architecture est prête pour la supervision, je vous décrire ma méthode pour configurer Centreon. Nous allons utiliser les macros personnalisées et les modèles d'hôtes et services pour automatiser au maximum l'ajout de serveur ESX.
Si vous avez activé syslog sur votre serveur ESXi, vous remarquerez une augmentation de messages dus à la connexion du plugin check_vmware_api.pl comme le montre cette copie d'écran.
1 Les macros personnalisées
Le plugin check_vmware_api a besoin d'une connexion (USERNAME et PASSWORD) au serveur ESX, il utilise aussi deux paramètres appelés COMMAND et SUBCOMMAND. Pour les alertes nous aurons besoins des valeurs CRITICAL et WARNING. Voici les macros personnalisées configurées sur notre serveur de supervision.
Pour ajouter nos macros, on utilisera le script que vous trouverez sur mon blog.
Centreon-Clapi
./create_macrocustom.sh _SERVICEWARNING 0 Central "Custom Macro"
./create_macrocustom.sh _SERVICECRITICAL 0 Central "Custom Macro"
./create_macrocustom.sh _SERVICECOMMAND 0 Central "Custom Macro"
./create_macrocustom.sh _SERVICESUBCOMMAND 0 Central "Custom Macro"
./create_macrocustom.sh _SERVICEPASSWORD 0 Central "Custom Macro"
./create_macrocustom.sh _SERVICEUSERNAME 0 Central "Custom Macro"
2 Les commandes
Nous allons créer deux types de commande, la première commande servira pour récupérer des valeurs de statut ou de recommandation. Cette commande, que nous appellerons check_esx, n'utilise pas les valeurs CRITICAL et WARNING. La seconde commande, que nous appellerons check_esx_limite, utilise ces valeurs. Voici en images ces deux commandes.
$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_SERVICEUSERNAME$ -p $_SERVICEPASSWORD$ -l $_SERVICECOMMAND$ -s $_SERVICESUBCOMMAND$
Centreon-Clapi
./centreon -u admin -p password -o CMD -a ADD -v 'check_esx;2;$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_SERVICEUSERNAME$ -p $_SERVICEPASSWORD$ -l $_SERVICECOMMAND$ -s $_SERVICESUBCOMMAND$'
./centreon -u admin -p password -o CMD -a setparam -v 'check_esx;enable_shell;0’
$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_SERVICEUSERNAME$ -p $_SERVICEPASSWORD$ -l $_SERVICECOMMAND$ -s $_SERVICESUBCOMMAND$ -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$
Centreon-Clapi
./centreon -u admin -p password -o CMD -a ADD -v 'check_esx_limite;2;$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_SERVICEUSERNAME$ -p $_SERVICEPASSWORD$ -l $_SERVICECOMMAND$ -s $_SERVICESUBCOMMAND$ -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$'
./centreon -u admin -p password -o CMD -a setparam -v 'check_esx_limite;enable_shell;0’
3 Les modèles de service
Dans cet article, nous allons créer neuf modèles de service : CPU, MEMOIRE, VMFS, IO WRITE, IO READ, STATUS, ISSUES, NET et SWAP. Ils seront associés à un modèle d'hôte que l'on créera par la suite. Nous utiliserons deux modèles génériques qui auront pour tâche d'appliquer la connexion utilisateur, ces modèles s'appelleront SRV_ESX et SRV_ESX_LIMITE. Ensuite SERV_ESX_CPU, SERV_ESX_MEMOIRE, SERV_ESX_VMFS, SERV_ESX_IO_WRITE, SERV_ESX_IO_READ,SERV_ESX_NET et SERV_ESX_SWAP hériteront de SERV_ESX_LIMITE et SERV_ESX_STATUS et SERV_ESX_ISSUES hériteront de SERV_ESX.
En premiers lieux les modèle de service générique pour les ESX.
En premiers lieux les modèle de service générique pour les ESX.
Centreon-Clapi
./centreon -u admin -p password -o STPL -a ADD -v 'SERV_ESX;modele_esx;generic-service'
./centreon -u admin -p password -o STPL -a setparam -v 'SERV_ESX;check_command;check_esx'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX;username;supervision'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX;password;supervision'
Centreon-Clapi
./centreon -u admin -p password -o STPL -a ADD -v 'SERV_ESX_LIMITE;modele_esx;generic-service'
./centreon -u admin -p password -o STPL -a setparam -v 'SERV_ESX_LIMITE;check_command;check_esx_limite'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_LIMITE;username;supervision'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_LIMITE;password;supervision'
Pour un serveur ESXi 5.x, appliquez ce mot de passe : Esx2013#
Ensuite, nous passons aux modèles de service qui seront associés au modèle d'hôte ESX.
Centreon-Clapi
./centreon -u admin -p password -o STPL -a ADD -v 'SERV_ESX_CPU;ESX_CPU;SERV_ESX_LIMITE'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_CPU;critical;90'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_CPU;warning;80'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_CPU;command;cpu'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_CPU;subcommand;usage'
Centreon-Clapi
./centreon -u admin -p password -o STPL -a ADD -v 'SERV_ESX_IO_READ;ESX_IO_READ;SERV_ESX_LIMITE'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_IO_READ;critical;90'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_IO_READ;warning;40'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_IO_READ;command;io'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_IO_READ;subcommand;read'
Centreon-Clapi
./centreon -u admin -p password -o STPL -a ADD -v 'SERV_ESX_IO_WRITE;ESX_IO_WRITE;SERV_ESX_LIMITE'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_IO_WRITE;critical;90'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_IO_WRITE;warning;40'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_IO_WRITE;command;io'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_IO_WRITE;subcommand;write'
Centreon-Clapi
./centreon -u admin -p password -o STPL -a ADD -v 'SERV_ESX_MEMORY;ESX_MEMORY;SERV_ESX_LIMITE'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_MEMORY;critical;90'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_MEMORY;warning;80'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_MEMORY;command;mem'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_MEMORY;subcommand;usage'
Centreon-Clapi
./centreon -u admin -p password -o STPL -a ADD -v 'SERV_ESX_SWAP;ESX_SWAP;SERV_ESX_LIMITE'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_SWAP;critical;90'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_SWAP;warning;80'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_SWAP;command;mem'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_SWAP;subcommand;swap'
Centreon-Clapi
./centreon -u admin -p password -o STPL -a ADD -v 'SERV_ESX_NET;ESX_NET;SERV_ESX_LIMITE'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_NET;critical;102400'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_NET;warning;204800'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_NET;command;net'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_NET;subcommand;usage'
Centreon-Clapi
./centreon -u admin -p password -o STPL -a ADD -v 'SERV_ESX_ISSUES;ESX_ISSUES;SERV_ESX'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_ISSUES;command;runtime'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_ISSUES;subcommand;issues'
Centreon-Clapi
./centreon -u admin -p password -o STPL -a ADD -v 'SERV_ESX_STATUS;ESX_STATUS;SERV_ESX'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_STATUS;command;runtime'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_STATUS;subcommand;status'
Centreon-Clapi
./centreon -u admin -p password -o STPL -a ADD -v 'SERV_ESX_VMFS;ESX_VMFS;SERV_ESX_LIMITE'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_VMFS;critical;90%'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_VMFS;warning;80%'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_VMFS;command;vmfs'
./centreon -u admin -p password -o STPL -a setmacro -v 'SERV_ESX_VMFS;subcommand;datastore1 -o used'
Vous remarquerez l'astuce du modèle ESX_VFMS. J'ai rajouté l'option -o used dans la variable SUBCOMMAND pour obtenir la valeur d'occupation des données du datastore. Par défaut c'est l'espace libre qui est affiché.
4 Les modèles d'hôte
Maintenant, nous passons au modèle d'hôte. Nous l'appellerons OS-VMware-ESX. Nous associerons les modèles de service précédemment créés.
Centreon-Clapi
./centreon -u admin -p password -o HTPL -a add -v "OS-VMware-ESX;Modele OS VMware ESX;;;Central;"
Centreon-Clapi
./centreon -u admin -p password -o STPL -a sethost -v 'SERV_ESX_CPU;OS-VMware-ESX'
./centreon -u admin -p password -o STPL -a sethost -v 'SERV_ESX_MEMORY;OS-VMware-ESX'
./centreon -u admin -p password -o STPL -a sethost -v 'SERV_ESX_IO_READ;OS-VMware-ESX'
./centreon -u admin -p password -o STPL -a sethost -v 'SERV_ESX_IO_WRITE;OS-VMware-ESX'
./centreon -u admin -p password -o STPL -a sethost -v 'SERV_ESX_VMFS;OS-VMware-ESX'
./centreon -u admin -p password -o STPL -a sethost -v 'SERV_ESX_SWAP;OS-VMware-ESX'
./centreon -u admin -p password -o STPL -a sethost -v 'SERV_ESX_ISSUES;OS-VMware-ESX'
./centreon -u admin -p password -o STPL -a sethost -v 'SERV_ESX_STATUS;OS-VMware-ESX'
./centreon -u admin -p password -o STPL -a sethost -v 'SERV_ESX_NET;OS-VMware-ESX'
5 Création de l'hôte
Voilà, nous arrivons au terme de notre article, nous allons créer notre serveur ESX dans notre supervision. Notre fastidieux travail de préparation des services va être récompensé par la rapidité d'exécution de la création de notre hôte. Se positionner dans le menu Configuration / Hosts. Ajouter un host.
Insérez le nom de l'ESX, son adresse IP et les deux modèles d'hôte generic-host et OS-VMware-ESX. Sauvegardez et constatez le résultat dans la page des services.
Centreon-Clapi
On appliquera les templates pour initialiser les services.
./centreon -u admin -p password -o HOST -a add -v "ESX_4.1;serveur ESX;172.16.209.220;generic-host;Central;Linux-Servers"
./centreon -u admin -p password -o HOST -a addtemplate -v "ESX_4.1;OS-VMware_ESX"
On appliquera les templates pour initialiser les services.
./centreon -u admin -p password -o HOST -a applytpl -v "ESX_4.1"
6 Vérification du fonctionnement
Appliquez la configuration et vérifiez le fonctionnement de votre supervision.
7 Optimisation de la supervision
Plusieurs personnes m'ont fait part de l'augmentation de l'activité du moteur de supervision. Le plugin est assez gourmand en temps d'exécution, il n'est pas rare d'observer un temps supérieur à la seconde. Il est peut-être opportun de mettre en place les connecteurs Perl pour ces commandes. Bien sûr, il vous faudra le moteur de supervision Centreon-Engine et de préférences les dernières versions (1.3.7 pour Centreon-Engine et 2.5.1 pour Centreon).
7.1 Configuration des commandes
Afin d'activer le connecteur Perl pour les commandes respectives check_esx et check_esx_limite, sélectionnez le menu Configuration / Commands / Checks, choisir un des commandes indiquées. Choisissez Perl Connector dans la section Additional Information. Validez pour les deux commandes respectives.
Vérifiez la configuration de votre connecteur (Menu Configuration / Commands / Connector). Dans le cas présent, il n'y a pas de chemin. Vous devrez vérifiez la cohérence avec la configuration du poller. Pour chaque service, on rajoute le binaire du connecteur avec son chemin absolu comme le montre cet exemple du fichier de configuration connectors.cfg.
define connector{ connector_name Perl Connector connector_line /usr/local/centreon-connector/bin/centreon_connector_perl }
7.2 Configuration du poller
Donc, si nous prenons l'exemple ci-dessous, le chemin doit être /usr/local/centreon-connector/bin/ si vous avez installé votre binaire comme indiqué dans mon article sur l'installation des connecteurs.
7.3 Vérification de l'optimisation
Appliquez votre configuration. Vérifiez le démarrage du connecteur dans le fichier log de centreon-engine.
[1406094216] connector 'Perl Connector' start
Une mauvaise configuration des connecteurs provoque ce type d'erreur.
et les messages suivants dans les logs du moteur de supervision.
[1406180017] warning: connector 'Perl Connector': [/usr/local/src/centreon-engine-1.3.7/src/commands/connector.cc:461(_connector_start)] connector start failed: timeout
[1406180018] SERVICE ALERT: supervision;cpu;UNKNOWN;SOFT;1;(Failed to execute command with connector 'Perl Connector')
Comme vous pouvez le constater, la mise en place du connecteur Perl améliore sensiblement le temps d'exécution des plugins.
Il reste encore à configurer les graphiques et de voir la configuration avec Centreon-Clapi. la suite ici