Pour pouvoir associer certains champs d'import VMWare avec nos propriétés Shinken, nous avons dû réadapter certains champs :
Dans l'API VMWare, le champs d'import runtime.powerState donne l'état actuel de l'ESX ou de la Machine virtuelle. Sa valeur peut être soit "poweredOn", soit "poweredOff".
Pour pouvoir associer ce champs avec la propriété shinken Activé (enabled en .cfg), nous convertissons les valeurs "poweredOn" / "poweredOff" en 1 / 0 dans un nouveau champs d'import nommé powerStateAsInt.
Champs de la source | Format de retour de l'import | Exemple de valeur de la source |
|---|---|---|
shinken.runtime.powerState | Etat actuel de la machine | 1 ou 0 |
Dans l'API VMWare, le champs d'import config.hardware.device donne les informations complètes de chaque périphérique virtuel appartenant à la machine virtuelle.
La liste étant trop exhaustive, nous récupérons que certaines informations. À l'aide du nouveau champs d'import labelSummaryList, nous récupérons le nom et le récapitulatif des informations de chaque périphérique virtuel pour la machine virtuelle importée.
Champs de la source | Format de retour de l'import | Exemple de valeur de la source |
|---|---|---|
shinken.config.hardware.device.labelSummary | (label = "nom du périphérique", summary = "Récapitulatif des informations") | (label = IDE 0, summary = IDE 0),(label = Network adapter 1, summary = VM Network),(label = Network adapter 2, summary = Test) |
Dans l'API VMWare, le champs d'import runtime.networkRuntimeInfo.netStackInstanceRuntimeInfo nous donne la liste des informations d'exécution de la pile réseau de la machine virtuelle.
La liste étant trop exhaustive, nous avons stocké au sein du nouveau champs d'import netStackInfoAsInt, le champs de l'instance et l'état de cette instance pour chaque machine virtuelle importée.
Champs de la source | Format de retour de l'import | Exemple de valeur de la source |
|---|---|---|
shinken.runtime.networkRuntimeInfo.netStackInstanceRuntimeInfo.instanceState | (instance = "clé de l'instance", state = "état de l'instance") | (instance = defaultTcpipStack, state = active) |
Afin de simplifier la récupération d'IP de l'ESX, nous avons ajouté le champ shinken.config.network.vnic.first avec la première adresse IP que nous trouvons.
config.network.vnic qui est une liste d'objet network.network les adresses IP sont dans le champ network.spec.ip.ipAddress.Champs de la source | Format de retour de l'import | Exemple de valeur de la source |
|---|---|---|
shinken.config.network.vnic.first | Première adresse IP de la machine | 192.168.1.1 |
Pour les VM l'adresse IP est dans le champ : |
Afin de simplifier la récupération des adresses IP de l'ESX, nous avons ajouter le champ shinken.config.network.vnic avec la liste des adresses IP que nous trouvons.
config.network.vnic qui est une liste d'objet network.network les adresses IP sont dans le champ network.spec.ip.ipAddress.Champs de la source | Format de retour de l'import | Exemple de valeur de la source |
|---|---|---|
shinken.config.network.vnic | ["Première adresse IP de la machine", "Deuxième adresse IP de la machine"] | [u'192.168.1.1', u'192.168.1.2'] |
Dans l'API VMWare, le champs d'import datastore nous donne une liste d'objet qui contient les informations des datastores ( disques, métadatas, iso, etc. ) liées aux VMs ou aux ESXs.
Champs de la source | Format de retour de l'import | Exemple de valeur de la source |
|---|---|---|
shinken.datastore | (name = "nom du datastore", summary_capacity = "capacité totale du datastore", summary_type = "type de datastore", summary_freeSpace = "espace libre total du datasotre", summary_url = "url du datastore", summary_uncommitted = "espace non alloué du datastore") | (name = datastore1, summary_capacity = 491505319936, summary_type = VMFS, summary_freeSpace = 199942471680, summary_url = /vmfs/volumes/6034e02b-41d8f1a8-85b2-14187759998c, summary_uncommitted = 97587437547) |
Dans l'API VMWare, le champs d'import disks nous donne la liste d'objet qui contient les informations de chaque disque liées aux VMs.
Champs de la source | Format de retour de l'import | Exemple de valeur de la source |
|---|---|---|
shinken.guest.disk | (capacity = "capacité du disque", diskPath = "emplacement du fichier du disque", freeSpace = "espace libre du disque") | (capacity = 47217381376, diskPath = /, freeSpace = 26512211968),(capacity = 1063256064, diskPath = /boot, freeSpace = 860229632) |
Dans l'API VMWare, le champs d'import network nous donne les noms des réseaux où est connectée la machine virtuelle importée. Nous parcourons chaque objet pour récupérer les informations de chaque réseau afin de retourner une chaîne de caractère contenant le nom des réseaux. Ces informations sont stockées dans le champs d'import shinken.network
Champs de la source | Format de retour de l'import | Exemple de valeur de la source |
|---|---|---|
shinken.network | Réseau 1,Réseau 2 | VMware Network 1,VMware Network 2 |
| Champs de la source | Description |
|---|---|
| name | Nom de la machine |
| shinken.machine_type | Type de machine : VIRTUAL_MACHINE ou HOST |
| runtime.powerState | État d'alimentation de la machine virtuelle |
| runtime.bootTime | Horodatage de la dernière mise sous tension |
| runtime.connectionState | Indique si la machine virtuelle est disponible pour être gérée |
| summary.config.name | Configuration du Nom de l'ESX ou de la machine virtuelle |
| summary.config.product.name | Nom du produit de l'ESX ou de la machine virtuelle |
| summary.config.product.vendor | Vendeur de l'ESX ou de la machine virtuelle |
| summary.config.product.version | Version de l'ESX ou de la machine virtuelle |
| summary.quickStats.overallCpuUsage | Utilisation agrégée du processeur sur tous les cœurs de l'hôte en MHz |
| summary.quickStats.overallCpuDemand | Demande agrégée du processeur sur tous les cœurs de l'hôte en MHz |
| summary.quickStats.overallMemoryUsage | Utilisation de la mémoire physique sur l'hôte en Mo |
| shinken.runtime.powerState | État de la machine ( 1 = allumée, 0 = éteinte ) |
| shinken.network | Nom des réseaux virtuels |
| shinken.datastore | Liste des Datastore ( disques, métadatas, iso, etc. ) |
| Champs de la source | Description |
|---|---|
| config.annotation | Description de la machine virtuelle |
| config.guestFullName | Nom complet de la machine virtuelle |
| config.guestId | Identifiant de la machine virtuelle |
| config.hardware.memoryMB | Quantité de mémoire de la machine virtuelle en Mb |
| config.hardware.numCPU | Nombre de CPU de la machine virtuelle |
| config.hardware.numCoresPerSocket | Nombre de cœurs par CPU pour la machine virtuelle |
| config.uuid | UUID de la machine virtuelle |
| config.version | Version de la machine virtuelle |
| guest.guestFamily | Système d'exploitation de la machine virtuelle |
| guest.hostName | Nom de la machine virtuelle |
| guest.ipAddress | Adresse IP de la machine virtuelle |
| guest.toolsVersionStatus | État de la version actuelle des outils VMware dans le système d'exploitation de la machine virtuelle, s'il est connu ( Déprécié ) |
| guest.toolsVersionStatus2 | État de la version actuelle des outils VMware dans le système d'exploitation de la machine virtuelle, s'il est connu |
| guest.toolsRunningStatus | Indique l'état actuel des outils VMware |
| guest.toolsVersion | Version actuelle des outils VMware (VMware Tools) |
| config.createDate | Date de création de la machine virtuelle |
| config.files.vmPathName | Nom du chemin de fichier de la machine virtuelle |
| config.files.snapshotDirectory | Répertoire des instantanés de la machine virtuelle |
| config.files.suspendDirectory | Répertoire d'une machine virtuelle en suspend |
| config.files.logDirectory | Répertoire des journaux de la machine virtuelle |
| config.hotPlugMemoryLimit | La quantité maximale de mémoire, en Mo, qui peut être ajoutée à une machine virtuelle en cours d'exécution |
| config.initialOverhead.initialMemoryReservation | Surcharge de mémoire requise pour la mise sous tension de la machine virtuelle (en octet) |
| config.initialOverhead.initialSwapReservation | Espace disque requis pour la mise sous tension de la machine virtuelle (en octet) |
| config.instanceUuid | Combinaison de l'UUID du Vcenter et de l'UUID de la machine virtuelle |
| config.modified | Dernière modification de la configuration d'une machine virtuelle |
| config.template | Indique si une machine virtuelle est ou non un modèle |
| config.firmware | Firmware de la machine virtuelle |
| config.hardware.virtualICH7MPresent | Présence de ICH7M virtuel sur une machine virtuelle |
| guest.guestKernelCrashed | État du noyau du système d'exploitation de la machine virtuelle. Si vrai, le noyau du système d'exploitation de la machine virtuelle est tombé en panne |
| guest.guestState | État actuel de la machine virtuelle |
| resourceConfig.cpuAllocation.limit | Limite de l'utilisation d'une machine virtuelle |
| resourceConfig.cpuAllocation.reservation | Quantité de ressource garantie disponible pour la machine virtuelle |
| resourceConfig.memoryAllocation.limit | Limite de l'utilisation de la mémoire d'une machine virtuelle |
| resourceConfig.memoryAllocation.reservation | Quantité de mémoire disponible d'une machine virtuelle |
| runtime.cleanPowerOff | Pour une machine virtuelle hors tension, indique si le dernier arrêt de la machine virtuelle était une mise hors tension normale ou non |
| runtime.maxCpuUsage | Limite maximale actuelle de l'utilisation du processeur |
| runtime.maxMemoryUsage | Limite maximale actuelle de l'utilisation de la mémoire |
| summary.config.template | Drapeau pour déterminer si cette machine virtuelle est un modèle ou non |
| summary.config.cpuReservation | Configuration de la réservation du CPU en MHz |
| summary.config.memoryReservation | Réservation de mémoire configurée en Mo |
| summary.config.numEthernetCards | Nombre d'adaptateur de réseau virtuel |
| summary.config.numVirtualDisks | Nombre de disque virtuel connecté à la machine virtuelle |
| summary.config.product.fullVersion | Version complète de la machine virtuelle |
| summary.quickStats.guestMemoryUsage | Statistiques sur l'utilisation de la mémoire des la machines virtuelles |
| summary.quickStats.hostMemoryUsage | Statistiques sur l'utilisation de la mémoire de l'hôte |
| summary.quickStats.distributedCpuEntitlement | Statistiques sur les droits CPU distribuée |
| summary.quickStats.distributedMemoryEntitlement | Statistiques sur les droits mémoire distribuée |
| summary.quickStats.staticCpuEntitlement | Statistiques sur les droits des statiques CPU |
| summary.quickStats.staticMemoryEntitlement | Statistiques sur les droits des statiques mémoire |
| summary.quickStats.privateMemory | Statistiques sur la mémoire privée |
| summary.quickStats.sharedMemory | Statistiques sur la mémoire partagée |
| summary.quickStats.swappedMemory | Statistiques sur la mémoire échangée |
| summary.quickStats.balloonedMemory | Statistiques sur la mémoire gonflée |
| summary.quickStats.consumedOverheadMemory | Statistiques sur la consommation de mémoire volatile |
| summary.quickStats.ftLogBandwidth | Statistiques sur la bande passante du Log FT |
| summary.quickStats.ftSecondaryLatency | Statistiques sur la latence secondaire FT |
| summary.quickStats.compressedMemory | Statistiques sur la mémoire compressée |
| summary.quickStats.uptimeSeconds | Statistiques sur le temps d'activité en seconde |
| summary.quickStats.ssdSwappedMemory | Statistiques sur la mémoire échangeable SSD |
| shinken.config.hardware.device.labelSummary | Ensemble de périphériques virtuels appartenant à la machine virtuelle |
| shinken.guest.disk | Liste des disques de la machine virtuelle |
| Champs de la source | Description |
|---|---|
| config.product.fullName | Nom complet de l'ESX |
| config.product.osType | Système d'exploitation de l'ESX |
| config.datastorePrincipal | Utilisateur principal de la banque de données |
| config.product.licenseProductName | Nom du produit sous licence |
| config.product.licenseProductVersion | Version du produit sous licence |
| config.product.productLineId | Type de l'ESX |
| hardware.biosInfo.biosVersion | La version actuelle du BIOS |
| hardware.cpuInfo.hz | Vitesse du processeur par cœur |
| hardware.cpuInfo.numCpuCores | Nombre de cœurs CPU physique sur l'hôte |
| hardware.cpuInfo.numCpuPackages | Nombre de package CPU physique sur l'hôte |
| hardware.cpuInfo.numCpuThreads | Nombre de thread physique du CPU sur l'hôte |
| hardware.memorySize | Quantité totale de mémoire physique sur l'hôte en octet |
| hardware.systemInfo.model | ID du modèle de système |
| hardware.systemInfo.uuid | ID du BIOS |
| runtime.hostMaxVirtualDiskCapacity | La capacité maximale théorique de disque virtuel prise en charge par cet hôte |
| runtime.inMaintenanceMode | Indique si l'hôte est en mode maintenance ou non |
| runtime.inQuarantineMode | Indique si l'hôte est en mode quarantaine ou non |
| summary.quickStats.uptime | Durée de fonctionnement du système de l'hôte en seconde |
| summary.rebootRequired | Indique si l'hôte nécessite ou non un redémarrage en raison d'un changement de configuration |
| summary.hardware.vendor | L'identification du vendeur de matériel |
| summary.hardware.model | L'identification du modèle de système |
| summary.hardware.uuid | L'identification du BIOS matériel |
| summary.hardware.memorySize | La taille de la mémoire physique en octet |
| summary.hardware.cpuModel | Le modèle CPU |
| summary.hardware.cpuMhz | La vitesse des cœurs de l'unité centrale. Il s'agit d'une valeur moyenne s'il y a plusieurs vitesses |
| summary.runtime.inMaintenanceMode | Indique si l'hôte est en mode de maintenance ou non. Ce drapeau est activé lorsque l'hôte est entré en mode de maintenance. Il n'est pas activé pendant la phase d'entrée en mode de maintenance |
| summary.runtime.bootTime | Le moment où l'hôte a été démarré |
| summary.runtime.hostMaxVirtualDiskCapacity | La capacité maximale du disque virtuel pour l'hôte |
| summary.config.port | Le numéro de port |
| summary.config.product.fullName | Le nom complet du produit, y compris les informations sur la version |
| summary.config.product.build | Numéro de version pour le serveur sur lequel cet appel est effectué ( ne concerne pas l'API ) |
| summary.config.product.apiVersion | La version de l'API sous forme de chaîne de caractères séparés par des points |
| summary.config.product.licenseProductName | Nom du produit de l'ESX |
| summary.config.product.licenseProductVersion | Version produit de l'ESX |
| config.network.dnsConfig.dhcp | Indiquer si le DHCP (Dynamic Host Control Protocol) est utilisé ou non pour déterminer automatiquement la configuration du DNS |
| config.network.dnsConfig.hostName | La partie nom d'hôte du nom DNS |
| config.network.dnsConfig.domainName | La partie nom de domaine du nom DNS |
| config.network.ipRouteConfig.defaultGateway | L'adresse de la passerelle par défaut |
| config.network.ipV6Enabled | Si IpV6 est activé |
| config.network.atBootIpV6Enabled | Si au démarrage, IpV6 est activé |
| systemResources.config.cpuAllocation.reservation | Quantité de ressources CPU garantie disponible pour la machine virtuelle ou le pool de ressource en MHz |
| systemResources.config.cpuAllocation.limit | L'utilisation du CPU d'une machine virtuelle ou d'un pool de ressource ne dépassera pas cette limite, même si des ressources sont disponibles |
| systemResources.config.memoryAllocation.reservation | Quantité de mémoire de ressource garantie disponible pour la machine virtuelle ou le pool de ressource en MB |
| systemResources.config.memoryAllocation.limit | L'utilisation de la mémoire d'une machine virtuelle/du pool de ressources ne dépassera pas cette limite, même si des ressources sont disponibles |
| shinken.runtime.networkRuntimeInfo.netStackInstanceRuntimeInfo.instanceState | Décrit les informations relatives à l'exécution des instances de la pile réseau |
| shinken.config.network.vnic.first | Adresse IP de la première interface réseau |
| shinken.config.network.vnic | Adresse IP de toutes les interfaces réseau |
Vous pouvez modifier la liste des champs récupérées par la source, pour voir les nouvelles données dans Shinken vous devrez en plus ajouter un mapping (Voir Le mapping des informations collectées).
Le fichier à modifier est ici :
/etc/shinken-user/source-data/source-data-[nom de la source]/configuration/collected_fields_from_source/list_of_collected_fields.json
Exemple de chemin pour la source livrée par défaut :
/etc/shinken-user/source-data/source-data-synchronizer-collector-vmware/configuration/collected_fields_from_source/list_of_collected_fields.json
Le fichier list_of_collected_fields.json doit respecter le format suivant :
Il est possible d'ajouter des commentaires dans ce fichier. Toutes les lignes qui commencent par le caractère # seront considérés comme des commentaires. |
{
"hosts": {
"name": "true",
"shinken.machine_type" : "true",
"runtime.powerState": "false"
}
} |
Les champs livrées dans le fichier en commentaire du fichier par défaut ont toutes été testées et peuvent s'importer dans Shinken.
Il est possible d'ajouter des champs supplémentaires parmi plus de 3000 champs de l'API VMWare mais tous les champs n'ont pas été testées par nos soins et donc certaines données pourraient ne pas être exploitables.
Par défaut nous avons documenté un certain nombre de champs, mais comme il est possible d'ajouter des champs récupérés par la source, il est aussi possible d'ajouter une description pour ces champs.
Les fichiers à modifier sont ici :
/etc/shinken-user/source-data/source-data-[nom de la source]/configuration/collected_fields_from_source/description_of_collected_fields_en.json
/etc/shinken-user/source-data/source-data-[nom de la source]/configuration/collected_fields_from_source/description_of_collected_fields_fr.json
Exemple de chemin pour la source livrée par défaut :
/etc/shinken-user/source-data/source-data-synchronizer-collector-vmware/configuration/collected_fields_from_source/description_of_collected_fields_en.json
/etc/shinken-user/source-data/source-data-synchronizer-collector-vmware/configuration/collected_fields_from_source/description_of_collected_fields_fr.json
Vous pouvez modifier le fichier fr ou en fonction de la langue de votre installation
Les fichiers de description doivent respecter le format suivant :
Il est possible d'ajouter des commentaires dans ce fichier. Toutes les lignes qui commencent par le caractère # seront considérées comme des commentaires. |
{
"hosts": {
"name": "Nom de la machine",
"shinken.machine_type" : "Type de machine VIRTUAL_MACHINE ou HOST",
"runtime.powerState": "Etat d'alimentation de la machine virtuelle"
}
} |