Nutanix est un formidable outil capable de bien des choses pour la virtualisation, avec des fonctions de redondance propres à l'hyperconvergence, mais aussi de gains de performances et d'optimisation du hardware avec de nombreuses technologies, dont la compression fait partie.

Cependant, tout outil n'est pas à l'abri de pannes, qu'elles soient logicielles, matérielles, ou humaines.

Récemment, nous avons fait face à une explosion incompréhensible de la volumétrie sur certains containers. Après avoir analysé et corrigé la source du problème, nous avions besoin de remonter les informations de compression (compression qui fonctionnait très mal à cause d'un problème hardware mettant un des hôtes en carafe) afin de nous assurer que les taux redescendaient à un niveau acceptable. Cependant, nous avions besoin d'avoir une vue tracée sur X jours, collectée toutes les heures, ce qui excluait une supervision manuelle en se connectant à Prism.

Heureusement, Nutanix a trouvé bon de fournir un snappin permettant l'administration à distance, et laissant libre court à ma fièvre codeuse :)

La compression est faite au niveau d'un container, il vous faudra donc connaître l'identifiant de chaque container (disponible depuis la CLI ou depuis Prism), ainsi que les noms des métriques additionnelles que vous souhaitez ajouter. Le script va se connecter à un Cluster Nutanix (avec des identifiants chiffrés au préalable, voir ici si vous voulez savoir comment faire)

Vous pouvez télécharger le script sur mon espace git personnel.

#ajout du snappin
Add-PSSnapin NutanixCMDletsPSSnapin

#l'ip du cluster que nous allons interroger
$clusterip = "10.0.0.100"

#un identifiant ayant possibilité de se connecter
$username = 'user@domain.fr'

#le mot de passe lié à cet utilisateur
$password = (Get-Content C:\users\moi\motdepassechiffré.txt | ConvertTo-SecureString)

#création d'une connexion

$connection = Connect-NTNXCluster -Server $ip -UserName $username -Password $password -ForcedConnection -AcceptInvalidSSLCerts
if ($connection.isconnected -eq $false)
{
    exit 20
}

#id du container recherché

$id = "00042dc6-1b11-a279-6b43-246e960c61c2::44330611"

#on essaie d'obtenir les informations de compression, on exit avec un code d'erreur 30 si une erreur se produit. Vous pouvez ajouter dans la partie catch{} toute action supplémentaire qui vous permettrait d'avoir du debug.

try
{
    $stats = Get-NTNXContainerStat -Id $id -Metrics data_reduction.overall.saving_ratio_ppm,data_reduction.compression.saving_ratio_ppm -ErrorAction Stop
}
catch
{
    exit 30
}
#on prend la date et heure actuelle
$now = Get-Date

#on exporte nos informations en ajout d'un fichier CSV qui sera dans C:\Temp et qui aura pour nom la date du jour.
try{
    [pscustomobject]@{
    "date" = $now.ToShortDateString()
    "heure" = $now.ToShortTimeString()
    "métrique 1" = $stats[0].metric
    "valeur 1" = $stats[0].values[0] / 1000000
    "métrique 2" = $stats[1].metric
    "valeur 2" = $stats[1].values[0] / 1000000
    } | Export-Csv -Delimiter ";" -NoTypeInformation -Append -Encoding UTF8 -Path "C:\Temp\compression_$($now.ToShortDateString().Replace("/","_")).csv" -ErrorAction Stop
}
catch
{
    exit 40
}

De là, vous pourrez avoir une vue et un suivi sur la compression Nutanix par le biais de fichiers CSV.

Ajouter un commentaire

Article précédent Article suivant