AZ-104

Deep Dive

D5 · Monitoreo

Application Insights

Application Insights es la solución de APM (Application Performance Management) de Azure Monitor. Proporciona telemetría profunda de aplicaciones: requests, dependencias, excepciones, trazas y disponibilidad. El AZ-104 evalúa su configuración y las soluciones Insights por servicio.

Application Insights — qué es

Application Insights es un servicio de APM (Application Performance Monitoring) extensible que monitorea aplicaciones en vivo. Detecta anomalías de rendimiento automáticamente, incluye herramientas de diagnóstico potentes y trabaja con múltiples lenguajes/frameworks.

Lenguajes y frameworks soportados

  • .NET / .NET Core
  • Java (auto-instrumentation via agent)
  • Node.js (JavaScript/TypeScript)
  • Python
  • PHP, Ruby, Go (telemetría básica)
  • JavaScript (browser) — client-side

Qué monitorea

  • Request rates, response times, failure rates
  • Dependency rates (DB, REST, Redis)
  • Exceptions y stack traces
  • Page views y tiempos de carga (browser)
  • Availability (probes externos)
  • Custom events y métricas de negocio

Dónde se usa

  • App Service — integración nativa (un click)
  • Azure Functions — telemetría automática
  • VMs y servidores on-premises (con SDK)
  • AKS — via auto-instrumentation
  • Aplicaciones en cualquier nube (SDK)
  • SPAs y mobile apps (JS SDK)

Classic vs Workspace-based

Classic (legacy)

Almacenamiento propio aislado. Sin acceso desde Log Analytics. En deprecación.

Workspace-based (recomendado)

Los datos se almacenan en un Log Analytics Workspace. Queries KQL, RBAC unificado, retención configurable, correlación con otros datos del workspace.

Conceptos clave

Instrumentation Key: clave única del recurso. Deprecated — migrar a Connection String.

Connection String: configuración completa de conexión. Recomendado para nuevas apps.

Sampling: para reducir volumen de datos y costos. Adaptive sampling ajusta automáticamente.

Live Metrics: telemetría en tiempo real sin latencia para debugging en producción.

Instrumentación — SDK y auto-instrumentación

SDK (manual)

Incluir el paquete NuGet/npm/pip en la aplicación y configurar la Connection String. Máximo control sobre qué se instrumenta y cómo.

Ventajas

  • +Control total de la telemetría
  • +Custom events y métricas de negocio
  • +Telemetría detallada de dependencias
  • +Funciona en cualquier entorno (on-prem, otras nubes)

Limitaciones

  • Requiere modificar el código
  • Más trabajo de configuración inicial

Auto-instrumentación (sin código)

Azure inyecta el agente automáticamente sin modificar el código. Disponible en App Service, Azure Functions, y Java con agente.

Ventajas

  • +Zero code changes — habilitar en Portal o config
  • +Rápido de desplegar
  • +Cubre casos comunes (HTTP, SQL, Redis)

Limitaciones

  • Menor control — no todos los telemetry types disponibles
  • Solo disponible en entornos compatibles

Tipos de telemetría

TipoTabla KQLQué capturaEjemplo
RequestsrequestsPeticiones HTTP entrantes a la appGET /api/orders — 200ms — Success
DependenciesdependenciesLlamadas a servicios externos (SQL, HTTP, Redis)SQL query "SELECT * FROM Orders" — 50ms
ExceptionsexceptionsExcepciones no manejadas y erroresNullReferenceException en OrderService.cs:42
TracestracesLogs de texto de la aplicación (ILogger, log4j)Processing order 12345
Custom EventscustomEventsEventos de negocio personalizadosOrderCompleted, UserRegistered, FeatureEnabled
Custom MetricscustomMetricsMétricas numéricas de negocioQueueLength=342, OrderValue=99.99
Page ViewspageViewsVistas de páginas (browser SDK)/checkout — 1.2s carga — Chrome
AvailabilityavailabilityResultsResultados de tests de disponibilidadPing https://myapp.com — Success — 120ms

Application Map

Mapa visual automático de las dependencias de la aplicación. Muestra todos los componentes (frontend, backend, DBs, APIs externas) y el rendimiento de cada conexión. Identifica cuellos de botella y fallos rápidamente. Se genera automáticamente a partir de los datos de dependencies.

End-to-End Transaction Diagnostics

Correlaciona todas las operaciones de una petición end-to-end: desde el request HTTP, pasando por dependencias SQL/Redis, hasta los logs y excepciones — todo con el mismo correlationId. Permite ver exactamente qué pasó en cada capa de la aplicación durante una transacción específica.

Availability Tests

Los Availability Tests son pruebas periódicas enviadas desde múltiples ubicaciones geográficas de Azure para verificar que tu aplicación está disponible y respondiendo correctamente desde internet.

URL ping test

Simple HTTP GET a una URL. Verifica código de respuesta y tiempo de carga. Hasta 5 ubicaciones simultáneas. Más sencillo y sin costo adicional.

Standard test

Similar a URL ping pero con soporte para SSL lifetime checks, HTTP verbs personalizados, custom headers, request body, response validation.

Custom TrackAvailability

Llamas al SDK con trackAvailability() para reportar resultados de tests de disponibilidad personalizados — ej: tests de login, flujos de negocio end-to-end.

Configuración de alertas de disponibilidad

• Frecuencia de test: 5, 10 o 15 minutos

• Ubicaciones: elegir 5+ para detectar outages regionales

• Threshold de alerta: ej, alerta si 3 de 5 ubicaciones fallan

• Retry logic: el test reintenta antes de considerar fallo para reducir falsos positivos

• Los resultados se almacenan en tabla availabilityResults

Smart Detection

Smart Detection es la detección automática de anomalías de rendimiento y fallos usando machine learning. No requiere configurar umbrales — aprende el comportamiento normal de la app y alerta cuando detecta desviaciones significativas.

Failure Anomalies

Detecta aumentos anormales en la tasa de fallos de requests o dependencias, comparando con el baseline histórico de la app. Tiene en cuenta patrones como más fallos en días de tráfico alto.

Performance Degradation

Detecta degradación en tiempos de respuesta de requests o dependencias. Alerta cuando el percentil P90 aumenta significativamente respecto al baseline.

Memory Leak Detection

Detecta patrones de crecimiento de uso de memoria que sugieren memory leaks. Útil para detectar problemas antes de que causen OOM en producción.

Slow Page Load

Detecta páginas específicas con tiempos de carga anormalmente lentos comparando con el historial de la misma página.

VM Insights y Container Insights

VM Insights

Solución de monitoreo predefinida para VMs y VMSS. Proporciona vistas curadas de rendimiento (CPU, memoria, disco, red), mapa de dependencias (qué procesos están conectando con qué) y tabla de datos de agente.

• Requiere: Azure Monitor Agent + Data Collection Rule

• Performance view: métricas de top N VMs con mayor CPU/memoria

• Map view: visualización de conexiones TCP entre procesos y VMs

• Soporta Azure Arc (máquinas on-premises)

• Datos en tablas: InsightsMetrics, VMComputer, VMConnection

Container Insights

Solución de monitoreo para AKS y contenedores. Recopila métricas y logs de nodos, pods y contenedores.

• Habilitar desde: AKS → Monitoring → Insights o desde Azure Monitor

• Métricas: CPU y memoria de nodos y pods, count de pods

• Logs de contenedores: stdout/stderr de cada contenedor

• Vistas curadas: Cluster utilization, Node utilization, Pod failures

• Datos en tablas: ContainerLog, KubePodInventory, KubeNodeInventory

¿Entendiste este tema?

Pon a prueba lo que acabas de aprender

Una aplicación web en Azure App Service está experimentando errores 500 intermitentes. Un administrador quiere ver el stack trace completo y correlacionar los errores con las queries de base de datos que los precedieron. ¿Qué herramienta proporciona esta visibilidad?