Mar 8, 2010

Monitorización de VMware ESXi con resxtop/esxtop

VMware ESXi proporciona una herramienta similar al top de Linux denominada esxtop, la cual permite obtener en tiempo real, datos relativos al uso de CPU, memoria, disco, estado de los procesos, etc.

Para poder ejecutar esxtop hay que tener acceso a la service console (SSH) del VMware ESXi. La forma básica de ejecución de esxtop es la siguiente:

~# esxtop

3:25:30pm up 7 days 1:21, 172 worlds; CPU load average: 0.01, 0.01, 0.01
PCPU USED(%): 1.1 0.9 0.5 0.6 0.7 1.1 0.9 1.1 AVG: 0.9
PCPU UTIL(%): 1.6 1.3 0.8 1.0 1.1 1.5 1.4 1.6 AVG: 1.3

ID GID NAME NWLD %USED %RUN %SYS %WAIT %RDY %IDLE %OVRLP %CSTP %MLMTD %SWPWT
1 1 idle 8 798.81 799.22 0.00 0.00 7.58 0.00 0.02 0.00 0.00 0.00
2 2 system 6 0.02 0.02 0.00 600.00 0.00 0.00 0.00 0.00 0.00 0.00
3 3 vim 1 0.00 0.00 0.00 100.00 0.00 0.00 0.00 0.00 0.00 0.00
6 6 helper 55 0.05 0.06 0.00 5500.00 0.01 0.00 0.00 0.00 0.00 0.00
...

La pantalla interactiva que nos ofrece esta orden nos permite ver los datos relativos al porcentaje de utilización de la CPU, tanto de los distintos cores físicos como el consumo de los procesos. A esta pantalla podremos regresar siempre que queramos pulsando la tecla 'c'.

En la pantalla anterior puede verse que el ESXi en cuestión dispone de ocho cores, ya que en el campo correspondiente al porcentaje de uso de cada una de las CPUs físicas (PCPU USED) se muestran ocho valores. El último campo (AVG) corresponde a la media de todos los cores físicos.

La línea que aparece debajo (PCPU UTIL) representa el porcentaje útil de uso de cada una de las CPUs. Este campo representa el porcentaje real de utilización de la CPU, ya que no se tiene en cuenta el tiempo idle. En cambio PCPU USED sí que tiene en cuenta este valor.

En la primera línea hay que destacar también el campo load average, que indica el número medio de procesos del sistema que durante los últimos 1, 5 y 15 minutos han estado esperando por algún recurso del sistema (CPU, acceso a disco, red, etc.).

La lista de datos que se muestra debajo de la cabecera inicial se corresponde con el estado de los distintos procesos del sistema. Los principales son: %USED es el porcentaje de utilización de las CPUs físicas (suma de de los porcentajes de todos los cores - %USED = %RUN + %SYS - %OVRLP). %RUN es el porcentaje empleado en la planificación. %SYS es el porcentaje de utilización de CPU por parte del VMKernel. %OVRLP es el porcentaje de uso de CPU por parte de los servicios del sistema.

Dentro de esta pantalla, si pulsamos la tecla 'm' accederemos al estado de la memoria (todos los valores representan MB, exceptuando los campos que comienzan por %).

~# esxtop

3:51:58pm up 7 days 1:47, 174 worlds; MEM overcommit avg: 0.00, 0.00, 0.00
PMEM /MB: 8187 total: 716 vmk, 4091 other, 3379 free
VMKMEM/MB: 7790 managed: 467 minfree, 1285 rsvd, 6136 ursvd, high state
PSHARE/MB: 3794 shared, 1314 common: 2480 saving
SWAP /MB: 0 curr, 0 target: 0.00 r/s, 0.00 w/s
MEMCTL/MB: 0 curr, 0 target, 3992 max

GID NAME MEMSZ GRANT SZTGT TCHD %ACTV %ACTVS %ACTVF %ACTVN OVHDUW OVHD OVHDMAX
16 init.4189 2.40 0.11 2.40 0.11 0 0 0 0 0.00 0.00 0.00
159 busybox.4338 2.40 0.11 2.40 0.11 0 0 0 0 0.00 0.00 0.00
163 vmklogger.4342 2.45 0.09 2.45 0.09 0 0 0 0 0.00 0.00 0.00
...

En la primera línea de la pantalla anterior, MEM overcommit avg representa el exceso de memoria (media aritmética) durante los últimos 15, 5 y 1 minuto. Lo habitual es que estos valores sean siempre cero. Si son superiores significa que las máquinas virtuales están solicitando más memoria (física) de la disponible.

La línea PMEM hace referencia a la memoria física. total es la memoria física total disponible. vmk es la cantidad de memoria utilizada por el VMKernel. other es la memoria total empleada por las máquinas virtuales y free es la memoria que queda libre.

La línea VMKMEM hace referencia a la memoria administrada por el VMKernel. minfree es la cantidad de memoria que el VMKernel preferiría tener libre. rsvd es la cantidad de memoria actualmente reservada por el VMKernel y ursvd es la cantidad de memoria que no se encuentra reservada.

La línea PSHARE hace referencia a la memoria compartida. shared es la cantidad de memoria física que está siendo compartida. common es la cantidad de memoria común para todas las máquinas virtuales y saving es la cantidad de memoria guardada debido al intercambio (shared = common + saving).

Y la línea SWAP hace referencia a la memoria swap.

La lista de datos que se muestra debajo de la cabecera inicial se corresponde con la utilización de memoria por parte de los distintos procesos del sistema (o máquinas virtuales). MEMSZ es la cantidad de memoria reservada. GRANT es la cantidad de memoria concedida, SZTGT es la cantidad de memoria utilizada y TCHD es la cantidad de memoria recientemente empleada.

Dentro de esta pantalla, si pulsamos la tecla 'd' accederemos al estado de los distintos adaptadores del sistema. Para el caso del VMware ESXi utilizado, el adaptador vmhba0 se corresponde con un controlador IDE empleado por un CD-ROM. vmhba1 hace referencia al disco duro y vmhba32 no se está utilizando.

~# esxtop

4:37:30pm up 7 days 2:33, 176 worlds; CPU load average: 0.01, 0.01, 0.01

4:42:28pm up 7 days 2:38, 176 worlds; CPU load average: 0.01, 0.01, 0.01

ADAPTR CID TID LID NCHNS NTGTS NLUNS CMDS/s READS/s WRITES/s MBREAD/s MBWRTN/s DAVG/cmd KAVG/cmd GAVG/cmd QAVG/cmd
vmhba0 - - - 2 1 1 1.98 0.00 0.00 0.00 0.00 1.01 0.01 1.03 0.00
vmhba1 - - - 1 1 1 8.32 2.77 5.55 0.08 0.07 0.25 0.01 0.26 0.00
vmhba32 - - - 2 0 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
0.00 0.00 0.00 0.00 0.00

Dentro de esta pantalla destacaremos los siguientes valores: READS/s (número de comandos de lectura lanzados por segundo), WRITES/s (número de comandos de escritura lanzados por segundo), MBREAD/s (MB leídos por segundo) y MBWRTN/s (MB escritos por segundo).

Si se pulsa la tecla 'u' accederemos al estado de las diferentes unidades de almacenamiento. mpx.vmhba0:CO:T es la unidad de CD-ROM y mpx.vmhba1:CO:T el disco duro.

~# esxtop

10:54:40am up 7 days 19:50, 173 worlds; CPU load average: 0.01, 0.01, 0.01

DEVICE PATH/WORLD/PARTITION DQLEN WQLEN ACTV QUED %USD LOAD CMDS/s READS/s WRITES/s MBREAD/s MBWRTN/s DAVG/cmd KAVG/cmd GAVG/cmd QAVG/cmd
mpx.vmhba0:C0:T - 16 - 0 0 0 0.00 1.95 0.00 0.00 0.00 0.00 1.00 0.02 1.02 0.01
mpx.vmhba1:C0:T - 32 - 0 0 0 0.00 14.42 10.91 3.51 0.32 0.12 0.32 0.01 0.32 0.00

Los valores más importantes son los mismos que los mostrados para los adaptadores del sistema.

Y por último, dentro de esta pantalla si pulsamos la tecla 'n' accederemos al estado de los diferentes interfaces de red. Management es un puerto interno. vnmnic0 se corresponde con el único interfaz físico de red (tarjeta) que dispone este VMware ESXi. vmk0 es un interfaz virtual utilizado por el VMKernel para realizar sus propias tareas (actualizaciones, operaciones de vmotion, etc.).

Y el resto de interfaces virtuales (CENTOS01.LOCAL y CENTOS02.local) se corresponden con las tarjetas virtuales que tienen configuradas esas dos máquinas virtuales.

Como puede observarse, los interfaces virtuales están enlazados con el interfaz físico vmnic0. A su vez, todos ellos están conectados a un switch virtual denominado vSwitch0.

~# esxtop

5:03:02pm up 7 days 2:58, 175 worlds; CPU load average: 0.01, 0.01, 0.01

PORT-ID USED-BY TEAM-PNIC DNAME PKTTX/s MbTX/s PKTRX/s MbRX/s %DRPTX %DRPRX
16777217 Management n/a vSwitch0 0.00 0.00 0.00 0.00 0.00 0.00
16777218 vmnic0 - vSwitch0 1.98 0.00 15.06 0.02 0.00 0.00
16777219 vmk0 vmnic0 vSwitch0 0.40 0.00 6.94 0.01 0.00 0.00
16777220 10059:CENTOS01.LOCAL vmnic0 vSwitch0 1.59 0.00 8.12 0.01 0.00 0.00
16777221 11419:CENTOS02.LOCAL vmnic0 vSwitch0 0.00 0.00 6.54 0.01 0.00 0.00

PKTTX/s es el número de paquetes transmitidos por segundo. MbTX/s es el número de MB transmitidos por segundo. PKTRX/s es el número de paquetes recibidos por segundo. MbRX/s es el número de MB recibidos por segundo. %DRPTX es el porcentaje de paquetes transmitidos que han sido descartados y %DRPRX es el porcentaje de paquetes recibidos que han sido descartados.

Si al comando esxtop le añadimos el argumentos -a, ampliaremos las estadísticas mostradas.

Otra opción interesante es -b, que permite ejecutar el comando en modo batch. De esta forma podremos volcar los resultados a un fichero. Con la opción -n indicamos el número de iteraciones y con -d el retardo entre dichas iteraciones.

~# esxtop -b -n 2 -d 5 > file.csv

Si no disponemos de acceso SSH al VMware ESXi, podemos utilizar la versión remota de este comando: resxtop. Este comando se encuentra disponible instalando en un PC cliente (Linux o Windows) el vSphere CLI (Command-Line Interface).

[root@centos ~]# resxtop --server 192.168.1.10 --username root
...

Otra utilidad bastante interesante de estas herramientas es la posibilidad de utilizar un fichero de configuración a través de la opción -c. Cuando se lanza resxtop/esxtop, la utilidad trata de buscar siempre el fichero de configuración ~/.esxtop4rc. Si no existe, desplegará todos los campos, y si existe, mostrará sólo los campos que estén definidos dentro de dicho fichero. Para que no utilice por defecto dicho archivo, indicaremos con el parámetro -c la ruta al fichero que queremos utilizar.

Este fichero está formado por ocho líneas. Las siete primeras se corresponden a las pantallas de CPU (c), memoria (m), adaptadores (d), unidades de almacenamiento (u), discos virtuales (v) e interrupciones (i). La última indica la frecuencia de muestreo en segundo y la primera pantalla que se mostrará al ejecutar la herramienta (CPU, memoria, ...).

En cada una de las líneas se establecen las columnas a mostrar mediante letras mayúsculas.

[root@centos ~]# cat .esxtop4rc



AG

DHIJK

5c
...

Otra posibilidad de crear este fichero sería una vez que esteviésemos dentro de la pantalla de monitorización, configuraríamos los campos que quisiéramos visualizar y a continuación pulsaríamos la tecla 'W', para que la aplicación generase el fichero esxtop4rc.

Si queremos ampliar la información sobre los datos obtenidos por estos comandos, podemos recurrir al artículo Interpreting esxtop Statistics.

2 comments: