Solución de problemas de habilitación del depurador de instantáneas de Application Insights o visualización de instantáneas

Si ha habilitado El depurador de instantáneas de Application Insights para la aplicación, pero no ve instantáneas para excepciones, puede usar estas instrucciones para solucionar problemas.

Puede haber muchas razones diferentes por las que no se generan instantáneas. Para empezar, ejecute la comprobación de estado de instantáneas para identificar algunas de las posibles causas comunes.

Escenarios no admitidos

A continuación, puede encontrar escenarios en los que no se admite snapshot Collector:

Escenario Efectos secundarios Recomendación
Cuando se usa el SDK de Snapshot Collector en la aplicación directamente (.csproj) y se ha habilitado la opción anticipada "Interoperabilidad". Se perderá el SDK local de Application Insights (incluida la telemetría del recopilador de instantáneas); por lo tanto, no habrá instantáneas disponibles.
La aplicación podría bloquearse al iniciarse con System.ArgumentException: telemetryProcessorTypedoes not implement ITelemetryProcessor
Para obtener más información sobre la característica "Interoperabilidad" de Application Insights, consulte Supervisión de aplicaciones para Azure App Service y ASP.NET Core.
Si usa la opción avanzada "Interop", use la inyección de Snapshot Collector sin código (habilitada a través de la experiencia de usuario de Azure Portal).

Asegúrese de que usa el punto de conexión de Snapshot Debugger adecuado.

Actualmente, las únicas regiones que requieren modificaciones de punto de conexión son Azure Government y Azure China.

Para App Service y aplicaciones que usan el SDK de Application Insights, debe actualizar el cadena de conexión mediante las invalidaciones admitidas para Snapshot Debugger, tal como se define a continuación:

Propiedad de cadena de conexión Nube del gobierno de EE. UU. Nube de China
SnapshotEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Para obtener más información sobre otras invalidaciones de conexión, consulte la documentación de Application Insights.

Para Function App, tiene que actualizar host.json mediante las invalidaciones admitidas a continuación:

Propiedad Nube del gobierno de EE. UU. Nube de China
AgentEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Este es un ejemplo de la host.json actualización con el punto de conexión del agente de la nube de Us Government:

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingExcludedTypes": "Request",
      "samplingSettings": {
        "isEnabled": true
      },
      "snapshotConfiguration": {
        "isEnabled": true,
        "agentEndpoint": "https://snapshot.monitor.azure.us"
      }
    }
  }
}

Uso de la comprobación de estado de instantánea

Varios problemas comunes provocan que la instantánea de depuración abierta no aparezca. Por ejemplo, se usa un recopilador de instantáneas obsoleto; se alcanza el límite de carga diario; o quizás la instantánea está tardando mucho tiempo en cargarse. Use la comprobación de estado de instantáneas para solucionar problemas comunes.

Hay un vínculo en el panel de excepciones de la vista de seguimiento de un extremo a otro que le lleva a la comprobación de estado de instantáneas.

Captura de pantalla que muestra cómo escribir la comprobación de estado de instantáneas.

La interfaz interactiva similar al chat busca problemas comunes y le guía para corregirlos.

Captura de pantalla que muestra la ventana de comprobación de estado interactiva en la que se enumeran los problemas y sugerencias sobre cómo corregirlos.

Si esto no soluciona el problema, consulte los siguientes pasos de solución de problemas manuales.

Comprobación de la clave de instrumentación

Asegúrese de que usa la clave de instrumentación correcta en la aplicación publicada. Normalmente, la clave de instrumentación se lee desde el archivo ApplicationInsights.config . Compruebe que el valor es el mismo que la clave de instrumentación del recurso de Application Insights que ve en el portal.

El 31 de marzo de 2025 finalizará la compatibilidad con la ingesta de claves de instrumentación. La ingesta de claves de instrumentación seguirá funcionando, pero ya no proporcionaremos actualizaciones ni compatibilidad con la característica. Transición a cadenas de conexión para aprovechar las nuevas funcionalidades.

Comprobación de la configuración del cliente TLS/SSL (ASP.NET)

Si tiene una aplicación ASP.NET hospedada en Azure App Service o en IIS en una máquina virtual, la aplicación podría no conectarse al servicio Snapshot Debugger debido a que falta un protocolo de seguridad SSL.

El punto de conexión de Snapshot Debugger requiere la versión 1.2 de TLS. El conjunto de protocolos de seguridad SSL es una de las peculiaridades habilitadas por el httpRuntime targetFramework valor de la system.web sección de web.config. Si es httpRuntime targetFramework 4.5.2 o inferior, TLS 1.2 no se incluye de forma predeterminada.

Nota:

El httpRuntime targetFramework valor es independiente de la plataforma de destino que se usa al compilar la aplicación.

Para comprobar la configuración, abra el archivo web.config y busque la sección system.web. Asegúrese de que para targetFrameworkhttpRuntime está establecido en 4.6 o posterior.

<system.web>
   ...
   <httpRuntime targetFramework="4.7.2" />
   ...
</system.web>

Nota:

La modificación del httpRuntime targetFramework valor cambia las peculiaridades en tiempo de ejecución aplicadas a la aplicación y puede provocar otros cambios de comportamiento sutiles. Asegúrese de probar la aplicación exhaustivamente después de realizar este cambio. Para obtener una lista completa de los cambios de compatibilidad, consulte Cambio de destino.

Nota:

Si es targetFramework 4.7 o una versión posterior, Windows determina los protocolos disponibles. En Azure App Service, TLS 1.2 está disponible. Sin embargo, si usa su propia máquina virtual, es posible que tenga que habilitar TLS 1.2 en el sistema operativo.

Versiones preliminares de .NET Core

Si usa una versión preliminar de .NET Core o la aplicación hace referencia al SDK de Application Insights, directa o indirectamente a través de un ensamblado dependiente, siga las instrucciones de Habilitar Snapshot Debugger para otros entornos.

Comprobación de la página de estado de la extensión de sitio de Diagnostic Services

Si Snapshot Debugger se ha habilitado a través del panel Application Insights del portal, la extensión de sitio de Diagnostic Services la ha habilitado.

Nota:

La instalación sin código del depurador de instantáneas de Application Insights sigue la directiva de soporte técnico de .NET Core. Para obtener más información sobre los entornos de ejecución admitidos, consulte Directiva de soporte técnico de .NET Core.

Para comprobar la página de estado de esta extensión, vaya a la siguiente dirección URL: https://{site-name}.scm.azurewebsites.net/DiagnosticServices

Nota:

El dominio del vínculo Página de estado variará en función de la nube. Este dominio será el mismo que el sitio de administración de Kudu para App Service.

Esta página de estado muestra el estado de instalación de los agentes profiler y snapshot collector. Si se produjo un error inesperado, se mostrará y se mostrará cómo corregirlo.

Puede usar el sitio de administración de Kudu para App Service para obtener la dirección URL base de esta página de estado:

  1. Abra la aplicación App Service en el Azure Portal.
  2. Seleccione Herramientas avanzadas o busque Kudu.
  3. Seleccione Ir.
  4. Una vez que esté en el sitio de administración de Kudu, en la dirección URL, anexe /DiagnosticServices y presione Entrar. Finalizará así: https://<kudu-url>/DiagnosticServices.

Actualización a la versión más reciente del paquete NuGet

En función de cómo se ha habilitado Snapshot Debugger, consulte las siguientes opciones:

  • Si Snapshot Debugger se ha habilitado a través del panel Application Insights del portal, la aplicación ya debería ejecutar el paquete NuGet más reciente.

  • Si Snapshot Debugger se ha habilitado mediante la inclusión del paquete NuGet Microsoft.ApplicationInsights.SnapshotCollector , use el Administrador de paquetes NuGet de Visual Studio para asegurarse de que usa la versión más reciente de Microsoft.ApplicationInsights.SnapshotCollector.

Para ver las actualizaciones y correcciones de errores más recientes, consulte las notas de la versión.

Comprobación de los registros del cargador

Después de crear una instantánea, se crea un archivo minivolcado (.dmp) en el disco. Un proceso de carga independiente crea ese archivo de minivolcado y lo carga, junto con cualquier PDB asociado, en el almacenamiento de Snapshot Debugger de Application Insights. Una vez que el minivolcado se ha cargado correctamente, se elimina del disco. Los archivos de registro del proceso del cargador se mantienen en el disco. En un entorno App Service, puede encontrar estos registros en D:\Home\LogFiles. Use el sitio de administración de Kudu para App Service para buscar estos archivos de registro.

  1. Abra la aplicación App Service en el Azure Portal.
  2. Seleccione Herramientas avanzadas o busque Kudu.
  3. Seleccione Ir.
  4. En la lista desplegable Depurar consola , seleccione CMD.
  5. Seleccione LogFiles.

Debería ver al menos un archivo con un nombre que comience con Uploader_ o SnapshotUploader_ y una .log extensión. Seleccione el icono adecuado para descargar los archivos de registro o abrirlos en un explorador. El nombre de archivo incluye un sufijo único que identifica la instancia de App Service. Si la instancia de App Service está hospedada en más de una máquina, hay archivos de registro independientes para cada máquina. Cuando el cargador detecta un nuevo archivo minivolcado, se registra en el archivo de registro. Este es un ejemplo de una instantánea y carga correctas:

SnapshotUploader.exe Information: 0 : Received Fork request ID 139e411a23934dc0b9ea08a626db16c5 from process 6368 (Low pri)
    DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Creating minidump from Fork request ID 139e411a23934dc0b9ea08a626db16c5 from process 6368 (Low pri)
    DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Dump placeholder file created: 139e411a23934dc0b9ea08a626db16c5.dm_
    DateTime=2018-03-09T01:42:41.8728496Z
SnapshotUploader.exe Information: 0 : Dump available 139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:45.7525022Z
SnapshotUploader.exe Information: 0 : Successfully wrote minidump to D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Uploading D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp, 214.42 MB (uncompressed)
    DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Upload successful. Compressed size 86.56 MB
    DateTime=2018-03-09T01:42:59.6184651Z
SnapshotUploader.exe Information: 0 : Extracting PDB info from D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp.
    DateTime=2018-03-09T01:42:59.6184651Z
SnapshotUploader.exe Information: 0 : Matched 2 PDB(s) with local files.
    DateTime=2018-03-09T01:42:59.6809606Z
SnapshotUploader.exe Information: 0 : Stamp does not want any of our matched PDBs.
    DateTime=2018-03-09T01:42:59.8059929Z
SnapshotUploader.exe Information: 0 : Deleted D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:59.8530649Z

Nota:

El ejemplo anterior es de la versión 1.2.0 del Microsoft.ApplicationInsights.SnapshotCollector paquete NuGet. En versiones anteriores, se llama MinidumpUploader.exe al proceso del cargador y el registro es menos detallado.

En el ejemplo anterior, la clave de instrumentación es c12a605e73c44346a984e00000000000. Este valor debe coincidir con la clave de instrumentación de la aplicación. El minivolcado está asociado a una instantánea con el identificador 139e411a23934dc0b9ea08a626db16c5. Puede usar este identificador más adelante para buscar el registro de excepción asociado en Application Insights Analytics.

El cargador busca nuevos archivos PDB aproximadamente una vez cada 15 minutos. Aquí le mostramos un ejemplo:

SnapshotUploader.exe Information: 0 : PDB rescan requested.
    DateTime=2018-03-09T01:47:19.4457768Z
SnapshotUploader.exe Information: 0 : Scanning D:\home\site\wwwroot for local PDBs.
    DateTime=2018-03-09T01:47:19.4457768Z
SnapshotUploader.exe Information: 0 : Local PDB scan complete. Found 2 PDB(s).
    DateTime=2018-03-09T01:47:19.4614027Z
SnapshotUploader.exe Information: 0 : Deleted PDB scan marker : D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\6368.pdbscan
    DateTime=2018-03-09T01:47:19.4614027Z

En el caso de las aplicaciones que no están hospedadas en App Service, los registros del cargador están en la misma carpeta que los minidumps: %TEMP%\Dumps\<ikey> (donde <ikey> es la clave de instrumentación).

Solución de problemas de Cloud Services

En Cloud Services, la carpeta temporal predeterminada podría ser demasiado pequeña para contener los archivos de minivolcado, lo que provocaría la pérdida de instantáneas.

El espacio necesario depende del conjunto de trabajo total de la aplicación y del número de instantáneas simultáneas.

El conjunto de trabajo de un rol web de ASP.NET de 32 bits suele estar entre 200 MB y 500 MB. Permitir al menos dos instantáneas simultáneas.

Por ejemplo, si la aplicación usa 1 GB del conjunto de trabajo total, debe asegurarse de que haya al menos 2 GB de espacio en disco para almacenar instantáneas.

Siga estos pasos para configurar el rol de Servicio en la nube con un recurso local dedicado para instantáneas.

  1. Agregue un nuevo recurso local al servicio en la nube editando el archivo de definición de servicio en la nube (.csdef). En el ejemplo siguiente se define un recurso llamado SnapshotStore con un tamaño de 5 GB.

    <LocalResources>
      <LocalStorage name="SnapshotStore" cleanOnRoleRecycle="false" sizeInMB="5120" />
    </LocalResources>
    
  2. Modifique el código de inicio del rol para agregar una variable de entorno que apunte al SnapshotStore recurso local. Para roles de trabajo, el código debe agregarse al método del OnStart rol:

    public override bool OnStart()
    {
        Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath);
        return base.OnStart();
    }
    

    En el caso de los roles web (ASP.NET), el código debe agregarse al método de la Application_Start aplicación web:

    using Microsoft.WindowsAzure.ServiceRuntime;
    using System;
    
    namespace MyWebRoleApp
    {
        public class MyMvcApplication : System.Web.HttpApplication
        {
           protected void Application_Start()
           {
              Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath);
              // TODO: The rest of your application startup code
           }
        }
    }
    
  3. Actualice el archivo ApplicationInsights.config del rol para invalidar la ubicación de carpeta temporal que usa SnapshotCollector.

    <TelemetryProcessors>
     <Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector">
       <!-- Use the SnapshotStore local resource for snapshots -->
       <TempFolder>%SNAPSHOTSTORE%</TempFolder>
       <!-- Other SnapshotCollector configuration options -->
     </Add>
    </TelemetryProcessors>
    

Invalidar la carpeta instantánea

Cuando se inicia el recopilador de instantáneas, intenta encontrar una carpeta en el disco adecuada para ejecutar el proceso de carga de instantáneas. La carpeta elegida se conoce como la carpeta Instantánea.

El recopilador de instantáneas comprueba algunas ubicaciones conocidas, asegurándose de que tiene permisos para copiar los archivos binarios del cargador de instantáneas. Se usan las siguientes variables de entorno:

  • Fabric_Folder_App_Temp
  • LOCALAPPDATA
  • APPDATA
  • TEMP

Si no se encuentra una carpeta adecuada, Snapshot Collector informa de un error que indica que "No se encontró una carpeta de instantáneas adecuada".

Si se produce un error en la copia, snapshot Collector notifica un ShadowCopyFailed error.

Si no se puede iniciar el cargador, Snapshot Collector notifica un UploaderCannotStartFromShadowCopy error. El cuerpo del mensaje suele contener System.UnauthorizedAccessException. Este error suele producirse porque la aplicación se ejecuta en una cuenta con permisos reducidos. La cuenta tiene permiso para escribir en la carpeta de instantáneas, pero no tiene permiso para ejecutar código.

Dado que estos errores suelen producirse durante el inicio, normalmente se les seguirá un ExceptionDuringConnect error que indica que el cargador no se pudo iniciar.

Para solucionar estos errores, puede especificar la carpeta de instantáneas manualmente mediante la opción de ShadowCopyFolder configuración . Por ejemplo, mediante ApplicationInsights.config:

<TelemetryProcessors>
 <Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector">
   <!-- Override the default shadow copy folder. -->
   <ShadowCopyFolder>D:\SnapshotUploader</ShadowCopyFolder>
   <!-- Other SnapshotCollector configuration options -->
 </Add>
</TelemetryProcessors>

O bien, si usa appsettings.json con una aplicación de .NET Core:

{
  "ApplicationInsights": {
    "InstrumentationKey": "<your instrumentation key>"
  },
  "SnapshotCollectorConfiguration": {
    "ShadowCopyFolder": "D:\\SnapshotUploader"
  }
}

Uso de la búsqueda de Application Insights para buscar excepciones con instantáneas

Cuando se crea una instantánea, la excepción de inicio se etiqueta con un identificador de instantánea. Ese identificador de instantánea se incluye como una propiedad personalizada cuando se notifica la excepción a Application Insights. Con Búsqueda en Application Insights, puede encontrar todos los registros con la ai.snapshot.id propiedad personalizada.

  1. Vaya al recurso de Application Insights en el Azure Portal.
  2. Seleccione Buscar.
  3. Escriba ai.snapshot.id el cuadro de texto Búsqueda y presione Entrar.

Captura de pantalla que muestra la búsqueda de telemetría con un identificador de instantánea en el portal.

Si esta búsqueda no devuelve ningún resultado, no se notificaron instantáneas a Application Insights en el intervalo de tiempo seleccionado.

Para buscar un identificador de instantánea específico en los registros del cargador, escriba ese identificador en el cuadro Búsqueda. Si no encuentra registros de una instantánea que sabe que se cargó, siga estos pasos:

  1. Compruebe que está examinando el recurso de Application Insights adecuado comprobando la clave de instrumentación.

  2. Ajuste el filtro Intervalo de tiempo de la búsqueda para cubrir ese intervalo de tiempo mediante la marca de tiempo del registro del cargador.

Si todavía no ve una excepción con ese identificador de instantánea, el registro de excepciones no se notificó a Application Insights. Esta situación puede ocurrir si la aplicación se bloqueó después de tomar la instantánea, pero antes de que notificara el registro de excepciones. En este caso, compruebe los registros de App Service en Diagnose and solve problems para ver si hubo reinicios inesperados o excepciones no controladas.

Edición de reglas de firewall o proxy de red

Si la aplicación se conecta a Internet a través de un proxy o un firewall, es posible que tenga que actualizar las reglas para comunicarse con el servicio Snapshot Debugger.

Las direcciones IP usadas por El depurador de instantáneas de Application Insights se incluyen en la etiqueta de servicio de Azure Monitor. Para obtener más información, consulte la documentación de etiquetas de servicio.

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.