Compartir a través de


Investigación de errores, rendimiento y transacciones con Application Insights

Application Insights recopila telemetría de la aplicación para ayudar a diagnosticar errores e investigar transacciones lentas. Incluye cuatro herramientas esenciales:

  • Errores : realiza un seguimiento de los errores, las excepciones y los errores, lo que ofrece información clara para una rápida resolución de problemas y una estabilidad mejorada.

  • Rendimiento : identifica y ayuda a resolver rápidamente los cuellos de botella de la aplicación mostrando los tiempos de respuesta y los recuentos de operaciones.

  • Búsqueda de transacciones : permite a los usuarios buscar y examinar elementos de telemetría individuales, como vistas de página, excepciones y eventos personalizados.

  • Diagnósticos de transacciones : ayuda a identificar rápidamente los problemas de los componentes a través de información completa sobre los detalles de las transacciones de un extremo a otro.

Juntas, estas herramientas garantizan el mantenimiento y la eficacia continuas de las aplicaciones web. Puede usarlos para identificar problemas o mejoras que podrían tener el mayor impacto en los usuarios.

Para ir a la vista Errores de Application Insights, seleccione el gráfico Solicitudes con errores en el panel Información general o Errores en la categoría Investigar del menú de recursos.

Captura de pantalla que muestra cómo llegar a la vista

También puede acceder a la vista de errores desde el Mapa de Aplicaciones seleccionando un recurso y, a continuación, Investigar errores en la sección de triaje.

Nota:

Puede acceder a diagnósticos de transacciones a través de cualquiera de las otras tres experiencias. Para obtener más información, consulte Investigación de telemetría.

Información general

La vista Errores muestra una lista de todas las operaciones con errores recopiladas para la aplicación con la opción de profundizar en cada una de ellas. Le permite ver su frecuencia y el número de usuarios afectados, para ayudarle a centrar sus esfuerzos en los problemas con el mayor impacto.

Captura de pantalla que muestra la vista

Nota:

Además de la telemetría integrada enviada por Azure Monitor OpenTelemetry Distro o SDK de JavaScript, es posible agregar y modificar la telemetría (por ejemplo, eventos personalizados).

Para más información, consulte Incorporación y modificación de OpenTelemetry de Azure Monitor para aplicaciones de .NET, Java, Node.jsy Python.

Telemetría de filtro

Filtros predeterminados

Todas las experiencias permiten filtrar la telemetría por intervalo de tiempo. Además, cada experiencia incluye su propio filtro predeterminado:

Puede seleccionar qué servicio (nombre de rol en la nube) o máquina/contenedor (instancia de rol en la nube) ver desde el menú filtro de roles. Esta acción permite aislar problemas o tendencias de rendimiento dentro de partes específicas de la aplicación.

Para obtener información sobre cómo establecer el Cloud Role Name y el Cloud Role Instance, consulte Configurar Azure Monitor OpenTelemetry.

Agregar filtros

Puede filtrar eventos por los valores de sus propiedades. Las propiedades disponibles dependen de los tipos de evento o telemetría que haya seleccionado. Para agregar un filtro:

  1. Seleccione el icono Filtro para agregar un filtro.

    Píldora de filtro

  2. En la lista desplegable izquierda, seleccione una propiedad.

  3. En la lista desplegable central, seleccione uno de los operadores siguientes: =, !=, containso not contains.

  4. En la lista desplegable derecha, seleccione todos los valores de propiedad en los que desea filtrar.

    Nota:

    Observe que los recuentos a la derecha de los valores de filtro muestran cuántas repeticiones hay en el conjunto filtrado actual.

  5. Para agregar otro filtro, vuelva a seleccionar Icono de filtro .

Búsqueda de telemetría

Puede buscar operaciones específicas mediante el campo Buscar para filtrar elementos... encima de la lista de operaciones.

Captura de pantalla que muestra el campo

Uso de datos de análisis

Todos los datos recopilados por Application Insights se almacenan en Log Analytics. Proporciona un lenguaje de consulta enriquecido para analizar las solicitudes que generaron la excepción que está investigando.

Sugerencia

El modo simple en Log Analytics ofrece una interfaz intuitiva de puntero y clic para analizar y visualizar los datos de registro.

  1. En la vista de rendimiento, errores o búsqueda de transacciones, seleccione Ver en registros en la barra de navegación superior y elija una consulta del menú desplegable.

    Captura de pantalla de la barra de acciones superior con el botón

  2. Esta acción le lleva a la vista Registros , donde puede modificar aún más la consulta o seleccionar una diferente de la barra lateral.

    Captura de pantalla que muestra la vista

Investigación de la telemetría

Para investigar la causa principal de un error o una excepción, puede profundizar en la operación problemática para obtener una vista detallada de la transacción de principio a fin que incluya dependencias y detalles de excepción.

  1. Seleccione una operación para ver los códigos de respuesta principales 3, los tres tipos de excepción principales y las 3 dependencias con errores principales para esa operación.

  2. En Explorar en profundidad, seleccione el botón con el número de resultados filtrados para ver una lista de operaciones de ejemplo.

  3. Seleccione una operación de ejemplo para abrir la vista Detalles de la transacción de extremo a extremo.

    Captura de pantalla que muestra la vista

    Nota:

    Las muestras sugeridas contienen telemetría relacionada de todos los componentes, incluso si el muestreo está en uso en cualquiera de ellos.

Análisis del rendimiento y los errores del lado cliente

Si instrumenta las páginas web con Application Insights, puede obtener visibilidad de las vistas de página, las operaciones del explorador y las dependencias. La recopilación de estos datos del explorador requiere agregar un script a las páginas web.

  1. Después de agregar el script, puede acceder a las vistas de página y a sus métricas de rendimiento asociadas seleccionando el botón de alternancia Explorador en la vista Rendimiento o Errores.

    Captura de pantalla en la que se resalta el botón de alternancia

    Esta vista proporciona un resumen visual de diversos datos de telemetría de la aplicación desde la perspectiva del explorador.

  2. En el caso de las operaciones del explorador, la vista de detalles de la transacción de extremo a extremo muestra las Propiedades de la Vista de Página del cliente que solicita la página, incluido el tipo de explorador y su ubicación. Esta información puede ayudar a determinar si hay problemas de rendimiento relacionados con determinados tipos de clientes.

    Captura de pantalla que muestra la vista

Nota:

Al igual que los datos recopilados para el rendimiento del servidor, Application Insights hace que todos los datos de cliente estén disponibles para el análisis profundo mediante registros.

Experiencia de diagnósticos de la transacción

La experiencia de Diagnóstico de transacciones, también denominada visualización Detalles de transacción de un extremo a otro, muestra un diagrama de Gantt de la transacción, que enumera todos los eventos con su duración y código de respuesta.

Esta experiencia de diagnóstico correlaciona automáticamente la telemetría del lado servidor de todos los componentes supervisados de Application Insights en una sola vista y admite varios recursos. Application Insights detecta la relación subyacente y le permite diagnosticar fácilmente el componente, la dependencia o la excepción de la aplicación que provocaron una ralentización o un error en la transacción.

Al seleccionar un evento específico se muestran sus propiedades, incluida información adicional, como el comando subyacente o la pila de llamadas.

Esta vista tiene cuatro partes clave:

Captura de pantalla que muestra la vista de transacciones con la lista de resultados resaltada.

En este panel contraíble se muestran los otros resultados que cumplen los criterios de filtro. Haga clic en cualquier resultado para actualizar los detalles correspondientes en las tres secciones anteriores. Intentamos buscar ejemplos con más probabilidades de tener detalles disponibles de todos los componentes, aunque el muestreo esté activo en cualquiera de ellos. Estos ejemplos se muestran como sugerencias.

Anotaciones de lanzamiento

Las anotaciones de versión marcan implementaciones y otros eventos significativos en gráficos de Application Insights, lo que permite la correlación de cambios con el rendimiento, los errores y el uso.

Anotaciones automáticas con Azure Pipelines

Azure Pipelines crea una anotación de versión durante la implementación cuando se cumplen todas las condiciones siguientes:

  • El recurso de destino se vincula a Application Insights a través de la configuración de la APPINSIGHTS_INSTRUMENTATIONKEY aplicación.
  • El recurso de Application Insights está en la misma suscripción que el recurso de destino.
  • La implementación usa una de las siguientes tareas de Azure Pipelines:
Código de tarea Nombre de tarea Versions
AzureAppServiceSettings Configuración de Azure App Service Cualquiera
AzureRmWebAppDeployment Azure App Service V3+
AzureFunctionApp Funciones de Azure Cualquiera
AzureFunctionAppContainer Azure Functions para contenedor Cualquiera
AzureWebAppContainer Aplicación web de Azure para contenedores Cualquiera
AzureWebApp Aplicación web de Azure Cualquiera

Nota:

Si sigue usando la tarea anterior de implementación de anotaciones de Application Insights, elimínela.

Configurar anotaciones en una canalización mediante un script en línea

Si no usa las tareas de la sección anterior, agregue un script en línea en la etapa de implementación.

  1. Abra una canalización existente o cree una nueva y seleccione una tarea en Fases.

  2. Agregue una nueva tarea de la CLI de Azure .

  3. Seleccione la suscripción de Azure. Establezca Tipo de script en PowerShell y establezca Ubicación del scripten Insertado.

  4. Agregue el script de PowerShell del paso 2 en Crear anotaciones de versión con la CLI de Azure a Script en línea.

  5. Agregue argumentos de script. Reemplace los marcadores de posición entre corchetes angulares.

    -aiResourceId "<aiResourceId>" `
    -releaseName "<releaseName>" `
    -releaseProperties @{"ReleaseDescription"="<a description>";
         "TriggerBy"="<Your name>" }
    

    En el ejemplo siguiente se muestran los metadatos que puede establecer en el argumento opcional releaseProperties mediante variables de compilación y versión. Haga clic en Guardar.

    -releaseProperties @{
     "BuildNumber"="$(Build.BuildNumber)";
     "BuildRepositoryName"="$(Build.Repository.Name)";
     "BuildRepositoryProvider"="$(Build.Repository.Provider)";
     "ReleaseDefinitionName"="$(Build.DefinitionName)";
     "ReleaseDescription"="Triggered by $(Build.DefinitionName) $(Build.BuildNumber)";
     "ReleaseEnvironmentName"="$(Release.EnvironmentName)";
     "ReleaseId"="$(Release.ReleaseId)";
     "ReleaseName"="$(Release.ReleaseName)";
     "ReleaseRequestedFor"="$(Release.RequestedFor)";
     "ReleaseWebUrl"="$(Release.ReleaseWebUrl)";
     "SourceBranch"="$(Build.SourceBranch)";
     "TeamFoundationCollectionUri"="$(System.TeamFoundationCollectionUri)" }
    

Creación de anotaciones de versión con la CLI de Azure

Use el siguiente script de PowerShell para crear una anotación de versión a partir de cualquier proceso, sin Azure DevOps.

  1. Inicie sesión en la CLI de Azure.

  2. Guarde el siguiente script como CreateReleaseAnnotation.ps1.

    param(
        [parameter(Mandatory = $true)][string]$aiResourceId,
        [parameter(Mandatory = $true)][string]$releaseName,
        [parameter(Mandatory = $false)]$releaseProperties = @()
    )
    
    # Function to ensure all Unicode characters in a JSON string are properly escaped
    function Convert-UnicodeToEscapeHex {
      param (
        [parameter(Mandatory = $true)][string]$JsonString
      )
      $JsonObject = ConvertFrom-Json -InputObject $JsonString
      foreach ($property in $JsonObject.PSObject.Properties) {
        $name = $property.Name
        $value = $property.Value
        if ($value -is [string]) {
          $value = [regex]::Unescape($value)
          $OutputString = ""
          foreach ($char in $value.ToCharArray()) {
            $dec = [int]$char
            if ($dec -gt 127) {
              $hex = [convert]::ToString($dec, 16)
              $hex = $hex.PadLeft(4, '0')
              $OutputString += "\u$hex"
            }
            else {
              $OutputString += $char
            }
          }
          $JsonObject.$name = $OutputString
        }
      }
      return ConvertTo-Json -InputObject $JsonObject -Compress
    }
    
    $annotation = @{
        Id = [GUID]::NewGuid();
        AnnotationName = $releaseName;
        EventTime = (Get-Date).ToUniversalTime().GetDateTimeFormats("s")[0];
        Category = "Deployment"; #Application Insights only displays annotations from the "Deployment" Category
        Properties = ConvertTo-Json $releaseProperties -Compress
    }
    
    $annotation = ConvertTo-Json $annotation -Compress
    $annotation = Convert-UnicodeToEscapeHex -JsonString $annotation  
    
    $accessToken = (az account get-access-token | ConvertFrom-Json).accessToken
    $headers = @{
        "Authorization" = "Bearer $accessToken"
        "Accept"        = "application/json"
        "Content-Type"  = "application/json"
    }
    $params = @{
        Headers = $headers
        Method  = "Put"
        Uri     = "https://management.azure.com$($aiResourceId)/Annotations?api-version=2015-05-01"
        Body    = $annotation
    }
    Invoke-RestMethod @params
    

Nota:

Para que las anotaciones aparezcan en el portal de Azure, establezca Categoría en Implementación, de lo contrario, no aparecerán.

Llame al script y pase valores para los parámetros. El -releaseProperties parámetro es opcional.

.\CreateReleaseAnnotation.ps1 `
 -aiResourceId "<aiResourceId>" `
 -releaseName "<releaseName>" `
 -releaseProperties @{"ReleaseDescription"="<a description>";
     "TriggerBy"="<Your name>" }
Argument Definición Nota:
aiResourceId Identificador de recurso del recurso de Application Insights de destino. Ejemplo: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyRGName/providers/microsoft.insights/components/MyResourceName
releaseName Nombre de la nueva anotación de versión.
releaseProperties Metadatos personalizados que se van a adjuntar a la anotación. Opcional

Visualización de anotaciones

Nota:

Las anotaciones de versión no están disponibles en el panel Métricas .

Application Insights muestra anotaciones de versión en las siguientes experiencias:

Las anotaciones se visualizan como marcadores en la parte superior de los gráficos.

Captura de pantalla del gráfico de excepciones con anotaciones.

Para habilitar las anotaciones en un libro, abra Configuración avanzada y, a continuación, seleccione Mostrar anotaciones. Seleccione cualquier marcador de anotación para abrir los detalles de la versión, como el solicitante, la rama de control de código fuente, la canalización de versión y el entorno.

Preguntas más frecuentes

Esta sección proporciona respuestas a preguntas comunes.

Búsqueda de transacciones

¿Qué es un componente?

Los componentes son partes que se pueden implementar independientemente de su aplicación de microservicio o distribuida. Los equipos de operaciones y los desarrolladores pueden ver el código o acceder a la telemetría que generan estos componentes de la aplicación.

  • Los componentes son diferentes de las dependencias externas "observadas", por ejemplo, SQL y Event Hubs, a las que el equipo o la organización podrían no tener acceso (código o telemetría).
  • Los componentes se ejecutan en cualquier número de instancias de rol, servidor o contenedor.
  • Los componentes pueden ser claves de instrumentación de Application Insights independientes, incluso si las suscripciones son diferentes. Los componentes también pueden ser diferentes roles que informan a una única clave de instrumentación de Application Insights. La nueva experiencia muestra los detalles en todos los componentes, independientemente de cómo se configuraron.

¿Cuántos datos se conservan?

Consulte Resumen de límites.


¿Cómo puedo ver los datos POST en mis solicitudes de servidor?

Aunque no registramos los datos POST automáticamente, puede usar TrackTrace o llamadas de registro. Coloque los datos POST en el parámetro de mensaje. No puede filtrar por el mensaje de la misma forma que con las propiedades, pero el límite de tamaño es mayor.


¿Por qué la búsqueda de funciones de Azure no devuelve ningún resultado?

Azure Functions no registra cadenas de consulta de dirección URL.

Diagnósticos de transacciones

¿Por qué veo un único componente en el gráfico y los demás componentes solo se muestran como dependencias externas sin detalles?

Posibles razones:

  • ¿Existen otros componentes instrumentados con Application Insights?
  • ¿Usa la versión más reciente y estable de SDK de Application Insights?
  • Si estos componentes son recursos independientes de Application Insights, valide que tiene acceso. Si tiene acceso y los componentes están instrumentados con los kits de desarrollo de software (SDKs) de Application Insights más recientes, háganoslo saber a través del canal de comentarios en la esquina superior derecha.

Veo filas duplicadas para las dependencias. ¿Se espera este comportamiento?

Actualmente, se está mostrando la llamada de dependencia de salida de forma independiente de la solicitud entrante. Por lo general, las dos llamadas son idénticas y solo difiere el valor de duración debido al recorrido de ida y vuelta de la red. El icono inicial y los distintos estilos de las barras de duración le ayudan a diferenciarlos. ¿Le resulta confusa esta presentación de los datos? Envíenos sus comentarios.


¿Qué ocurre con las desviaciones del reloj en diferentes instancias de componentes?

Las escalas de tiempo se ajustan para los desfases temporales en el gráfico de transacciones. Puede ver las marcas de tiempo exactas en el panel de detalles o con Log Analytics.


¿Por qué en la nueva experiencia faltan la mayoría de las consultas de elementos relacionados?

Este comportamiento es por diseño. Todos los elementos relacionados, en todos los componentes, están disponibles en el lado izquierdo (en las secciones superior e inferior). La nueva experiencia tiene dos elementos relacionados que no se tratan en el lado izquierdo: todos los datos de telemetría de los cinco minutos anteriores y posteriores a este evento y la escala de tiempo del usuario.


¿Hay alguna manera de ver menos eventos por transacción cuando uso el SDK de JavaScript de Application Insights?

La experiencia de diagnóstico de transacciones muestra todos los datos de telemetría en una sola operación que comparte un id. de operación. De forma predeterminada, el SDK de Application Insights crea una operación para cada vista de página única. En una aplicación de página única (SPA), solo se crea un evento de vista de página y se usa un identificador de operación único para todos los datos de telemetría generados. Como resultado, muchos eventos se pueden poner en correlación con la misma operación.

En estos escenarios, puede usar el seguimiento automático de rutas para crear automáticamente nuevas operaciones para la navegación en la aplicación de página única. Debe activar enableAutoRouteTracking para que el sistema cree una vista de página cada vez que se actualice la ruta de dirección URL (se produce una vista de página lógica). Si desea actualizar manualmente el id. de operación, llame a appInsights.properties.context.telemetryTrace.traceID = Microsoft.ApplicationInsights.Telemetry.Util.generateW3CId(). Al desencadenar manualmente un evento PageView, también se restablecerá el id. de operación.


¿Por qué las duraciones de detalles de transacción no se suman a la duración de la solicitud superior?

El tiempo que no se explica en el gráfico de Gantt es el tiempo que no está cubierto por una dependencia con seguimiento. Esta incidencia puede producirse porque las llamadas externas no se instrumentaron, ya sea de forma automática o manual. También se puede producir porque el tiempo necesario estaba en proceso, en vez de debido a una llamada externa.

Si se han instrumentado todas las llamadas, la causa principal probable del tiempo empleado es en proceso. Una herramienta útil para diagnosticar el proceso es el .NET Profiler.


¿Qué ocurre si veo el mensaje "Error al recuperar datos" al navegar por Application Insights en Azure Portal?

Este error indica que el explorador no pudo llamar a una API necesaria o que la API devolvió una respuesta de error. Para solucionar problemas del comportamiento, abra una ventana inPrivate del explorador y deshabilite las extensiones del explorador que se ejecutan; después, identifique si todavía puede reproducir el comportamiento del portal. Si el error del portal todavía se produce, pruebe a probar con otros exploradores u otras máquinas, investigue el sistema de nombres de dominio (DNS) u otros problemas relacionados con la red desde el equipo cliente donde se producen errores en las llamadas API. Si el error del portal continúa, realice un seguimiento de red del navegador mientras reproduce el comportamiento inesperado. A continuación, abra un caso de soporte técnico desde Azure Portal.

Pasos siguientes