Azure Monitor
Sugerencia
Este contenido es un extracto del libro electrónico “Architecting Cloud Native .NET Applications for Azure” (Diseño de la arquitectura de aplicaciones .NET nativas en la nube para Azure), disponible en Documentos de .NET o como un PDF descargable y gratuito que se puede leer sin conexión.
Ningún otro proveedor de nube tiene una solución de supervisión de aplicaciones en la nube tan madura como la que se encuentra en Azure. Azure Monitor es un nombre que abarca una colección de herramientas diseñadas para proporcionar visibilidad del estado del sistema. Ayuda a entender el rendimiento de los servicios nativos de nube y permite identificar de manera proactiva los problemas que les afectan. En la figura 7-12 se muestra una vista general de Azure Monitor.
Figura 7-12. Vista general de Azure Monitor.
Recopilación de registros y métricas
El primer paso que realiza cualquier solución de supervisión consiste en recopilar tantos datos como sea posible. Cuantos más datos se recopilen, más profunda será la información. Tradicionalmente, la instrumentación de sistemas es difícil. El Protocolo simple de administración de redes (SNMP) era el protocolo estándar de referencia para recopilar información en el nivel de la máquina, pero requería una gran cantidad de conocimientos y configuración. Afortunadamente, se ha eliminado una gran parte de esta ardua labor, ya que Azure Monitor recopila automáticamente las métricas más comunes.
Las métricas y los eventos del nivel de la aplicación no pueden instrumentarse automáticamente porque son específicos de la aplicación que se está implementando. Para recopilar estas métricas, existen SDK y API para notificar directamente dicha información, por ejemplo, cuando un cliente se registra o completa un pedido. Las excepciones también se pueden capturar y notificar a Azure Monitor mediante Application Insights. Los SDK admiten la mayoría de los lenguajes que se encuentran en aplicaciones nativas de nube, como Go, Python, JavaScript y los lenguajes .NET.
El objetivo final de recopilar información sobre el estado de la aplicación es asegurarse de que los usuarios finales tengan una buena experiencia. ¿Qué mejor manera de saber si los usuarios están experimentando problemas que realizar pruebas web de fuera hacia dentro? Estas pruebas pueden ser tan sencillas como hacer ping al sitio web desde ubicaciones de todo el mundo o tan complejas como hacer que agentes inicien sesión en el sitio y simulen acciones de usuario.
Creación de informes con los datos
Una vez que se han recopilado los datos, pueden manipularse, resumirse y convertirse en gráficos, lo que permite a los usuarios ver al instante cuándo hay problemas. Estos gráficos pueden recopilarse en paneles o Libros, un informe de varias páginas diseñado para contar una historia sobre algún aspecto del sistema.
Ninguna aplicación moderna estaría completa sin cierto grado de inteligencia artificial o aprendizaje automático. Para ello, los datos pueden pasarse a las diversas herramientas de aprendizaje automático de Azure, lo que le permite extraer tendencias e información que, de lo contrario, permanecerían ocultas.
Application Insights proporciona un lenguaje de consulta eficaz (similar a SQL) denominado Kusto que puede consultar registros, resumirlos e incluso elaborar gráficos. Por ejemplo, la consulta siguiente buscará todos los registros del mes de noviembre de 2007, los agrupará por estado y convertirá los diez primeros en un gráfico circular.
StormEvents
| where StartTime >= datetime(2007-11-01) and StartTime < datetime(2007-12-01)
| summarize count() by State
| top 10 by count_
| render piechart
En la figura 7-13 se muestran los resultados de esta consulta de Application Insights.
Figura 7-13. Resultados de la consulta en Application Insights.
Existe un área de juegos para experimentar con consultas de Kusto. También puede ser instructivo leer consultas de ejemplo.
Paneles
Hay varias tecnologías de panel diferentes que se pueden usar para exponer la información de Azure Monitor. Quizás lo más sencillo sea simplemente ejecutar consultas en Application Insights y convertir los datos en un gráfico.
Figura 7-14. Ejemplo de gráficos de Application Insights insertados en el panel principal de Azure.
Posteriormente, estos gráficos pueden insertarse en Azure Portal mediante el uso de la característica de panel. En el caso de usuarios con requisitos más exigentes, como poder explorar en profundidad varios niveles de datos, los datos de Azure Monitor están disponibles para Power BI. Power BI es una herramienta de inteligencia empresarial líder del sector que puede agregar datos de muchos orígenes de datos diferentes.
Figura 7-15. Un panel de Power BI de ejemplo.
Alertas
A veces, no basta con tener paneles de datos. Si no hay nadie que consulte los paneles, pueden pasar muchas horas hasta que se solucione o incluso se detecte un problema. Para ello, Azure Monitor también proporciona una solución de alertas de primerísima categoría. Las alertas se pueden desencadenar como consecuencia de una amplia gama de condiciones, entre las que se incluyen las siguientes:
- Valores de métrica
- Consultas de búsqueda de registros
- Eventos del registro de actividad
- Estado de la plataforma Azure subyacente
- Pruebas de disponibilidad del sitio web
Cuando se desencadenan, las alertas pueden realizar una amplia variedad de tareas. Las alertas más sencillas pueden simplemente enviar una notificación por correo electrónico a una lista de distribución de correo o un mensaje de texto a una persona. Las alertas más complicadas pueden desencadenar un flujo de trabajo en una herramienta como PagerDuty, que sabe qué personas están de guardia para una aplicación determinada. Las alertas pueden desencadenar acciones en Microsoft Flow que desbloquean posibilidades casi ilimitadas para los flujos de trabajo.
A medida que se identifican las causas comunes de las alertas, estas pueden mejorarse con detalles sobre las causas comunes y los pasos que deben seguirse para resolverlas. Las implementaciones de aplicaciones nativas de nube muy maduras pueden optar por iniciar tareas de recuperación automática, que realizan acciones como quitar nodos con errores de un conjunto de escalado o desencadenar una actividad de escalado automático. Por último, podría ya no ser necesario despertar al personal de guardia a las dos de la mañana para resolver un problema relacionado con un sitio activo, ya que el sistema será capaz de ajustarse automáticamente para compensarlo (o seguir funcionando, aunque sea renqueando) hasta que alguien llegue al trabajo la mañana siguiente.
Azure Monitor usa automáticamente el aprendizaje automático para comprender los parámetros operativos normales de las aplicaciones implementadas. Esto le permite detectar los servicios que funcionan fuera de sus parámetros normales. Por ejemplo, el tráfico habitual en el sitio los días laborables es ser de 10 000 solicitudes por minuto, pero una semana determinada el número de solicitudes alcanza de repente la cantidad inusual de 20 000 solicitudes por minuto. La detección inteligente descubrirá esta desviación de la norma y desencadenará una alerta. Al mismo tiempo, el análisis de tendencias es lo bastante inteligente como para evitar desencadenar falsos positivos cuando se espera una carga del tráfico.