Menu


Stacks Image 75614
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.
Stacks Image 4889
La page d'accueil de l'ESXi

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.
Stacks Image 75646
Création de l'utilisateur supervision
Nous allons créer l'utilisateur supervision mot de passe Esx2013#. Donnez les droits en lecture seule à l'utilisateur supervision.
Stacks Image 75651
Autorisation Lecture seule pour 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 :
$ /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.
Stacks Image 75713
Liste des modes du plugin apps::vmware::connector::plugin associés aux objets VMware

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
Stacks Image 75692
La synchronisation du temps doit être parfaite
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.

ntp-esxi

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.
Stacks Image 75716
Création de l'utilisateur supervision
Stacks Image 75722
L'utilisateur est créé.
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.
Stacks Image 75719
Ajouter un utilisateur du domaine vsphere.local
Stacks Image 75725
Affectez le rôle lecture seule pour supervision.
Stacks Image 75728
Etat des utilisateurs 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 :
$ /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.
comments powered by Disqus