Charge des VM/Hôtes/Cluster en PowerCLI

Update 2014.10.31: Suite a un commentaire demandant l’ajout de la charge des datastores, nous l’avons ajouté dans le script 🙂

Pour donner suite à notre précédent post sur la charge des cluster en PowerCLI, une petite discussion avec Alan Renouf nous a convaincu de faire un équivalent pour d’autres objets vCenter, l’idée étant d’avoir une fonction Get-Load universelle qui afficherait la charge de l’objet passé en pipeline ou spécifié explicitement, Piece Of Cake !

En y réfléchissant, on voulait que le comportement du cmdlet soit un peu identique à celui de Get-View, par exemple la possibilité de l’utiliser tel que :

Get-View -ViewType VirtualMachines
Get-VM | Get-View
Get-View -ViewType HostSystem
Get-VMHost | Get-View

Partant de là, on a regardé la définition du cmdlet Get-View en s’aidant des commandes proxy, par exemple via la commande suivante :

[System.Management.Automation.ProxyCommand]::create((New-Object System.Management.Automation.CommandMetaData(Get-Command Get-View)))

On a donc fait une fonction PowerCLI qui va afficher graphiquement dans la console la charge de différents type d’objets (machine virtuelle, hôte ESXi, cluster vSphere ou datastore). Cette fonction peut être utilisée de plusieurs manières, soit en mode standalone :

Get-Load -LoadType VirtualMachine
Get-Load -LoadType HostSystem
Get-Load -LoadType ClustercomputeResource
Get-Load -LoadType Datastore

Une autre manière de l’utiliser est de lui passer des objets via un pipeline:

Get-VM "vm*" | Get-Load
Get-VMHost | Get-Load
Get-Datastore -Location "storagepod01" | Get-Load
Get-Cluster -Location "folder01" | Get-Load

Pour l’instant, il n’y a que ces 4 types d’objets qui sont supportés, si vous essayez d’en utiliser d’autres on saura vous le rappeler :p

La fonction affichera donc en console la charge des objets demandés :

Le script Get-Load.ps1 est disponible au téléchargement sur notre page GitHub: https://github.com/v-team/powercli-toolbox

16 comments

  1. Pingback: Visualiser la charge des VMs, Hosts et Clusters avec PowerCli | My-PowerShell

  2. Bonjour,

    Je cherche également à réaliser un script qui affiche dans la console la charge CPU des VM présente sur un VCenter, le problème étant que, lorsque je récupère votre script, la console m’affiche que la commande Get-Load n’est pas reconnu.

    Etant débutant en powercli, je ne trouve pas mon erreur.

    Merci d’avance

    • Il vous faut tout d’abord « sourcer » le script afin de pouvoir utiliser la fonction.
      Pour cela, dans votre console PowerCLI, vous devez lancer (dans le dossier qui contient le script que vous aurez télécharger sur cette page) :

      . .\Get-Load.ps1
  3. super script … debutant dans le scripting comment lancer votre script.
    je lance la console powercli puis sur l’invite je « colle » le script D:\scripts\Get-Load.ps1
    apparement cela s’execute car je n’ai pas d’erreur par contre rien ne s’affiche.
    merci de votre aide

    • Bonjour,
      Le script contenant une fonction, il vous faut tout d’abord « sourcer » le script pour après exécuter la fonction.
      Dans votre cas, si le script se trouve dans D:\scripts\ il faut que vous lanciez les commandes suivantes après avoir lancé une console PowerCLI :

      cd D:\scripts
      . .\Get-Load.ps1
      Get-Load

      La ligne 2 vous permet de sourcer le script, c’est à dire d’exécuter le script dans le contexte utilisateur courant (c’est à dire votre console)
      La ligne 3 permet de lancer la fonction (qui a été chargée via la ligne 2)

  4. Pingback: Inventaire ASCII Art des ressources vCenter | vmdude

  5. Bonjour,

    tout d’abord merci pour ce script ! Je souhaiterai savoir comment je peux récupérer les valeurs CPU et MEM que vous affichez pour VM-Host-Load ?
    Ceci afin d’intégrer un test dans un autre script. Si la charge CPU et/ou MEM dépassent un seuil, cela déclenchera une action.
    Merci beaucoup pour le coup de main.

    • ah, finalement c’est bon ^^ il suffisait de récupérer le calcul dans une variable, tout bêtement. J’avais testé avant de posté, mais je n’avais pas ressourcé le script, donc ma modif’ n’avait pas été prise en compte… Merci encore pour ce script, ça va bien me faciliter la tâche.

  6. Bonjour,

    Très bon script, merci beaucoup.

    J’aimerai savoir si dans cet esprit là on peut avoir l’état d’occupation des Datastores ?

  7. Testé à l’instant, fonctionnel !

    Au top !

    Merci encore et je n’hésiterai pas alors à revenir ici 🙂

Laisser un commentaire

Required fields are marked *.