Enimbos.com
Close

Azure – Monitorización de servicios en Máquinas Virtuales

Azure nos ofrece grandes posibilidades de monitorizar de forma realmente sencilla y efectiva nuestra infraestructura. Sin embargo, en el caso concreto de las máquinas virtuales, cuando queremos adentrarnos en la monitorización de los servicios o procesos que se están ejecutando en el sistema operativo somos nosotros quienes tenemos que definir qué valores queremos monitorizar.

A lo largo de este post definiremos los pasos a realizar para poder crear alertas en base al comportamiento de los servicios o procesos que se están ejecutando.

Entorno

El entorno que usaremos para realizar nuestras pruebas estará compuesto por dos máquinas virtuales (Linux y Windows) y un Log Analytics Workspace. Las máquinas virtuales estarán ejecutando un servicio web y un servicio de base de datos.

Crear un “Log Analytics Workspace”

El primer paso para monitorizar nuestros servicios es crear un “Log Analytics Workspace”. Un workspace es un espacio único donde se almacenarán los datos recopilados de las máquinas virtuales.

Para crear un “Log Analytics workspace” necesitaremos indicar la suscripción y el grupo de recursos donde se incluirá este nuevo servicio de Azure. Después le indicaremos el nombre que le daremos y la región donde la ubicaremos.

Si en un futuro se quiere asociar este workspace a una cuenta de automatización para aplicar actualizaciones automáticas, se debe utilizar la región West Europe en lugar de North Europe debido a restricciones de ubicación por parte de Azure.

 

 

Conectar máquinas virtuales al workspace

Para recopilar los datos de cada una de las máquinas virtuales tendremos que conectar cada una de ellas al workspace. Al conectarlas Azure instala un agente de monitorización en ellas. Para realizar la conexión hay que ir al apartado Máquinas Virtuales dentro del workspace creado, seleccionar cada una de las máquinas virtuales y pulsar el botón de conectar.


Recopilar datos

Azure nos ofrece varias posibilidades para recopilar los datos acerca del estado de los servicios. En primer lugar, podremos recopilar datos de logs indicando que rutas debe consultar. En segundo lugar, Azure permite obtener los logs recopilados en los eventos de Windows y en el Syslog de Linux. En esta publicación nos vamos a centrar en la primera opción.

Para comenzar, debemos crear un script que monitorice el estado de los servicios y almacene el resultado en un archivo de log. Para que Azure sea capaz de recopilar la información el archivo de log debe tener un formato adecuado. En esta ocasión los logs que generemos tendrán el siguiente formato: una entrada por línea, cada línea comenzará con la fecha YYYY-MM-DD HH:MM:SS, cada campo de una línea estará separado por una coma y el encoding será UTF-8. Mas información acerca de los formatos permitidos se puede encontrar en la documentación oficial.

Tanto en el script de Windows como el de Linux hay que modificar los servicios que se quieren monitorizar. Una vez modificado el script, hay que añadirlo al programador de tareas o al cron para hacer que se ejecute cada 4 minutos diariamente. Para comprobar que se ejecuta correctamente podemos ir a la ruta de logs y ver los resultados.

Una vez los scripts están guardando información del estado de los servicios en el log, se tiene que configurar el workspace en Azure para que vaya a las rutas de los logs a recoger la información.

A la hora de añadir una nueva ruta, tendremos que seguir 4 sencillos pasos.

  1. Subir un archivo de log de ejemplo. Como anteriormente hemos dejado ejecutando el script, ya dispondremos de varios archivos de log para realizar esta subida.
  2. Elegir el delimitador de cada registro. Seleccionaremos Timestamp con formato YYYY-MM-DD HH:MM:SS, de este modo los logs en Azure tendrán la hora de ejecución del script y no la de recolección de Azure.
  3. Indicar la ruta de donde coger los registros. En nuestro caso: «C:\logs\services-*.log» en Windows y “/var/log/azuremon/services-*.log” en Linux.
  4. Dar un nombre a la tabla que almacenará los datos. Por ejemplo: Services_CL.

Por último, hay que validar que el proceso se ha realizado correctamente.  Para ello se ejecutará una consulta sobre la tabla Services_CL. Es importante tener en cuenta que suele tardar entre 5 y 10 minutos en comenzar a mostrar información desde que se crea.

Crear alertas

El servicio Monitor de Azure tiene un apartado de alertas. En él se pueden crear nuevas alertas en base a métricas o a consultas sobre tablas.

Lo primero que tenemos que configurar es el ámbito de la alerta, el cual es el Log Analytics Workspace creado previamente.  A continuación, hay que añadir la condición de la alerta. Para ello seleccionamos “Custom Log Search”. En el apartado de consulta copiamos esta consulta, indicaremos que si el numero de resultados es mayor que 0 se alertará y que la consulta se evaluará cada 5 minutos por un rango de tiempo de 30 minutos. La consulta buscará servicios que estén parados por más de 10 minutos y menos de 15, evitando de este modo recibir varias alertas cuando un servicio está parado por horas.

Para continuar configurando la alerta, hay que añadir un grupo de acción. Para esta demostración se ha creado un grupo de acción el cual tendrá configurado un email al que llegarán un aviso cuando se active la alerta.

Por último, hay que configurar el nombre de la alerta y añadir el grado de severidad de la alerta. Como ejemplo, la alerta se ha configurado con severidad 1 como si los servicios fueran bastante críticos. En caso de que los servicios monitorizados no fueran críticos se podría poner severidad 4 o 5.

Ahora que la alerta está activa se puede comprobar que funciona correctamente parando un servicio monitorizado por más de 10 minutos. Si la alerta se ha configurado correctamente tenemos que recibir un correo en la cuenta configurada indicando que hay un servicio parado. A continuación, se muestra un ejemplo de una alerta recibida.

Suprimir alertas en intervención

Es normal encontrarnos con intervenciones sobre los servicios que ejecutan las máquinas virtuales. Desde una actualización a una reconfiguración, en entornos productivos estas intervenciones son mínimas y rápidas. No obstante, siempre se programan ventanas de mantenimiento mayores por si suceden imprevistos.

Es importante que durante un periodo de intervención no salten falsos positivos de alertas. Azure nos permite suprimir alertas durante un periodo definido de mantenimiento.

En el portal de Azure, desde el apartado de alertas podemos acceder al apartado de gestionar acciones. Una vez en él, añadiremos una regla de acción para suprimir las alertas.

Lo más importante a la hora de crear una regla es el filtro para indicar que alertas suprimir. En nuestro caso vamos a suprimir las alertas que contengan el nombre de nuestra máquina Linux.

Para comprobar que se ha configurado correctamente se procede a parar primero los servicios de la máquina Linux y posteriormente los de la máquina Windows. Como vemos en la imagen siguiente, solo se reciben alertas de la máquina Windows mientras que la alerta de la máquina Linux se ha suprimido.

Próximos pasos

En Enimbos nos encanta compartir nuestro conocimiento, ¿quieres que sigamos abordando más temas de monitorización en Azure? Contáctanos e indica qué tema te gustaría que tratásemos.

Related Posts