Maintenant que notre connecteur Centreon-VMware est prêt, nous allons découvrir comment nous allons nous connecter à un ESXi ou un vCenter.
1 Connexion à un hôte ESXi
Dans un premier temps, nous allons nous connecter directement sur un ESXi. Dans mon exemple, j'utilise un ESXi 5.5. Celui-ci est installé avec VMware Fusion avec une installation minimum. Voici la copie d'écran de cet hôte. Je l'ai nommé esxmaison72 et il a pour adresse IP 192.168.0.121.
1.1 Création d'un utilisateur pour la supervision
Nous utiliserons un utilisateur spécifique avec son mot de passe associé pour interroger le serveur ESXi afin d'éviter l'utilisation administrateur root. Pour créer cet utilisateur, connectez-vous à l'ESXi avec vSphere client.
Nous allons créer l'utilisateur supervision mot de passe Esx2013#. Donnez les droits en lecture seule à l'utilisateur supervision.
1.2 Configuration du connecteur Centreon-VMware
Nous allons éditer le fichier de configuration du connecteur.
vi /etc/centreon/centreon_vmware
Saisissez les paramètres de l'utilisateur supervision.
%centreon_vmware_config = ( vsphere_server => { 'default' => {'url' => 'https://192.168.0.121/sdk', 'username' => 'supervision', 'password' => 'Esx2013#'} } ); 1;
Lancez le service centreon_vmware
service centreon_vmware start
Nous pouvons utiliser les plugins Centreon pour récupérer les informations que l'on transmettra à la supervision Centreon. Dans notre exemple, nous utiliserons un poller qui se connectera au serveur ou est installé le connecteur Centreon-VMware. Pour la récupération des données, nous avons besoin du nom exact de l'ESXi qui est fourni par le connecteur. Nous utiliserons le mode getmap du plugin apps::vmware::connector::plugin.
Connectez-vous sur le poller avec l'utilisateur centreon-engine et lancez la commande suivante :
Connectez-vous sur le poller avec l'utilisateur centreon-engine et lancez la commande suivante :
$ /usr/lib/centreon/plugins/centreon_plugins.pl --plugin=apps::vmware::connector::plugin --custommode=connector --connector-hostname=172.16.209.60 --container=default --mode=getmap
Vous remarquerez le paramètre connector-hostname= 172.16.209.60 indiquant l'adresse IP de la machine où se trouve le connecteur. Par défaut, il établit une connexion TCP sur le port 5700. Voici un exemple de résultat.
List ESX host(s): esxmaison72.localdomain [v5.5.0] : vmdeb8 [poweredOff]
Le résultat indique le nom de l'ESXi qui se nommera esxmaison72.localdomain. Vous avez aussi le nom d'une VM non-démarré. Enfin, voici plusieurs exemples d'utilisation des plugins Centreon.
1.3 Exemple du plugin Centreon apps::vmware::connector::plugin pour un ESXi
1.3a santé d'un ESXi
$ /usr/lib/centreon/plugins/centreon_plugins.pl --plugin=apps::vmware::connector::plugin --custommode=connector --connector-hostname=172.16.209.60 --container=default --verbose --mode=health-host --esx-hostname='esxmaison72.localdomain' --filter --disconnect-status='ok' OK: 'esxmaison72.localdomain' 84 health checks are green | 'problems'=0;;;0;84 Checking esxmaison72.localdomain 84 health checks are green
1.3b alarmes d'un ESXi
$ /usr/lib/centreon/plugins/centreon_plugins.pl --plugin=apps::vmware::connector::plugin --custommode=connector --connector-hostname=172.16.209.60 --container=default --verbose --mode=alarm-host --esx-hostname='esxmaison72.localdomain' OK: No current alarms on host(s) | 'alarm_warning'=0;;;0; 'alarm_critical'=0;;;0; Checking host esxmaison72.localdomain 0 warn alarm(s) found(s) - 0 critical alarm(s) found(s)
1.3c nombre de VM dans un ESXi
$ /usr/lib/centreon/plugins/centreon_plugins.pl --plugin=apps::vmware::connector::plugin --custommode=connector --connector-hostname=172.16.209.60 --container=default --verbose --mode=countvm-host --esx-hostname='esxmaison72.localdomain' OK: 'esxmaison72.localdomain' 0 VM(s) poweredon - 'esxmaison72.localdomain' 1 VM(s) poweredoff - 'esxmaison72.localdomain' 0 VM(s) suspended | 'poweredon'=0;;;0;1 'poweredoff'=1;;;0;1 'suspended'=0;;;0;1 'esxmaison72.localdomain' 0 VM(s) poweredon 'esxmaison72.localdomain' 1 VM(s) poweredoff 'esxmaison72.localdomain' 0 VM(s) suspended
1.3d mesure du cpu d'un ESXi
$ /usr/lib/centreon/plugins/centreon_plugins.pl --plugin=apps::vmware::connector::plugin --custommode=connector --connector-hostname=172.16.209.60 --container=default --verbose --mode=cpu-host --esx-hostname='esxmaison72.localdomain' OK: 'esxmaison72.localdomain' Total Average CPU usage '2.07%' on last 0 min | 'cpu_total'=2.07%;;;0;100 'cpu_total_MHz'=110.00MHz;;;0;5320 'cpu0'=1.94%;;;0;100 'cpu1'=2.20%;;;0;100 'esxmaison72.localdomain' Total Average CPU usage '2.07%' on last 0 min
En effet, si le serveur ESXi n'a pas une synchronisation du temps parfaite, non seulement, vous aurez des problèmes avec votre infrastructure VMware mais aussi avec la supervision. Voici un exemple :
$ /usr/lib/centreon/plugins/centreon_plugins.pl --plugin=apps::vmware::connector::plugin --custommode=connector --connector-hostname=172.16.209.60 --container=default --verbose --mode=cpu-host --esx-hostname='esxmaison72.localdomain'
UNKNOWN: Cannot get value for counters (Maybe, object(s) cannot be reached: disconnected, not running, time not synced (see time-host mode),...) |
En utilisant le mode time-host, on s'aperçoit que notre ESXi n'est pas du tout à l'heure avec un offset à 464991 seconde de retard soit 4 jours de retard ! :
$ /usr/lib/centreon/plugins/centreon_plugins.pl --plugin=apps::vmware::connector::plugin --custommode=connector --connector-hostname=172.16.209.60 --container=default --verbose --mode=time-host --esx-hostname='esxmaison72.localdomain' --warning-time=-10:10 --critical-time=-15:15
CRITICAL: 'esxmaison72.localdomain' Time offset 431988 second(s) : 2017-03-29T14:44:42.018368Z | 'offset'=431988.981631994s;-2:2;-5:5;0;
'esxmaison72.localdomain' date: 2017-03-29T14:44:42.018368Z, offset: 431988.981631994 second(s)
Un ajout de serveur de temps corrigera ce défaut.
Lorsqu'on vérifie le cpu de nouveau, nous n'avons plus de souci.
$ /usr/lib/centreon/plugins/centreon_plugins.pl --plugin=apps::vmware::connector::plugin --custommode=connector --connector-hostname=172.16.209.60 --container=default --verbose --mode=time-host --esx-hostname='esxmaison72.localdomain' --warning-time=-10:10 --critical-time=-15:15
OK: 'esxmaison72.localdomain' Time offset 6 second(s) : 2017-04-03T14:48:51.781506Z | 'offset'=6.21849393844604s;-10:10;-15:15;0;
'esxmaison72.localdomain' date: 2017-04-03T14:48:51.781506Z, offset: 6.21849393844604 second(s)
1.3e mesure de la latence des datastores d'un ESXi
$ /usr/lib/centreon/plugins/centreon_plugins.pl --plugin=apps::vmware::connector::plugin --custommode=connector --connector-hostname=172.16.209.60 --container=default --verbose --mode=datastore-host --esx-hostname='esxmaison72.localdomain' OK: All Datastore latencies are ok | 'trl_datastore1'=0.00ms;;;0; 'twl_datastore1'=0.00ms;;;0; 'esxmaison72.localdomain' read on 'datastore1' is 0.00 ms 'esxmaison72.localdomain' write on 'datastore1' is 0.00 ms
1.3f Supervision des datastores d'un ESXi
$ /usr/lib/centreon/plugins/centreon_plugins.pl --plugin=apps::vmware::connector::plugin --custommode=connector --connector-hostname=172.16.209.60 --container=default --verbose --mode=datastore-usage --datastore-name='datastore1' OK: Datastore 'datastore1' Total: 32.50 GB Used: 8.95 GB (27.54%) Free: 23.55 GB (72.46%) Provisioned: 9.68 GB (29.77%) | 'used'=9609150464B;;;0;34896609280 'provisioned'=10388513236B;;;0;34896609280 Datastore 'datastore1' Total: 32.50 GB Used: 8.95 GB (27.54%) Free: 23.55 GB (72.46%) Provisioned: 9.68 GB (29.77%)
1.3g Uptime d'un ESXi
$ /usr/lib/centreon/plugins/centreon_plugins.pl --plugin=apps::vmware::connector::plugin --custommode=connector --connector-hostname=172.16.209.60 --container=default --verbose --mode=time-host --esx-hostname='esxmaison72.localdomain' --warning-time=-10:10 --critical-time=-15:15 OK: 'esxmaison72.localdomain' Time offset 0 second(s) : 2017-04-03T16:59:21.831326Z | 'offset'=-0.831326007843018s;-10:10;-15:15;0; 'esxmaison72.localdomain' date: 2017-04-03T16:59:21.831326Z, offset: -0.831326007843018 second(s)
2 Connexion à un vCenter
2.1 Création d'un utilisateur pour la supervision
Maintenant que nous avons vu la connexion à un hôte ESXi, nous allons utiliser désormais un vCenter. Commençons par créer un utilisateur dédié à la supervision. Connectons-nous au vCenter. Dirigez-vous vers Utilisateurs et groupes vCenter. Créez un nouvel utilisateur dans le domaine vsphere.local.
Il faut lui affecter un rôle dans l'objet vCenter Servers, Actions gérer. Ajoutez le rôle Lecture Seule sur toute l'arborescence du vCenter.
2.2 Configuration du connecteur Centreon-VMware
Nous allons éditer le fichier de configuration du connecteur. Nous allons garder les paramètres précédents en ajoutant les paramètre de connexion du vCenter. Mais à quoi ça sert me direz vous, car le vCenter gère l'ESXi ? C'est juste pour vous montrer qu'il est possible de gérer plusieurs vCenter ou plusieurs ESXi différents. Il vous restera à identifier la connexion dans vos plugins.
vi /etc/centreon/centreon_vmware
Rajoutez les paramètres de l'utilisateur supervision pour le vCenter. On nommera le nom de connexion vCenter.
%centreon_vmware_config = ( vsphere_server => { 'default' => {'url' => 'https://192.168.0.121/sdk', 'username' => 'supervision', 'password' => 'Esx2013#'}, 'vCenter' => {'url' => 'https://192.168.0.120/sdk', 'username' => 'supervision@vsphere.local', 'password' => 'vCenter2016#'}, } ); 1;
Redémarrez le service centreon_vmware
service centreon_vmware restart
Nous pourrions aussi vérifier le bon fonctionnement en lançant cette ligne de commande (attention le service centreon_vmware doit être arrêté)
/usr/bin/perl /usr/bin/centreon_vmware.pl --config=/etc/centreon/centreon_vmware.pm 2017-04-04 17:09:36 - Create vsphere sub-process for 'vCenter' 2017-04-04 17:09:36 - Create vsphere sub-process for 'default' 2017-04-04 17:09:36 - 'vCenter' init begin 2017-04-04 17:09:36 - 'vCenter' init done 2017-04-04 17:09:36 - 'vCenter' Vsphere connection in progress 2017-04-04 17:09:36 - [Server accepting clients] 2017-04-04 17:09:36 - 'default' init begin 2017-04-04 17:09:36 - 'default' init done 2017-04-04 17:09:36 - 'default' Vsphere connection in progress 2017-04-04 17:09:37 - 'default' Vsphere connection ok 2017-04-04 17:09:37 - 'default' Create perf counters cache in progress 2017-04-04 17:09:37 - 'default' Create perf counters cache done 2017-04-04 17:09:37 - 'vCenter' Vsphere connection ok 2017-04-04 17:09:37 - 'vCenter' Create perf counters cache in progress 2017-04-04 17:09:38 - 'vCenter' Create perf counters cache done
Nous allons de nouveau utiliser le plugin Centreon avec le mode getmap pour récupérer les informations que l'on transmettra à la supervision Centreon. Dans notre exemple, nous utiliserons un poller qui se connectera au serveur ou est installé le connecteur Centreon-VMware. Nous utiliserons le mode getmap du plugin apps::vmware::connector::plugin.
Connectez-vous sur le poller avec l'utilisateur centreon-engine et lancez la commande suivante :
Connectez-vous sur le poller avec l'utilisateur centreon-engine et lancez la commande suivante :
$ /usr/lib/centreon/plugins/centreon_plugins.pl --plugin=apps::vmware::connector::plugin --custommode=connector --connector-hostname=172.16.209.60 --container=vCenter --mode=getmap
Vous remarquerez la valeur du paramètre container indiquant la connexion du vCenter configuré dans le connecteur. Voici le résultat.
List ESX host(s): 192.168.0.121 [v5.5.0] : vmdeb8 [poweredOff] vmlinux [poweredOff]
Le résultat indique le nom de l'ESXi qui se nommera comme l'adresse IP 192.168.0.121. Vous avez aussi le nom de deux VM non-démarré. Le résultat est différent de l'exemple précédent sans doute que je n'ai pas respecté quelques préconisations de VMware, il faut savoir que mon installation est une maquette. La configuration est minimale mais ceci dit, c'est un beau cas d'école car on découvre qu'il faut avoir des problèmes de configuration si nous n'indiquons pas le nom exact de l'ESXi en fonction du contexte.
2.3 Exemple du plugin Centreon apps::vmware::connector::plugin pour un vCenter
Voici quelques exemples de plugins non exhaustifs.
2.3a Lister les datacenters
$ /usr/lib/centreon/plugins/centreon_plugins.pl --plugin=apps::vmware::connector::plugin --custommode=connector --connector-hostname=172.16.209.60 --container=vCenter --mode=list-datacenters List datacenter(s): Datacenter Datacenter 1 Datacenter 2
2.3a Visualiser les alarmes
$ /usr/lib/centreon/plugins/centreon_plugins.pl --plugin=apps::vmware::connector::plugin --custommode=connector --connector-hostname=172.16.209.60 --container=vCenter --mode=alarm-datacenter --datacenter=Datacenter OK: No current alarms on datacenter(s) | 'alarm_warning'=0;;;0; 'alarm_critical'=0;;;0;
Il existe encore de nombreux exemples de plugins pour l'infrastructure VMware. Le prochain article sera consacré à l'intégration dans l'interface de Centreon.