Monitoreo con Application Insights

Resumen del SDK de Application Insights, seguimiento distribuido, pruebas de disponibilidad, alertas y métricas en vivo.

En AZ-204, Application Insights es el nucleo del dominio de monitoreo. Te permite ver en tiempo real como se comporta realmente tu aplicacion.

 

Que es Application Insights?

Imagina Application Insights como el tablero de instrumentos de un automovil. Asi como puedes ver de un vistazo la velocidad, el combustible y la temperatura del motor mientras conduces, Application Insights te permite monitorear el rendimiento, los errores y los patrones de uso de tu aplicacion web en tiempo real.

Es una funcion de Azure Monitor y una herramienta APM (Application Performance Management) especializada para aplicaciones web.

| Funcion | Descripcion | Ejemplo | |---------|-------------|---------| | Monitoreo de rendimiento | Mide tiempo de respuesta y rendimiento | Tiempo de respuesta promedio de API: 200ms | | Seguimiento de errores | Registra y analiza excepciones | 5 NullReferenceException por hora | | Analisis de patrones de uso | Comprende el comportamiento del usuario | Tasa de abandono del 30% en la pagina de pago | | Monitoreo de dependencias | Rastrea llamadas a servicios externos | Lentitud de DB, retrasos en API externas |

 

Instrumentacion

La instrumentacion es el proceso de adjuntar "sensores" a tu aplicacion. Igual que un auto necesita sensores fisicos para que el tablero muestre datos, tu app necesita codigo de instrumentacion para que Application Insights recopile datos.

Instrumentacion con SDK (manual)

Agrega el SDK de Application Insights directamente al codigo para mayor control.

Auto-instrumentacion (sin codigo)

Activa Application Insights desde la configuracion de Azure App Service sin modificar el codigo. Rapido y sencillo, pero no permite agregar eventos personalizados.

Tipos de datos recopilados automaticamente:

Solicitudes: informacion de solicitudes y respuestas HTTP Dependencias: llamadas a DB, llamadas a API externas Excepciones: errores no controlados Vistas de pagina: recopiladas desde el navegador (requiere SDK de JavaScript) Eventos personalizados: agregados manualmente por el desarrollador

 

Rastreo distribuido (Distributed Tracing)

En un entorno de microservicios, una sola solicitud recorre multiples servicios. Por ejemplo, un pedido de tienda en linea fluye por: Servicio de Pedidos → Servicio de Inventario → Servicio de Pagos → Servicio de Envio.

El rastreo distribuido conecta todo este flujo con un solo hilo para poder seguirlo de extremo a extremo, como el seguimiento de paquetes de mensajeria: sabes exactamente que servicio tardo cuanto tiempo.

Conceptos clave

| Concepto | Descripcion | |---------|-------------| | Mapa de aplicacion (Application Map) | Muestra las relaciones de llamada entre servicios como un mapa visual | | Transaccion de extremo a extremo | Muestra la ruta completa de una solicitud y el tiempo en cada paso | | ID de correlacion (Correlation ID) | Identificador unico que vincula una solicitud entre servicios |

En el mapa de aplicacion, cada servicio aparece como un nodo con lineas de conexion. Los nodos con alta tasa de errores o respuestas lentas se resaltan con color.

 

Pruebas de disponibilidad (Availability Tests)

Las pruebas de disponibilidad son como los chequeos medicos regulares de tu aplicacion. Envian solicitudes automaticamente desde varias ubicaciones alrededor del mundo y te alertan si la aplicacion no responde o responde muy lento.

| Tipo de prueba | Descripcion | Cuando usarla | |--------------|-------------|--------------| | URL Ping | Envia un GET a una URL y verifica el codigo y tiempo de respuesta | La verificacion de salud mas basica | | Standard | Puede verificar validez del certificado SSL y elegir metodo HTTP | Mas detallada que URL Ping | | TrackAvailability personalizado | Envia resultados de disponibilidad directamente desde codigo | Para escenarios complejos como flujos de inicio de sesion |

Los resultados aparecen en la pestana "Disponibilidad" y los fallos pueden activar notificaciones por correo o SMS a traves de un Action Group.

 

Metricas en vivo (Live Metrics)

Live Metrics es como un monitor de electrocardiograma para tu aplicacion: muestra el latido en tiempo real. Usalo justo despues de desplegar una nueva version para detectar problemas en el momento en que aparecen.

Muestra conteo de solicitudes, tiempo de respuesta y uso de CPU con menos de 1 segundo de retraso Verifica de inmediato si algo esta mal despues del despliegue Las excepciones aparecen en el flujo en vivo a medida que ocurren

 

Alertas (Alerts)

Las alertas notifican automaticamente cuando algo va mal, como una alarma contra incendios que suena en el momento en que se detecta un problema.

Componentes de una alerta

| Componente | Rol | Ejemplo | |----------|-----|---------| | Regla de alerta (Alert Rule) | Define que condicion dispara la alerta | Tiempo de respuesta > 2 segundos durante 5 minutos consecutivos | | Tipo de condicion | Basado en una metrica o en una consulta de log | CPU > 80% / Aparece un log de error | | Action Group | Que hacer y a quien notificar cuando se dispara la alerta | Correo, SMS, Webhook, Azure Function |

Los Action Groups se pueden reutilizar en multiples reglas de alerta, lo que facilita gestionar un unico destino de notificacion estandar para todo el equipo.

 

Puntos clave del examen

"Monitorear rendimiento, errores y patrones de uso de una app web" -- Application Insights (funcion de Azure Monitor)

"Activar Application Insights en App Service sin cambios de codigo" -- Auto-instrumentacion

"El desarrollador registra un evento de negocio personalizado" -- TelemetryClient.TrackEvent()

"Visualizar relaciones de llamada entre microservicios como un mapa" -- Mapa de aplicacion (Application Map)

"Ver la ruta completa que tomo una solicitud por todos los servicios" -- Transaccion de extremo a extremo

"Enviar periodicamente GET a una URL para verificar si la app esta viva" -- Prueba URL Ping

"Prueba de disponibilidad para escenarios complejos como inicio de sesion" -- TrackAvailability()

"Verificar solicitudes y errores en tiempo real justo despues del despliegue" -- Live Metrics

"Enviar correo o SMS cuando se cumple una condicion especifica" -- Regla de alerta + Action Group

"Reutilizar los mismos destinos de notificacion en multiples reglas de alerta" -- Action Group

Volver a la lista del blog