Gráficas de información del nuevo portal de Azure (Ibiza)
Cuando se tienen servidores en producción una de las preocupaciones de los administradores IT o devops es saber lo bien (o mal) que están funcionando sus servidores. La forma más rápida de ver si un servidor está saturado o no, es simplemente mirando al consumo de CPU, o en el caso de la aplicación sea muy intensiva de red, echando un vistazo a los bytes enviados en el adaptador de red. También puede ser la memoria libre que tiene disponible la máquina.
Si la maquina tiene un servidor de aplicaciones como IIS, sería interesante poder mostrar información sobre cuantas peticiones por segundo se están ejecutando, cual es la cola de http de ASP.NET. Si por el contrario se tiene un servidor de SQL Server, información de cuantas peticiones activas tiene, la cantidad de re compilaciones de los planes de ejecución, ect.
Información al poder
En todos estos escenarios que antes se han mencionado la información de contadores de rendimiento muestran información de salud del estado de la máquina o del servicio. En ese sentido uno de los problemas que se puede enfrentar un administrador de IT es que tenga que conectarse a todas esas máquinas para extraer esa información haciendo que el proceso sea tedioso.
Aquí es donde entra el portal del Azure (Ibiza) que puede ayudar en esas tareas de monitorización básicas.
Graficas del portal
Cuando se provisiona un servidor, ya sea Windows o Linux, el portal permite obtener información de la máquina para después mostrar esa información en el propio portal.
Linux
En el siguiente ejemplo una máquina de Linux que tiene instalado un servidor de node.js y utiliza pm2 como servidor de aplicaciones para utilizar todos los cores (8) de la máquina.
Como se puede se puede observar esta máquina es Linux, y tiene 8 Cores y 14 Gb de memoria.
Pero aun así se puede obtener información muy variada, incluso cuantos bytes se han enviado o recibido desde el adaptador de red y cuantas lecturas y escrituras se han hecho.
Como se puede observar esta máquina es muy intensiva de CPU y red, pero no hace apenas escritas en disco ya que simplemente procesa un html y devuelve el resultado por red.
Windows Server con SQL Server
La siguiente máquina tiene Windows Server 2012 R2 con 16 discos duros adjuntos y tiene 8 Core y 28 Gb de memoria con un SQL Server instalado.
Además de las gráficas de CPU típicas de una maquinas también se puede obtener información sobre el estado del SQL Server que hay instalado y funcionando:
Además de graficas de lecturas y escrituras de discos:
Lo interesante de estas gracias es que no solo se puede obtener esa información sino que se puede personalizar la cantidad de información que se desee. A continuación un detalle de los contadores que se pueden obtener para SQL Server:
SQL Database
Si por el contrario se tiene una base de datos SQL Azure, en mi caso una base de datos P2 de 250DTUs también se puede obtener información muy útil de la base de datos:
Por la información de las gráficas se puede ver que la base de datos está trabajando a toda potencia.
Cloud Services
Si se tiene desplegados Cloud Services también se puede aprovechar de esta información pero agregada de todas las máquinas que se tengas desplegadas. En mi caso dos instancias.
En este escenario los workers no son muy intensivos en CPU pero si mucho en red.
Personalizar el dashboard
Otra de las características del portal es que puedas mostrar esas piezas de información en el portal para configurar el aspecto a tu gusto y mostrar la información que es relevante para ti.
Con lo que un vistazo se puede acceder a información que es relevante para cada usuario que inicia sesión en el portal.
¿Cómo se extrae la información de las máquinas?
Para que esta información esté disponible en el portal, Microsoft instala en las máquinas invitadas un agente que se encarga de recopilar esta información. En el caso de Windows utiliza la infraestructura de contadores de rendimiento para obtener esa información. Cuando se provisiona una máquina virtual Windows se añade una extensión llamada Microsoft.Azure.Diagnostics.IaaSDiagnostics que es la que se encarga de comunicarse con el controlador del Fabric de Azure. Este servicio recopila la información y la almacena en una cuenta de Azure Storage que se ha especificado durante la provisión de la VM.
En el caso de una máquina Linux, los contadores de rendimiento no existen, con lo que hay que utilizar otro mecanismo para obtener la información de rendimiento de la VM. También se instala una extensión que se encarga de recopilar esa información llamada Microsoft.OSTCExtensions.LinuxDiagnostic. Que en última instancia añade un demonio de Linux escrito en Python que se llamad waagent, el cual está disponible el código fuente en GitHub https://github.com/Azure/WALinuxAgent
Luis Guerrero
Technical Evangelist Microsoft Azure