Solución de problemas de Application Insights Profiler para .NET
En este artículo se presentan pasos e información de solución de problemas para que pueda usar Application Insights Profiler para .NET.
¿Usa el punto de conexión de Profiler para .NET. 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 para .NET. 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 para .NET. 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.
¿Conoce la frecuencia de muestreo y la sobrecarga de Profiler para .NET?
Profiler para .NET se ejecuta aleatoriamente dos minutos por hora en cada máquina virtual en la que se hospeden aplicaciones con Profiler habilitado.
Nota:
Cuando Application Insights Profiler para .NET se está ejecutando activamente y recopilando seguimientos, normalmente agrega entre el 5 % y el 15 % de la sobrecarga de CPU y memoria al servidor.
No hay ningún costo adicional para almacenar los datos capturados por .NET Profiler. Los datos se eliminan automáticamente después de 15 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 para .NET está en ejecución?
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 para .NET 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. Puede usar esos eventos para ver cómo se ejecuta Profiler.
Busque mensajes de seguimiento y eventos personalizados enviados por Profiler para .NET al recurso de Application Insights.
En el recurso de Application Insights, seleccione Buscar en el menú superior.
Use la siguiente cadena de búsqueda para encontrar los datos pertinentes:
stopprofiler OR startprofiler OR upload OR ServiceProfilerSample
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 tarda demasiado tiempo en responder. Asegúrese de que Profiler está habilitado en el servicio de Azure.
Profiler para .NET está activado, pero no se ha capturado ningún seguimiento
Incluso cuando el generador de perfiles está habilitado, es posible que no capture o cargue seguimientos, especialmente en estas situaciones:
No hay solicitudes entrantes a la aplicación:
Puede invocar manualmente la aplicación o crear una prueba de disponibilidad o una prueba de carga.No hay telemetría entrante confirmada por Application Insights:
- Si hay tráfico que llega a la aplicación: compruebe que hay solicitudes entrantes que se muestran en Métricas en directo de Application Insights.
- Si los gráficos de
Incoming Requests
están vacíos (sin datos o mostrando cero): solucionar problemas de Application Insights. - Si hospeda la aplicación .NET en Azure App Service: pruebe los pasos de solución de problemas de .NET de App Service.
La configuración del generador de perfiles para P está desactivada:
Si todavía no hay seguimientos del generador de perfiles disponibles, compruebe la configuración Muestreo del generador de perfiles.- Abra la hoja Rendimientode Application Insights.
- Haga clic en Generador de perfiles.
- Haga clic en el botón Desencadenadores.
- En la configuración del desencadenador, asegúrese de que la opción Muestreo esté activada.
¿Todavía no hay seguimientos cargados?
Cree una solicitud de soporte técnico o pregúntele al Soporte técnico de la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad 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 para .NET en el 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
A fin de que Profiler para .NET 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:
Vaya a Kudu. En Azure Portal:
- En la instancia de App Service, seleccione Herramientas avanzadas en el panel izquierdo.
- Seleccione Ir.
En el menú superior, seleccione Herramientas>Panel de WebJobs. Se abre el panel WebJobs.
Si ApplicationInsightsProfiler3 no aparece, reinicie la aplicación App Service.
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).
Si Profiler para .NET 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 ha habilitado Profiler para .NET desde el panel de Application Insights en el portal, se administra mediante la extensión del sitio de 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.
En la página de estado se muestra el estado de la instalación de Profiler para .NET 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:
- Abra la aplicación App Service en Azure Portal.
- Seleccione Herramientas avanzadas.
- Seleccione Ir.
- En el sitio de administración de Kudu:
- Anexe
/DiagnosticServices
a la dirección URL. - Presione Entrar.
- Anexe
Termina como https://<kudu-url>/DiagnosticServices
.
Una página de estado es similar al ejemplo siguiente.
Nota:
La instalación sin código de Application Insights Profiler para .NET 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 para .NET, 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
En Azure App Service, solo hay un límite de una sesión de generación de perfiles a la vez. Este límite se aplica en el nivel de máquina virtual en todas las aplicaciones y ranuras de implementación que se ejecutan en un plan de App Service. Este límite se aplica igualmente a las sesiones de generación de perfiles iniciadas desde Diagnosticar y resolver problemas, Kudu y Application Insights Profiler para .NET.
Si Profiler para .NET intenta iniciar una sesión cuando ya hay otra en ejecución, se registra un error en el registro de aplicaciones y también en el registro continuo de WebJob para ApplicationInsightsProfiler3
.
Es posible que vea uno de los siguientes mensajes en los registros:
Microsoft.ServiceProfiler.Exceptions.TooManyETWSessionException
Error: StartProfiler failed. Details: System.Runtime.InteropServices.COMException (0xE111005E): Exception from HRESULT: 0xE111005E
El código de error 0xE111005E
indica que no se pudo iniciar una sesión de generación de perfiles porque ya hay otra en ejecución.
Para evitar el error, mueva algunas aplicaciones web a otro plan de App Service o deshabilite Profiler en algunas de las aplicaciones. Si usa ranuras de implementación, asegúrese de detener las ranuras sin usar.
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 para .NET habilitado, puede que vea 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 para .NET y desbloquean el proceso de reeimplementación. No afectan a la instancia de Profiler actualmente en ejecución.
¿Está Application Insights Profiler para .NET En ejecución?
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 para .NET está configurado correctamente en Azure Diagnostics:
Compruebe que el contenido de la configuración de Azure Diagnostics implementada es tal como esperaba.
Asegúrese de que Azure Diagnostics pasa el valor de iKey adecuado en la línea de comandos de Profiler.
Compruebe en el archivo de registro de Profiler si se ha ejecutado Profiler para .NET, pero ha devuelto error.
Para comprobar la configuración que se usó para configurar Azure Diagnostics:
Inicie sesión en la máquina virtual (VM).
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
En el archivo, busque la cadena
WadCfg
para saber qué valores se han pasado a la máquina virtual para configurar Azure Diagnostics.Compruebe si el valor de iKey que ha usado el receptor de Profiler para .NET es correcto.
Compruebe la línea de comandos que inicia Profiler. Los argumentos de la línea de comandos se encuentran en el siguiente archivo (la unidad podría ser
c:
od:
y el directorio podría estar oculto):Para máquinas virtuales:
C:\ProgramData\ApplicationInsightsProfiler\config.json
Para Azure Cloud Services:
D:\ProgramData\ApplicationInsightsProfiler\config.json
Asegúrese de que el valor de iKey en la línea de comandos de Profiler es correcto.
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
Si Profiler para .NET está en ejecución mientras la aplicación recibe solicitudes, se muestra el siguiente mensaje: "Se ha detectado actividad en la clave de instrumentación".
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 desde un proxy o un firewall, es posible que tenga que actualizar las reglas para comunicarse con el servicio de Profiler para .NET.
Las direcciones IP que se usan en Application Insights Profiler para .NET 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.