Implementación de Application Insights

Completado

En esta unidad se proporcionan instrucciones prácticas para implementar Application Insights en las aplicaciones, que abarcan el flujo de trabajo completo de la instalación a la supervisión y optimización continuas.

Supervisión: Establecimiento de visibilidad continua

Después de instalar Application Insights en la aplicación, configure las pruebas web de disponibilidad para supervisar la aplicación desde perspectivas externas. A continuación, implemente estas prácticas de supervisión:

Configurar paneles para la visibilidad del equipo

Cree un panel de control para la sala de tu equipo para supervisar las métricas críticas:

Métricas clave para mostrar:

  • Métricas de carga: Tasa de solicitudes, usuarios simultáneos, rendimiento
  • Respuesta: Percentiles de tiempo de respuesta (50, 95, 99)
  • Rendimiento de dependencias: Tiempos de consulta de base de datos, latencias de llamada api, tasas de aciertos de caché
  • Métricas del lado cliente: Tiempos de carga de páginas, rendimiento de llamadas AJAX
  • Tasas de error: Solicitudes con error, excepciones, errores de dependencia

Procedimientos recomendados para paneles:

  • Actualización en tiempo real durante las implementaciones
  • Mostrar en monitores en áreas de equipo
  • Indicadores de estado de código de color (verde/amarillo/rojo)
  • Incluir métricas de cumplimiento del Acuerdo de Nivel de Servicio
  • Mostrar tendencias a lo largo del tiempo junto con los valores actuales

Identificación de problemas de rendimiento

Descubra cuáles son las solicitudes más lentas y con errores:

  • Ordenar solicitudes por tiempo de respuesta para buscar cuellos de botella
  • Identificación de solicitudes con tasas de error más altas
  • Correlacionar las solicitudes de baja velocidad con dependencias
  • Seguimiento de la regresión del rendimiento entre implementaciones
  • Priorizar la optimización en función del impacto del usuario

Validación de implementaciones con Live Stream

Vea Live Stream al implementar una nueva versión:

  • Saber inmediatamente sobre cualquier degradación
  • Supervisión de las tasas de error en tiempo real (actualización de 1 segundo)
  • Ver las solicitudes fallidas a medida que se producen
  • Seguimiento de errores de dependencia
  • Validar el rendimiento antes de completar la implementación

Detectar, diagnosticar: resolución rápida de problemas

Cuando recibe una alerta o detecta un problema, Application Insights proporciona funcionalidades de diagnóstico completas:

Evaluación del impacto del usuario

Determine cuántos usuarios se ven afectados:

  • Consulta de telemetría para el recuento de usuarios afectados
  • Identificación de la distribución geográfica del impacto
  • Determinar si el problema afecta a todos los usuarios o segmentos específicos
  • Calcular el impacto empresarial (ingresos perdidos, transacciones abandonadas)
  • Priorizar la resolución en función de la gravedad del impacto del usuario

Consulta KQL de ejemplo:

requests
| where timestamp > ago(1h)
| where success == false
| summarize AffectedUsers = dcount(user_Id), FailedRequests = count() by resultCode

Correlacionar errores con excepciones, llamadas de dependencia y seguimientos:

  • Vinculación del identificador de operación: Todos los datos de telemetría de una solicitud comparten un identificador de operación
  • Vista de transacción de un extremo a otro: Consulte el flujo de solicitudes completo entre los servicios.
  • Correlación de excepciones: Vincular excepciones a las solicitudes que las desencadenó
  • Análisis de dependencias: Identificar qué servicio de bajada provocó el error
  • Correlación del registro: Visualización de los registros de la aplicación en el contexto de la solicitud con error

Flujo de trabajo de investigación:

  1. Comenzar con solicitud fallida en la búsqueda de diagnóstico
  2. Visualización de todos los datos de telemetría relacionados mediante el identificador de operación
  3. Examen de las llamadas de dependencia para identificar servicios lentos o con errores
  4. Revisión de los detalles de excepciones y seguimientos de pila
  5. Comprobación de los registros de aplicación para obtener contexto adicional

Herramientas de diagnóstico profundo

Examinador de perfiles, instantáneas, volcados de pila y registros de seguimiento:

Perfilador:

  • Consulte el desglose del rendimiento de nivel de código.
  • Identificar qué métodos consumieron más tiempo
  • Búsqueda de algoritmos o consultas ineficaces

Depurador de instantáneas:

  • Captura de instantáneas de memoria de producción
  • Visualización de valores de variables locales en el momento de la excepción
  • Depuración sin reproducir localmente

Volcados de pila:

  • Seguimiento de pila completo para cada excepción
  • Navegación desde la excepción al código fuente
  • Descripción de la cadena de llamadas que conduce a un error

Registros de seguimiento:

  • Registros de aplicaciones correlacionados con solicitudes
  • Búsqueda de registros de eventos a través de servicios distribuidos
  • Filtrar por gravedad, intervalo de tiempo, propiedades personalizadas

Build, Measure, Learn: Desarrollo controlado por datos

Mida la eficacia de cada nueva característica que implemente mediante un enfoque estructurado basado en datos:

Planear la estrategia de medición

Planee medir cómo los clientes usan nuevas características empresariales o de experiencia de usuario:

Antes del desarrollo:

  • Definir métricas de éxito (tasa de adopción, tasa de conversión, compromiso)
  • Identificación de las acciones clave del usuario para realizar un seguimiento
  • Determinar criterios de segmentación (tipo de usuario, geografía, dispositivo)
  • Establecimiento de métricas de línea base para la comparación
  • Fijar metas para el éxito de las funcionalidades

Dimensiones de medida:

  • Adopción: ¿Qué porcentaje de usuarios prueban la nueva característica?
  • Compromiso: ¿Con qué frecuencia interactúan los usuarios?
  • Terminación: ¿Los usuarios finalizan el flujo de trabajo?
  • Rendimiento: ¿La característica funciona bien?
  • Satisfacción: ¿Los usuarios son exitosos y felices?

Implementación de telemetría personalizada

Escriba telemetría personalizada en el código para capturar eventos específicos de la empresa:

Eventos personalizados:

telemetryClient.TrackEvent("FeatureUsed",
    properties: new Dictionary<string, string> {
        {"FeatureName", "AdvancedSearch"},
        {"UserTier", "Premium"}
    },
    metrics: new Dictionary<string, double> {
        {"SearchResultCount", 42},
        {"SearchDurationMs", 150}
    });

Métricas personalizadas:

telemetryClient.TrackMetric("CartValue", orderTotal);
telemetryClient.TrackMetric("ItemsInCart", itemCount);

Procedimientos recomendados de instrumentación:

  • Uso de convenciones de nomenclatura coherentes
  • Adición de propiedades pertinentes para la segmentación
  • Incluir marcas de tiempo para el análisis temporal
  • No realizar un seguimiento de la información de identificación personal (PII)
  • Mantener la telemetría ligera (evitar una cardinalidad alta)

Tomar decisiones controladas por datos

Base el siguiente ciclo de desarrollo en datos sólidos de la telemetría:

Flujo de trabajo de análisis:

  1. Comparación de métricas: Rendimiento de funcionalidades frente a línea de referencia
  2. Análisis de segmentos: Rendimiento en diferentes grupos de usuarios
  3. Análisis de embudo: puntos de entrega en flujos de varios pasos
  4. Análisis de cohortes: Retención de usuarios que adoptaron la característica
  5. Análisis de impacto: Correlación con los resultados empresariales

Marco de decisión:

Si las métricas superan los objetivos:

  • Invertir en la expansión de la funcionalidad
  • Aplicación de aprendizajes a características similares
  • Considere la posibilidad de hacer que la característica sea más destacada

Si las métricas cumplen los objetivos:

  • Mantenimiento y supervisión
  • Mejoras incrementales basadas en comentarios
  • Traslado de recursos a otras prioridades

Si las métricas están por debajo del rendimiento:

  • Analizar por qué (facilidad de uso, detectabilidad, propuesta de valor)
  • Mejoras de pruebas A/B
  • Considere la posibilidad de dejar de usar si no hay ninguna ruta de acceso correcta

Escenario de ejemplo: El nuevo motor de recomendaciones muestra 60% adopción, pero solo 15% conversión (el destino era 25%). El análisis revela que las recomendaciones son precisas, pero la interfaz de usuario es confusa. El siguiente sprint se centra en las mejoras de la experiencia del usuario en lugar de en las mejoras de algoritmo.

Introducción: Enfoques de implementación

Application Insights es uno de los muchos servicios hospedados en Microsoft Azure y la telemetría se envía allí para su análisis y presentación.

Prerrequisitos

Antes de empezar, necesitará una suscripción a Microsoft Azure:

Opciones de suscripción:

  • Registro gratuito: No se requiere tarjeta de crédito para la evaluación gratuita
  • Pago por uso: Solo paga por lo que usas
  • Contrato Enterprise: Tarifas negociadas para organizaciones
  • Azure for Students: Créditos gratuitos para estudiantes

Consideraciones sobre precios: Si elige el plan de precios básico de Application Insights, no hay ningún cargo hasta que la aplicación haya crecido para tener un uso grande:

  • Nivel gratis: Primera ingesta de 5 GB/mes incluida
  • Pago por GB: Más allá del nivel gratuito, pagar solo por los datos ingeridos
  • Niveles de compromiso: Descuentos por uso predecible

Acceso organizativo: Si su organización ya tiene una suscripción, podría agregarle su cuenta microsoft. Póngase en contacto con el administrador de Azure para obtener acceso.

Estrategias de implementación

Hay varias maneras de empezar. Comience con lo que mejor funcione para usted. Puede agregar los demás más adelante.

Enfoque 1: Instrumentación en tiempo de ejecución

Instrumentar la aplicación web en el servidor sin cambiar el código:

Ventajas:

  • Evita cualquier actualización del código: No es necesario volver a compilar ni volver a implementar
  • Supervisión inmediata: Inicio de la recopilación de telemetría en cuestión de minutos
  • Sin dependencias del SDK: No hay cambios en las dependencias de la aplicación
  • Listo para producción: Seguro para las aplicaciones de producción existentes

Requisitos:

  • Acceso de administrador al servidor: Necesario para instalar el agente de supervisión
  • Solo las plataformas admitidas: No todas las plataformas admiten la instrumentación durante la ejecución

Plataformas compatibles:

IIS local o en una máquina virtual:

  • Windows Server con IIS 7.5 o posterior
  • aplicaciones de ASP.NET (Framework o Core)
  • Instala el Monitor de estado o el agente de Application Insights.
  • Instrumenta automáticamente sin cambiar el código

Aplicación web o máquina virtual de Azure:

  • Habilitación de Application Insights a través de Azure Portal
  • Integración con un solo clic para Azure App Service
  • Extensión de máquina virtual para Máquinas Virtuales de Azure
  • Instrumentación automática con cero cambios de código

J2EE:

  • Aplicaciones Java que se ejecutan en Tomcat, JBoss o WebLogic
  • Instrumentación basada en agentes
  • Captura solicitudes, dependencias, excepciones
  • Funciona con Spring Boot, Jakarta EE

Enfoque 2: integración del SDK en tiempo de desarrollo

Agregue Application Insights al código para un control y personalización completos:

Ventajas:

  • Telemetría personalizada: Escritura de métricas y eventos específicos de la empresa
  • Control total: Configuración del muestreo, filtrado, procesadores
  • Todas las plataformas: No se limita a las aplicaciones web
  • Depuración local: Prueba de telemetría durante el desarrollo

Requisitos:

  • Acceso al código fuente: Modificación y recompilación de la aplicación
  • Integración del SDK: Adición de paquetes NuGet/Maven/npm
  • Tiempo de desarrollo: Configuración inicial y pruebas necesarias

Plataformas compatibles:

Visual Studio (ASP.NET):

  • Visual Studio 2013 actualización 2 o posterior
  • Instalación de paquetes NuGet
  • Instrumentación automática + telemetría personalizada
  • IntelliSense para las API de telemetría

Java:

  • La dependencia de Maven o Gradle
  • Compatibilidad con la configuración automática de Spring Boot
  • Frameworks de Jakarta EE y Micronaut
  • Instrumentación manual para eventos personalizados

Node.js

  • Instalación del paquete de npm
  • Express, Koa, compatibilidad con el framework Hapi
  • Seguimiento automático de dependencias
  • Seguimiento de eventos y métricas personalizados

Otras plataformas:

  • Python (Flask, Django)
  • Ruby (Rails, Sinatra)
  • PHP (Laravel, Symfony)
  • SDK comunitarios de Go, Rust y más

Instrumentación del lado cliente

Configura tu sitio web para una monitorización completa:

Funcionalidades del SDK de JavaScript:

  • Vistas de página: Seguimiento de la navegación en SPA
  • Llamadas AJAX: Supervisión de solicitudes de API desde el explorador
  • Excepciones del lado cliente: Captura de errores de JavaScript
  • Métricas de rendimiento: Tiempo de carga de páginas, tiempo de tiempo de recursos
  • Análisis de usuarios: Seguimiento de sesiones, flujos de usuario

Implementación:

  • Adición de un fragmento de código de JavaScript a páginas HTML
  • Seguimiento automático de vistas de páginas
  • Correlación de telemetría de cliente y servidor
  • Funciona con react, Angular, marcos de Vue

Supervisión de aplicaciones móviles

Analizar el uso de aplicaciones móviles mediante la integración con Visual Studio App Center:

Compatibilidad con la plataforma móvil:

  • iOS (Swift, Objective-C)
  • Android (Java, Kotlin)
  • React Native
  • Xamarin, Flutter

Características específicas de dispositivos móviles:

  • Informes de bloqueos
  • Analytics (sesiones, eventos, propiedades de usuario)
  • Seguimiento de notificaciones push
  • Integración de distribución y pruebas

Supervisión sintética

Pruebas de disponibilidad:

Tipos de prueba:

  • Pruebas de ping de dirección URL: Comprobaciones de disponibilidad de puntos de conexión simples
  • Pruebas web de varios pasos: Escenarios de usuario registrados
  • TrackAvailability personalizado: seguimiento de disponibilidad basado en código

Configuración de prueba:

  • Hacer ping al sitio web regularmente desde ubicaciones distribuidas
  • Supervisión desde más de 5 regiones globales de Azure
  • Alerta cuando los puntos de conexión no están disponibles
  • Medición del tiempo de respuesta desde las perspectivas del usuario

Elección del enfoque adecuado

Scenario Enfoque recomendado
Aplicación de producción existente, no se puede modificar el código Instrumentación en tiempo de ejecución
Nuevo desarrollo de aplicaciones Integración del SDK en tiempo de desarrollo
Necesidad de eventos empresariales personalizados Integración del SDK (obligatorio)
Solo aplicación web Instrumentación en tiempo de ejecución (más fácil)
Aplicación móvil Visual Studio App Center + App Insights
Supervisión completa (servidor y cliente) Integración del SDK + fragmento de código de JavaScript
Solo disponibilidad externa Pruebas de disponibilidad