Solución de problemas de Application Insights Profiler

En este artículo se presentan pasos e información de solución de problemas para poder habilitarlo para usar Application Insights Profiler.

¿Seguro que está utilizando el punto de conexión de Profiler adecuado?

Actualmente, las únicas regiones que requieren modificaciones en el punto final son Azure Government y Microsoft Azure operado por 21Vianet.

Configuración de aplicación Nube del Gobierno de EE. UU. Nube de China
ApplicationInsightsProfilerEndpoint https://profiler.monitor.azure.us https://profiler.monitor.azure.cn
ApplicationInsightsEndpoint https://dc.applicationinsights.us https://dc.applicationinsights.azure.cn

¿La aplicación se ejecuta en la versión correcta?

Profiler se admite en las versiones posteriores a .NET Framework 4.6.2.

Si la aplicación web es una aplicación de ASP.NET Core, debe ejecutarse en la última versión compatible de ASP.NET Core Runtime.

¿Seguro que usa el plan de servicio de Azure adecuado?

Actualmente no se admite Profiler en planes de App Service gratuitos o compartidos. Actualice a uno de los planes básicos de Profiler para empezar a trabajar.

Nota

No se admite Azure Functions en el plan de consumo. Vea Generación de perfiles de una aplicación Azure Functions activa con Application Insights.

¿Busca datos de Profiler en el período de tiempo adecuado?

Si la antigüedad de los datos que intenta ver supera las dos semanas, pruebe a limitar el filtro de tiempo e inténtelo de nuevo. Los seguimientos se eliminan pasados siete días.

¿Puede acceder a la puerta de enlace?

Compruebe que un firewall o servidores proxy no bloquean el acceso a esta página web.

¿Ve tiempos de espera o necesita comprobar si Profiler se está ejecutando?

Los datos de generación de perfiles solo se cargan cuando se pueden adjuntar a una solicitud que se ha realizado mientras se ejecuta Profiler. Profiler recopila los datos durante dos minutos cada hora. También puede desencadenar Profiler iniciando una sesión de generación de perfiles.

Profiler escribe mensajes de seguimiento y eventos personalizados en el recurso de Application Insights. Estos eventos se pueden usar para ver cómo se ejecuta Profiler.

Busque mensajes de seguimiento y eventos personalizados que Profiler ha enviado a su recurso de Application Insights.

  1. En el recurso de Application Insights, seleccione Buscar en el menú superior.

    Screenshot that shows selecting the Search button from the Application Insights resource.

  2. Use la siguiente cadena de búsqueda para encontrar los datos pertinentes:

    stopprofiler OR startprofiler OR upload OR ServiceProfilerSample
    

    Screenshot that shows the search results from aforementioned search string.

    Los resultados de la búsqueda anteriores incluyen dos ejemplos de búsquedas de dos recursos de inteligencia artificial:

    • Si la aplicación no recibe solicitudes mientras se ejecuta Profiler, el mensaje explica que la carga se canceló debido a que no había ninguna actividad.

    • Profiler se ha iniciado y ha enviado eventos personalizados cuando ha detectado las solicitudes que se han producido mientras se estaba ejecutando Profiler. Si se muestra el evento personalizado ServiceProfilerSample, significa que se ha capturado un perfil y que está disponible en el panel de rendimiento de Application Insights.

    Si no se muestran registros, Profiler no se está ejecutando o agotó el tiempo de espera. Asegúrese de haber habilitado Profiler en el servicio de Azure.

Doble recuento de subprocesos paralelos

Cuando dos o más subprocesos paralelos están asociados a una solicitud, la métrica de tiempo total del visor de la pila puede ser mayor que la duración de la solicitud. En ese caso, el tiempo de subproceso total es superior al tiempo real transcurrido.

Por ejemplo, uno de los subprocesos puede estar a la espera de que el otro finalice. El visor intenta detectar esta situación y omite la espera sin interés. Al hacerlo, prefiere mostrar demasiada información antes que omitir lo que podría ser información crítica.

Cuando vea subprocesos en paralelo en sus seguimientos, determine cuáles de ellos están en espera, para poder determinar cuál es la ruta de acceso activa de la solicitud. Normalmente, el subproceso que pasa rápidamente a un estado de espera tan solo espera a los restantes subprocesos. Concéntrese en los demás subprocesos e ignore el tiempo de los subprocesos en espera.

Solución de problemas de Profiler en su servicio de Azure específico

En las secciones siguientes se describen los pasos de solución de problemas para usar Profiler en Azure App Service o Azure Cloud Services.

Azure App Service

Para que Profiler funcione correctamente, asegúrese de lo siguiente:

  • La aplicación web tiene Application Insights habilitado con la configuración correcta.

  • El WebJob ApplicationInsightsProfiler3 está en ejecución. Para comprobarlo:

    1. Vaya a Kudu. En Azure Portal:

      1. En la instancia de App Service, seleccione Herramientas avanzadas en el panel izquierdo.
      2. Seleccione Ir.
    2. En el menú superior, seleccione Herramientas>Panel de WebJobs. Se abre el panel WebJobs.

      Si ApplicationInsightsProfiler3 no aparece, reinicie la aplicación App Service.

      Screenshot that shows the WebJobs pane, which displays the name, status, and last runtime of jobs.

    3. Para ver los detalles del WebJob, incluido el registro, seleccione el vínculo ApplicationInsightsProfiler3. Se abre el panel Continuous WebJob Details (Detalles de WebJobs continuos).

      Screenshot that shows the Continuous WebJob Details pane.

Si Profiler sigue sin funcionar, puede descargar el registro y enviar una incidencia de soporte técnico de Azure.

Comprobación de la página de estado de la extensión de sitio de los servicios de diagnóstico

Si Profiler se ha habilitado a través del panel de Application Insights en el portal, es que se ha habilitado mediante la extensión de sitio de los servicios de diagnóstico. Para comprobar la página de estado de esta extensión, vaya a: https://{site-name}.scm.azurewebsites.net/DiagnosticServices.

Nota

El dominio del vínculo de la página de estado varía en función de la nube. Este dominio es el mismo que el sitio de administración de Kudu para App Service.

La página de estado muestra el estado de la instalación de Profiler y los agentes de Snapshot Debugger. Si se produjo un error inesperado, aparece junto con pasos sobre cómo corregirlo.

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

  1. Abra la aplicación App Service en Azure Portal.
  2. Seleccione Herramientas avanzadas.
  3. Seleccione Ir.
  4. En el sitio de administración de Kudu:
    1. Anexe /DiagnosticServices a la dirección URL.
    2. Presione Entrar.

Termina como https://<kudu-url>/DiagnosticServices.

Una página de estado es similar al ejemplo siguiente.

Screenshot that shows the Diagnostic Services status page.

Nota:

La instalación sin código de Application Insights Profiler sigue la directiva de compatibilidad de .NET Core. Para más información sobre los entornos de ejecución admitidos, consulte Directiva de compatibilidad de .NET Core.

Instalación manual

Cuando se configura Profiler, se realizan las siguientes actualizaciones en la configuración de la aplicación web. Si es necesario, puede aplicar las actualizaciones manualmente.

Hay demasiadas sesiones de generación de perfiles activas

Puede habilitar Profiler en un máximo de cuatro aplicaciones web que se ejecuten en el mismo plan de servicio. Si tiene más de cuatro, Profiler podría generar el siguiente error:

Microsoft.ServiceProfiler.Exceptions.TooManyETWSessionException

Para solucionarlo, lleve algunas aplicaciones web a un plan de servicio diferente.

Error de implementación: Directory Not Empty 'D:\home\site\wwwroot\App_Data\jobs'

Si va a volver a implementar la aplicación web en un recurso de Web Apps con Profiler habilitado, puede que aparezca un mensaje similar al siguiente:

"Directory Not Empty 'D:\home\site\wwwroot\App_Data\jobs'"

Este error se produce si Web Deploy se ejecuta desde scripts o desde Azure Pipelines. La solución consiste en agregar los siguientes parámetros de implementación a la tarea de Web Deploy:

-skip:Directory='.*\\App_Data\\jobs\\continuous\\ApplicationInsightsProfiler.*' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs\\continuous$' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs$'  -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data$'

Estos parámetros eliminan la carpeta que usa Application Insights Profiler y desbloquean el proceso de reeimplementación. No afectan a la instancia de Profiler actualmente en ejecución.

¿Se está ejecutando Application Insights Profiler?

Profiler se ejecuta como un WebJob continuo en la aplicación web. Puede abrir el recurso de aplicación web en Azure Portal. En el panel WebJobs, compruebe el estado de ApplicationInsightsProfiler. Si no se está ejecutando, abra Registros para obtener más información.

Máquinas virtuales y Azure Cloud Services

Para ver si Profiler está configurado correctamente en Azure Diagnostics:

  1. Compruebe que el contenido de la configuración de Azure Diagnostics implementada es tal como esperaba.

  2. Asegúrese de que Azure Diagnostics pasa el valor de iKey adecuado en la línea de comandos de Profiler.

  3. Compruebe en el archivo de registro de Profiler si este se ha ejecutado, pero ha devuelto un error.

Para comprobar la configuración que se usó para configurar Azure Diagnostics:

  1. Inicie sesión en la máquina virtual (VM).

  2. Abra el archivo de registro en esta ubicación. La versión del complemento puede ser más reciente en la máquina.

    Para máquinas virtuales:

    c:\WindowsAzure\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
    

    Para Azure Cloud Services:

    c:\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
    
  3. En el archivo, busque la cadena WadCfg para saber qué valores se han pasado a la máquina virtual para configurar Azure Diagnostics.

  4. Compruebe si el valor de iKey que ha usado el receptor de Profiler es correcto.

  5. Compruebe la línea de comandos que se usa para iniciar Profiler. Los argumentos que se usan para iniciar Profiler se encuentran en el siguiente archivo (la unidad podría ser c: o d: y el directorio puede estar oculto):

    Para máquinas virtuales:

    C:\ProgramData\ApplicationInsightsProfiler\config.json
    

    Para Azure Cloud Services:

    D:\ProgramData\ApplicationInsightsProfiler\config.json
    
  6. Asegúrese de que el valor de iKey en la línea de comandos de Profiler es correcto.

  7. Puede usar la ruta de acceso que se encuentra en el archivo config.json anterior para consultar el archivo de registro de Profiler, denominado BootstrapN.log. Muestra lo siguiente:

    • La información de depuración que indica la configuración que usa Profiler.
    • Estado y mensajes de error de Profiler.

    Puede encontrar el archivo:

    Para máquinas virtuales:

    C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
    

    Para Azure Cloud Services:

    C:\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
    
  8. Si Profiler se está ejecutando mientras la aplicación recibe solicitudes, se mostrará el siguiente mensaje: "Activity detected from iKey" (Se ha detectado actividad en la clave de instrumentación).

  9. Cuando se carga el seguimiento, se muestra el mensaje siguiente: "Start to upload trace" (Inicio de carga del seguimiento).

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 de Profiler.

Las direcciones IP que se usan en Application Insights Profiler se incluyen en la etiqueta de servicio de Azure Monitor. Para obtener más información, consulte la documentación sobre las etiquetas de servicio.

Soporte técnico

Si sigue necesitando ayuda, envíe una incidencia de soporte técnico en Azure Portal. Incluya el identificador de correlación del mensaje de error.