Category Archives for "VMware"

vCheck para vSphere: Informes de nuestra infraestructura mediante PowerShell

 

Vengo esta semana con un post de alcance para presentaros otra herramienta que, siguiendo la línea de de los últimas semanas, nos aportará de manera sencilla y pseudo-nativa reportes de nuestro entorno de vSphere. En este caso, hablaremos de vCheck que nos dará un overview de nuestro entorno virtual y un detalle de los problemas que pueda presentar.

Además de ser una herramienta bastante utilizada y reconocida, he querido aprovechar para presentarla estos días porque en el VMworld que tendrá lugar a finales de este mes de agosto en Las Vegas se ha organizado un Hackhaton donde uno de los puntos que se va a desarrollar va a ser precisamente vCheck, esperemos que salgan mejoras y desarrollos interesantes. Por cierto, si tenéis la suerte de andar por Las Vegas el dia 29, os recomiendo mucho asistir al Hackhaton de VMware Code, podéis registraros a este evento aquí

Está basada en PowerCLI, la interface y cmdlets de PowerShell para gestionar las soluciones de VMware. Basta con disponer de PowerShell en versión 3.0 o superior, tener PowerCLI instalado y disponer del script de PowerShell que nos lanzará el reporte.

Podéis descargar el script aquí y disponéis de un pequeño vídeo de introducción donde el mismo Alan Renouf, desarrollador del script cuenta como empezar con ello.

sVMWare_preston_vcheck_report
Source: jmgriscom

 

DevOps con proveedores externos

 

Hay una pregunta que cualquier empresa puede hacerse cuando se plantea implantar prácticas de DevOps. ¿Puedo implantar prácticas DevOps cuando trabajo con proveedores externos ?

Son muchas las empresas que utilizan proveedores externos, ya sean estos desarrolladores, consultoras o proveedores de servicios. Y además, estos equipos externos realizan su trabajo remotamente desde diferentes lugares y zonas horarias. Para implantar Devops con proveedores externos hay un conjunto de pautas que ayudan a que la colaboración sea fluida.

 

Lo primero y esencial es establecer una comunicación abierta. La comunicación entre todos los equipos de trabajo, internos y externos, debe establecerse en todas las etapas, desde la fase de planificación a las fases  de pruebas, despliegue o operación. Es importante que todos los actores conozcan y participen en la definición de los proyectos y en la planificación. Para ello, es altamente recomendable establecer reuniones periódicas presenciales si es posible. El contacto genera empatía, permite compartir conocimiento e ideas y permite entender al otro, uno de los aspectos en que pone énfasis DevOps. En caso de no ser posible hacer reuniones presenciales, pueden hacerse reuniones utilizando programas de video conferencia como Skype o Hangouts.

DevOpsConProveedoresExternos

También es importante integrar a los equipos externos en los sistemas de mensajería internos como listas de correo, sistemas de Chat y permitir el acceso a los espacios de trabajo compartido como los recursos de red.

Por otro lado, también se puede integrar a los equipos externos en los procesos operativos y en los sistemas de gestión utilizados como los repositorios de código fuente, aplicaciones de gestión de proyectos, sistemas de monitorización, sistemas de automatización, etc.

Otro aspecto que ayuda mucho a la colaboración entre equipos remotos, es utilizar sistemas de virtualización o en cloud para el despliegue de los entornos de desarrollo y testing. Los sistemas de virtualización permiten a los equipos externos reproducir las infraestructuras de forma fácil y económica, y sin necesidad de compartir los sistemas internos.

En definitiva, el hecho de utilizar proveedores externos no debe ser un problema para utilizar prácticas DevOps. Lo que si que hay que ver en cada caso es como establecer una comunicación fluida entro todos los equipos de trabajo y como integrar a estos proveedores externos en los procesos internos de la empresa.
Source: jmgriscom

 

Obtener datos e informes de storage en tiempo real de nuestra infraestructura de vSphere II

La semana pasada vimos como sacar datos de caracterización y rendimiento de nuestros discos virtuales mediante la herramienta vscsiStats nativa de ESXi. Hasta donde conté en ese post, podíamos ver los datos directamente en el terminal pero además, podemos exportarlos y tratarlos para generar informes de uso que pueden resultar muy útiles.

graficos-stats

Para ello, primero de todo tenemos que modificar los comandos con opción –p para que exportar los histogramas a csv y luego poder tratarlos. El comando para exportar todos los histogramas a csv sería:

# vscsiStats -p all –w <worldID> -c > /root/vscsiStats-export.csv

Una vez generado en el directorio que le indiquemos como parámetro, lo podemos importar mediante scp por ejemplo. Una vez descargado en nuestro equipo es cuando podemos empezar a tratarlo. De por sí tendremos los datos en “crudo”, pero hay maneras de poder graficar los resultados para analizarlos de manera más visual.

Lo que necesitaremos es Excel y una macro que podemos obtener aquí desarrollada por Paul Dunn y Matt Kelliher. Así los obtendremos:

  • Abrir el fichero csv que hemos obtenido desde el ESX en excel
  • Apretar alt+f11 y añadir el código de la macro
  • Para ejecutar el código, bastará con apretar f5

Con ello, obtendremos los gráficos de los datos que hemos recabado desde vscsiStats.

Otra gran herramienta más sencilla y directa es ésta desarrollada por virten.net. Subimos el fichero .csv  e inmediatamente obtendremos los gráficos.

Source: jmgriscom

Obtener datos e informes de storage en tiempo real de nuestra infraestructura de vSphere

Cada vez hay más soluciones de terceros o del propio VMware que nos sirven para monitorizar y analizar nuestra infraestructura. Las infraestructuras van madurando y se vuelven más confiables, hecho que hace que se virtualicen más cargas en ellas. Además, ya prácticamente todas las aplicaciones están soportadas dando niveles de rendimiento a la par o incluso mejores que en entornos físicos. Más consolidación de máquinas virtuales por host, más dispersión y máquinas virtuales más sensibles hacen que la necesidad de monitorizar de manera más exhaustiva sea una realidad

Como decía, hay herramientas de diversos tipos y funcionalidades que sacan, procesan y almacenan datos de rendimiento de nuestra infraestructura virtual para que podamos generar alertas o informes predictivos. Podríamos entrar a valorar muchas de ellas, pero antes creo que es casi obligado conocer las herramientas nativas en vSphere/vCenter. Conocerlas, además de otras ventajas que expondré seguidamente, nos ayudará a conocer “de base” las métricas más críticas que luego podremos explotar con otras soluciones.
 
Una de estas herramientas nativas es vscsiStats, nativa en ESXi. Con ella, obtendremos datos de caracterización del uso a nivel de Storage de nuestras máquinas virtuales. Qué ventajas supone? Como decimos, es nativa, por lo que ya la tienes incluida en tu hipervisor, es rápida en obtener datos en real-time, puesto que estamos consultando directamente el scheduler de ESXi, es relativamente sencilla de usar (veremos cómo a continuación) y fácilmente podemos exportar los datos que nos aporta. A diferencia de los datos de storage que nos aporta esxtop, otra herramienta nativa de monitorización para ESXi, que solo aplican para almacenamiento basado en iSCSI o Fibre Channel, vscsiStats nos da más variedad de información y sobretodo sin importarle en qué tipo de almacenamiento esté la VM, pues se sacan los datos a nivel de disco virtual.
 
Podremos sacar información de storage de cualquier VM, pero qué información? Básicamente lo que nos dará vscsiStats son datos de utilización y carácter de las operaciones de I/O de storage durante un periodo de muestreo en forma de histograma, por lo que será importante ejecutar las cargas que queremos monitorizar durante ese momento. Podemos sacar los siguientes histogramas:

  • seekDistance: localidad “espacial” de los I/Os
    • Dada una VM, podemos ver la secuencialidad de los bloques que consulta/escribe. Si un bloque está más cerca que los consultados/leídos inmediatamente antes, se accederá mucho más rápido. En cambio, si el patrón de uso de bloques es muy aleatorio, impactará en el rendimiento. Es interesante juntar patrones de uso común en las mismas LUNs para intentar optimizar el rendimiento.
  • ioLength: tamaño de IO
    • Como comentaba en anteriores posts, es importante alinear las configuraciones en todas las capas que intervienen en el uso de disco, pero a su vez puede resultar muy complejo. Sobretodo a alto nivel, pues puede resultar complicado sacar patrones de IO a nivel de sistema operativo de la VM o incluso la aplicación que use. Con vscsiStats, podremos sacar datos del tamaño de IO real que están utilizando nuestras VMs sin importar qué OS/aplicación estén ejecutando. Por ejemplo, si sabemos el tamaño medio de IO de nuestras VMs, podemos configurar el tamaño de stripe de nuestra cabina a ese valor para maximizar su rendimiento.
  • latency: análisis de latencias
    • Rápidamente podemos sacar analizar qué tiempos de respuesta están teniendo nuestras operaciones de I/O para sacar medias, ver a qué máximos estamos llegando y ver qué latencias son las más comunes.
  • interarrival
    • Nos sacará qué tiempo entre llegada de I/Os están teniendo nuestras VMs.
  • outstandingIOs
    • Al llegar una operación de I/O, se calculan cuantas otras para ese disco virtual están aún pendientes por llegar. Al verlo en histograma, se puede ver que concurrencia de I/Os se tiene para ese disco y ver si hay contención a nivel de profundidad de colas.

Vistas sus posibilidades, vayamos a ver como funciona:

  • Recoger IDs de las VMs y los discos: como hemos visto, vscsiStats se invoca para empezar a captar datos. Estos pueden ser referentes a todas las VMs y todos sus discos o de una VM o disco en concreto.

Si queremos recoger datos de todos los discos y VMs, podemos obviar este primer paso. En caso contrario, deberemos introducir el siguiente comando en la consola de nuestro ESXi (por SSH o DCUI):

# vscsiStats –l

El output serà un listado de las VMs y discos. Los datos que queremos obtener serán el “Virtual Machine worldID” que identificará nuestra VM y el “Virtual SCSI Disk handleID” que identifica el disco virtual. Con estos dos datos, seguimos adelante.

  • Empezamos la recolección de datos: debemos usar la opción “-s” para empezar a capturar datos de uso de nuestras VMs.

Si queremos capturar datos de todas las VMs y discos, tan solo hace falta que ejecutemos el siguiente comando:

# vscsiStats –s

En caso de que querramos monitorizar todos los discos de una VM en concreto, necesitaremos el parámetro “Virtual Machine worldID”:

#vscsiStats –s –w <worldID>

Si queremos concretar más y solo capturar datos de un solo disco virtual necesitaremos el “Virtual Machine worldID” y el “Virtual SCSI Disk handleID”

# vscsiStats –s –w <worldID> -i <handleID>

A partir de ejecutar el comando con la opción –s, empieza el periodo de muestreo que durará (si no indicamos lo contrario) 30 minutos. Si queremos alargárlo, tenemos que volver a ejecutar el comando –s con los parámetros que hayamos especificado anteriormente para “renovar” otros 30 minutos más.

  • Sacar histogramas: una vez hemos empezado a llenar los contadores, ya podemos obtener histogramas del uso. Como hemos visto previamente, hay varios disponibles así que previamente debemos saber cuál queremos sacar. Una vez está claro:
    1. seekDistance: # vscsiStats –p seekDistance
    2. ioLength: # vscsiStats –p ioLength
    3. latency: # vscsiStats –p latency
    4. interrarrival: # vscsiStats –p interarrival
    5. OIOs: #vscsiStats –p outstandingIOs

De esta manera podremos obtener los datos que precisamos en la pantalla de nuestra consola. En el siguiente post veremos como exportar datos con esta herramienta y ver como podemos sacar informes con los datos en excel.

.code {
font-family: “Courier New”, Courier, monospace;
}

Source: jmgriscom