Accueil > ESXi, VMware > Centraliser les fichiers de logs sous ESXi
Avr/1160

La gestion des logs des systèmes ESXi doit être adaptées au fait que sur un reboot de cet hyperviseur, les logs ne restent pas. Et dans le cas d’un appel au support suite à un incident important ayant nécessité un redémarrage d’ESX, l’analyse sera infructueuse.

La recommandation est par conséquent de passer par une collecte externalisée et centralisée des logs générés par les ESXi. Sur ces systèmes, les fichiers de logs sont moins nombreux que sur les ESX et sont les suivants :

  • /var/log/messages
  • /var/log/vmware/hostd.log
  • /var/log/vmware/vpx/vpxa.log

Le fichier « messages » est le plus important. Il contient l’équivalant des fichiers vmkernel et vmkwarning et une copie de l’activité stockée dans le hostd.log.  Pour récupérer les informations de ce fichier, plusieurs possibilités :

  1. placer un serveur syslog distant et récupérera en permanence les nouvelles entrées
  2. configurer une vMA et son daemon vilogger qui ira récupérer les logs à la fréquence configurée
  3. récupérer des archives contenant les fichiers de logs à intervalles réguliers

 

1/Serveur Syslog

Ajouter un serveur Syslog central à la configuration. Pour ceux qui n’en n’ont pas encore, je ne présenterai pas le plus connu des serveurs syslogs gratuits : le Kiwi syslog server. Il devra être installé sur un nouveau serveur, ou le vCenter. Le seul point à surveiller sur la version gratuite est le remplissage des logs, qui ne sont pas circulaires. Une fois ce serveur installé, il faut rediriger les messages syslog des ESXi vers ce nouveau serveur. Cela ce fait le plus simplement par le client vSphere ou alors en ligne de commande. Dans les deux cas, deux valeurs devront être fournies : le nom du serveur distant et le port réseau (défaut : 514 UDP). 

En graphique, cela donne :

En vCLI il faut faire :

C:Program Files (x86)VMwareVMware vSphere CLIbin>vicfg-syslog.pl --server mon_esxi -i
Enter username: root
Enter password:
No remote syslog server configured.
C:Program Files (x86)VMwareVMware vSphere CLIbin>vicfg-syslog.pl --server mon_esxi -s "srv-syslog"
Enter username: root
Enter password:
SOAP Fault:
-----------
Fault string: fault.RestrictedVersion.summary
Fault detail: RestrictedVersionFault
C:Program Files (x86)VMwareVMware vSphere CLIbin>vicfg-syslog.pl --server mon_esxi -s "srv-syslog"
Enter username: root
Enter password:

C:Program Files (x86)VMwareVMware vSphere CLIbin>vicfg-syslog.pl --server mon_esxi -i
Enter username: root
Enter password:
Current remote syslog server settings:
Server name : (srv-syslog)
Server port : 514

Dans le paragraphe ci-dessus, l’erreur notée en Gras Italique Souligné, c’est lorsque l’ESXi est en version gratuite. Cette commande n’est autorisée que sur la version complète. Cette commande est aussi possible en powerCLI par la commande :

[vSphere PowerCLI] C:Program Files (x86)VMwareInfrastructurevSphere PowerCLI> set-vmhostsyslogserver -syslogserver srv-syslog -vmhost mon_esxi -syslogserverport 514
[vSphere PowerCLI] C:Program Files (x86)VMwareInfrastructurevSphere PowerCLI> get-vmhostsyslogserver
Host                                     Port
----                                     ----
srv-syslog                               514

 

2/Déployer une vMA 4.1

Commencer par télécharger la vMA sur le site de VMware (authentification nécessaire). L’archive récupérée doit être décompressée pour disposer du .vmdk et du fichier .ovf nécessaire à l’importation dans un vmware workstation ou par le vSphere client.

Note : Pour faire tourner la vMA en workstation 7, si l’importation ne passe pas, créer une VM de type RHEL5-64b, avec le disque existant pointant sur le vmdk décompressé. Au démarrage il y aura un message, lui dire de ne pas convertir le disque  et probablement des erreurs liées à un file system en read only. Stopper la VM puis créer un clone. Démarrer le clone, et là tout passe bien…

Saisir les informations demandées : adresse réseau, nom d’hôte et mot de passe du compte vi-admin.

Modifier le type de clavier :

[[email protected] ~]$ sudo nano /etc/sysconfig/keyboard

Remplacer « US » par « FR » puis quiter et enregistrer (CTRL+X, Y et Entrer). Rebooter la vMA.

   

Après la reconfiguration du clavier, adapter la configuration de l’horloge, de préférence le NTP pour éviter une mauvaise lecture des logs.

[[email protected] ~]$ sudo rm /etc/localtime
[[email protected] ~]$ sudo ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime

La configuration du vMA est à suivre ici (et reprise à la suite). Par défaut elle n’est pas très capacitive et aura peine à stocker un historique ou simplement des architectures importantes. Dans le lien précédent, en bas de page, il y a une procédure pour l’extension de la partition /var/log. De préférence, les logs récoltés devront être placés à un autre endroit, après avoir ajouté un nouveau disque à la vMA, et l’avoir formaté en LVM. Cette version 4.1 de l’appliance n’est pas montée en LVM de base. Lamodification de chemin se fait /etc/vmware/vma/vma.conf et ne sera prise en compte qu’au redémarrage du vmware-vilogd.

Ajouter un disque (2Go dans mon exemple) , puis valider que le disque est bien vu par le système :

[[email protected] ~]$ sudo fdisk -l
Disk /dev/sda: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14         144     1052257+  82  Linux swap / Solaris
/dev/sda3             145         209      522112+  83  Linux
/dev/sda4             210         652     3558397+   5  Extended
/dev/sda5             210         652     3558366   83  Linux
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table

 Créer une table de partition sur ce nouveau disque :

[[email protected] ~]$ sudo fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-261, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-261, default 261):
Using default value 261
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         261     2096451   8e  Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

Créer les éléments nécessaires à la mise en place de LVM sur le nouveau volume pour une extension plus simple :

[[email protected] ~]$ sudo pvcreate /dev/sdb1
Password:
  Physical volume "/dev/sdb1" successfully created
[[email protected] ~]$ sudo vgcreate vglog /dev/sdb1
  Volume group "vglog" successfully created
[[email protected] ~]$ sudo pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vglog
  PV Size               2.00 GB / not usable 3.32 MB
[[email protected] ~]$ sudo vgdisplay
  --- Volume group ---
  VG Name               vglog
  Format                lvm2
  VG Access             read/write
  VG Status             resizable
  VG Size               2.00 GB
  Free  PE / Size       511 / 2.00 GB
[[email protected] ~]$ sudo lvcreate -L 1.9G vglog
  Logical volume "lvol0" created

Créer un file system sur le nouveau volume :

[[email protected] vglog]$ sudo mkfs -t ext3 /dev/vglog/lvol0

Créer un dossier de point de montage, puis monter le volume et contrôler la volumétrie :

[[email protected] vglog]$ sudo mkdir /media/log
[[email protected] vglog]$ sudo mount -t ext3 /dev/vglog/lvol0 /media/log/
[[email protected] vglog]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             3.3G  1.4G  1.8G  44% /
/dev/sda3             494M   11M  458M   3% /var/log
/dev/sda1              99M   12M   82M  13% /boot
tmpfs                 250M     0  250M   0% /dev/shm
/dev/mapper/vglog-lvol0
                      2.0G   36M  1.9G   2% /media/log

Ajouter une ligne dans le FStab pour monter automatiquement le file system au boot :

[[email protected] vglog]$ sudo nano /etc/fstab
/dev/mapper/vglog-lvol0 /media/log              ext3    defaults        0 0

Modifier la sécurité pour ce nouveau montage afin que le compte vi-admin ait les droits d’écriture :

[[email protected] ~]$ sudo chown vi-admin:root /media/log/

Modifier le fichier de configuration vMA.conf pour identifier le nouveau chemin de stockage des logs : (ex: /media/log) :

[[email protected] log]$ sudo nano /etc/vmware/vMA/vMA.conf

Redémarrer le service pour prendre en compte la modification de chemin :

[[email protected] log]$ sudo service vmware-vilogd restart
Stopping vmware-vilogd:                                    [  OK  ]
Starting vmware-vilogd:                                    [  OK  ]

Connecter le nouveau serveur ESX ou vCenter puis passer la commande de récupération des logs :

[[email protected] ~]$ sudo vifp addserver 192.168.19.128
[[email protected] ~]$ sudo vifp listservers
192.168.19.128  ESXi
[[email protected] ~]$ vilogger enable --server 192.168.19.128 --numrotation 5 --maxfilesize 200 --collectionperiod 30
Target Server: 192.168.19.128
hostd            ... Enabled
messages         ... Enabled
vpxa             ... Enabled

Voici un example de ce qui est récupéré de l’ESXi :

[[email protected] ~]$ ll /media/log/192.168.19.128/
total 176
-rw-r--r-- 1 root root 110571 Apr  6 02:16 hostd.log
-rw-r--r-- 1 root root      0 Apr  6 02:03 hostd.log.1
-rw-r--r-- 1 root root      0 Apr  6 02:03 messages.log
-rw-r--r-- 1 root root      0 Apr  6 02:03 messages.log.1
-rw-r--r-- 1 root root  59435 Apr  6 02:16 vpxa.log
-rw-r--r-- 1 root root      0 Apr  6 02:03 vpxa.log.1

 

La vMA remonte bien les fichiers hostd.log, messages et vpxa.log. Si elle est connectée à un vCenter elle remonte le vpxd.log, mais pas les logs des ESXi connectés au vCenter! Il faut donc établir une connexion entre la vMA et le vCenter, et entre la vMA et les ESXi. Tous les logs seront alors stockés dans le chemin défini dans un dossier distinct contenant le nom de la machine distante.

3/Archives de logs

Enfin, la récupération d’une archive contenant les différents fichiers de logs. Comme le déport du serveur syslog, cela peut être fait en interface graphique (vsphere client) et en ligne de commande (powercli). Les procédures de récupération sont toutefois différentes et en cas de panne ne permettrons pas forcément de trouver trace de l’incident dans les logs si ceux-ci ont été récupérés bien plus tôt.

  • Récupération par le raccourci du menu démarrer (pouvant être plannifié) :

 

Ce Log ne contient que les logs du vCenter, et pas ceux des ESXi.

  • Récupération par le client vSphere :

 

En séléctionnant les éléments de types ESXi, l’archive qui sera générée comportera bien les logs des différents éléments de l’arborescence. Les logs des hyperviseurs seront contenus dans une archive .tgz dans l’archive globale .zip qui contient aussi les logs du vcenter.

  • Récupération par PowerShell :
[vSphere PowerCLI] C:Program Files (x86)VMwareInfrastructurevSphere PowerCLI> connect-viserver 192.168.x.x
AVERTISSEMENT : There were one or more problems with the server certificate:
* The X509 chain could not be built up to the root certificate.
* The certificate's CN name does not match the passed value.
Name                           Port  User
----                           ----  ----
192.168.x.x                 443   root
[vSphere PowerCLI] C:Program Files (x86)VMwareInfrastructurevSphere PowerCLI> get-log -bundle -destinationpath c:tmp
Data
----
c:tmpvmsupport-52c0c9cf-c30b-13ce-de04-c442a0d5ba9b.tgz

Les données collectées (de l’ESXi connecté par la commande connect-viserver)  par cette commande sont les mêmes que celles récupérées par l’interface vSphere client lorsque l’ESXi est sélectionné. Elles sont stockées, là aussi dans une archive .tgz.

  1. Pas encore de commentaire
  1. Pas encore de trackbacks