Contadores de rendimiento desde la PowerCLI
Esta semana me gustaría retomar el scripting con PowerCLI para trabajar en esta ocasión con los contadores de rendimiento de nuestra plataforma vSphere.
Para obtener la información de nuestra plataforma contaremos con dos cmdlets principales, complementarios entre sí, encargados de darnos la información que requeríamos de nuestro entorno. Básicamente se tratan de:
- Get-Stat, que es el que realmente nos devuelve la información acerca de los contadores de rendimiento que requiramos.
- Get-StatType, que nos informa de los contadores disponibles para el objeto que queramos interrogar, ya sea una máquina virtual, un host ESX(i) o un vCenter.
Si os parece bien, en lugar de ponerme a enumerar los parámetros de cada uno de los cmdlets Get-Stat y Get-StatType, vemos cómo usarlos mediante un par de ejemplos.
En su ejecución más simple, sin parámetro ninguno, este cmdlet nos devolverá el promedio de los contadores de rendimiento normales en el intervalo de muestreo, que por defecto se establece en 20 segundos, para host o vCenter al que estemos conectados. Por ejemplo:
PowerCLI> Get-Stat
MetricId Timestamp Value Unit Instance
——– ——— —– —- ——–
mem.usage.average 11/05/2011 15:27:00 90,42 %
mem.usage.average 11/05/2011 15:26:40 90,43 %
mem.usage.average 11/05/2011 15:26:20 90,43 %
…
net.usage.average 11/05/2011 15:27:00 0 KBps
net.usage.average 11/05/2011 15:26:40 0 KBps
net.usage.average 11/05/2011 15:26:20 0 KBps
…
disk.usage.average 11/05/2011 15:27:00 129 KBps
disk.usage.average 11/05/2011 15:26:40 98 KBps
disk.usage.average 11/05/2011 15:26:20 125 KBps
…
Si sólo estamos interesados en alguno de los grupos genéricos usaremos los modificadores Memory, CPU, Disk o Network según el que nos interese.
Sin embargo, como todos sabemos, los contadores de rendimiento en vmware no se limitan solo al Host o al vCenter, sino que se extienden a máquinas virtuales, resource pools, etc… Para acceder a esta información sólo tendremos que usar el parámetro Entity al que le pasaremos un array con los objetos sobre los que queramos información.
Por ejemplo, como ya vimos en otro post anterior, el cmdlet Get-VM nos devuelve todas las máquinas virtuales registradas en un host, cluster o vCenter. Si queremos obtener los contadores de rendimiento comunes de todas nuestras máquinas virtuales encendidas, sólo tendremos que ejecutar el siguiente comando:
PowerCLI>Get-Stat (Get-VM | Where-Object { $_.PowerState –eq ‘PoweredOn’ } | Export-CSV –delimiter “;” perfVM.csv
Donde Where-Object { $_.PowerState –eq ‘PoweredOn’ } es el filtro que nos permite discriminar por el estado de la máquina virtual y Export-CSV –delimiter “;” perfVM.csv exporta el resultado a un fichero CSV para que sea más sencillo realizar el tratamiento de los datos. Si estáis interesados en los datos de una VM en particular sólo tenéis que cambiar el filtro y la pipe anterior (el símbolo |) por el nombre de la máquina virtual.
No me gustaría terminar sin comentaros el modificador para mí más importante Stat. Este modificador admite como parámetro una array de tipo cadena con un listado de los contadores de rendimiento en los que estamos interesados. Es precisamente en este punto donde entra en juego el otro cmdlet que os mencionaba al principio, Get-StatType, que es el encargado de mostrarnos los contadores que tenemos disponibles para un tipo de objeto en particular. Tened presente que la lista de contadores disponibles dependerá de los elementos de los que dispongáis en vuestra plataforma.
Una vez consultado los contadores que nos interesen mediante Get-StatType, podemos interrogar a nuestra plataforma por los valores que nos interesen.
En el siguiente ejemplo comprobaremos la latencia y el throughput en el adaptador de almacenamiento vmhba2.
PowerCLI> Get-Stat -Stat @(«storageAdapter.totalReadLatency.average», «storageAdapter.totalWriteLatency.average», «storageAdapter.read.average», «storageAdapter.write.average») | Where-Object { $_.Instance -eq ‘vmhba2’ } |Out-GridView
Donde @(«storageAdapter.totalReadLatency.average», «storageAdapter.totalWriteLatency.average», «storageAdapter.read.average», «storageAdapter.write.average») es el array con los contadores que nos interesan y Where-Object { $_.Instance -eq ‘vmhba2’ } de nuevo es un filtro que en esta ocasión nos permite fijarnos sólo en el adaptador vmhba2.
Esta vez en lugar de exportar los datos a un fichero CSV he preferido sacar los resultados a una ventana externa donde además podremos filtrar mucho más los resultados.
¿Crees que este post puede interesar a alguien? En ese caso clica en los botones de compartir de arriba. Gracias por el apoyo.