Supervisión de aplicaciones para Azure App Service mediante ASP.NET Core
Habilitar la supervisión en sus aplicaciones web basadas en ASP.NET Core que se ejecutan en Azure App Services es ahora más fácil que nunca. Anteriormente, era necesario instrumentar manualmente la aplicación, pero ahora el agente o la extensión más reciente están integrados en la imagen de App Service de manera predeterminada. En este artículo se explica cómo habilitar la supervisión de Application Insights de Azure Monitor. También proporciona instrucciones preliminares para automatizar el proceso para implementaciones a gran escala.
Nota
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 la característica ya no recibirá actualizaciones ni soporte técnico. Transición a las cadenas de conexión para aprovechar las nuevas funcionalidades.
Habilitación de la supervisión de instrumentación automática
Para obtener una lista completa de escenarios de instrumentación automática compatibles, consulte Entornos, lenguajes y proveedores de recursos admitidos.
Importante
Solo se admite .NET Core de soporte técnico a largo plazo para la instrumentación automática en Windows.
No se admite el recorte de implementaciones independientes. En su lugar, use instrumentación manual por medio de código.
Nota
La instrumentación automática se conocía como “conexión sin código” antes de octubre de 2021.
Vea la sección Habilitar supervisión a continuación para empezar a configurar Application Insights con su recurso de App Service.
Habilitar supervisión
Seleccione Application Insights en el panel izquierdo del servicio de aplicaciones. Seleccione Habilitar.
Cree un nuevo recurso o seleccione un recurso de Application Insights para esta aplicación.
Nota
Al seleccionar Aceptar para crear el recurso, se le pedirá Aplicar la configuración de supervisión. Al seleccionar Continuar, se vincula el nuevo recurso de Application Insights al servicio de aplicaciones. A continuación, el servicio de aplicaciones se reinicia.
Después de especificar qué recurso se debe usar, puede elegir cómo quiere que Application Insights recopile los datos de cada plataforma para la aplicación. Las opciones de recopilación de ASP.NET Core son Recomendadas o Deshabilitadas.
Habilitación de la supervisión del lado cliente
La supervisión de cliente está habilitada de manera predeterminada para las aplicaciones de ASP.NET Core con la recopilación recomendada, independientemente de si está presente el valor APPINSIGHTS_JAVASCRIPT_ENABLED
de la aplicación.
Si quiere habilitar la supervisión de cliente:
Seleccione Configuración>Configuración.
En Configuración de la aplicación, cree una nueva configuración de aplicación con la siguiente información:
- Nombre:
APPINSIGHTS_JAVASCRIPT_ENABLED
- Valor:
false
- Nombre:
Guarde la configuración. Reinicie la aplicación.
Automatización de la supervisión
Con el fin de habilitar la recopilación de datos de telemetría con Application Insights, la configuración de la aplicación deberá establecerse.
Definiciones de los valores de configuración de la aplicación
Nombre del valor de configuración de la aplicación | Definición | Value |
---|---|---|
ApplicationInsightsAgent_EXTENSION_VERSION | Extensión principal; controla la supervisión en el entorno en tiempo de ejecución. | ~3 |
XDT_MicrosoftApplicationInsights_Mode | En el modo predeterminado, solo están habilitadas las características esenciales para garantizar un rendimiento óptimo. | disabled o recommended . |
XDT_MicrosoftApplicationInsights_PreemptSdk | Solo para aplicaciones de ASP.NET Core. Habilita la interoperabilidad con el SDK de Application Insights. Carga la extensión en paralelo con el SDK y la usa para enviar telemetría (deshabilita el SDK de Application Insights). | 1 |
Configuración de la aplicación de App Service con Azure Resource Manager
La configuración de las aplicaciones de Azure App Service se puede administrar y definir con plantillas de Azure Resource Manager. Use este método para implementar nuevos recursos de App Service con la automatización de Resource Manager o para modificar la configuración de los recursos actuales.
La estructura básica de JSON de la configuración de la aplicación para un recurso de App Service:
"resources": [
{
"name": "appsettings",
"type": "config",
"apiVersion": "2015-08-01",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', variables('webSiteName'))]"
],
"tags": {
"displayName": "Application Insights Settings"
},
"properties": {
"key1": "value1",
"key2": "value2"
}
}
]
Para ver un ejemplo de una plantilla de Resource Manager con la configuración de la aplicación establecida para Application Insights, le puede resultar útil esta plantilla. En concreto, vea la sección que comienza en la línea 238.
Automatización de la creación de un recurso de Application Insights y vínculo al recurso de App Service recién creado
Para crear una plantilla de Resource Manager con toda la configuración predeterminada de Application Insights, comience el proceso como si fuese a crear una nueva aplicación web con Application Insights habilitado.
Cree un nuevo recurso de App Service con la información de la aplicación web deseada. Habilite Application Insights en la pestaña Supervisión.
Seleccione Revisar + crear. Seleccione Descargar una plantilla para la automatización.
Esta opción genera la plantilla de Azure Resource Manager más reciente con toda la configuración necesaria establecida.
En el ejemplo siguiente, reemplace todas las instancias de AppMonitoredSite
por el nombre del sitio:
{
"resources": [
{
"name": "[parameters('name')]",
"type": "Microsoft.Web/sites",
"properties": {
"siteConfig": {
"appSettings": [
{
"name": "APPINSIGHTS_INSTRUMENTATIONKEY",
"value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').InstrumentationKey]"
},
{
"name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
"value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').ConnectionString]"
},
{
"name": "ApplicationInsightsAgent_EXTENSION_VERSION",
"value": "~2"
}
]
},
"name": "[parameters('name')]",
"serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
"hostingEnvironment": "[parameters('hostingEnvironment')]"
},
"dependsOn": [
"[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
"microsoft.insights/components/AppMonitoredSite"
],
"apiVersion": "2016-03-01",
"location": "[parameters('location')]"
},
{
"apiVersion": "2016-09-01",
"name": "[parameters('hostingPlanName')]",
"type": "Microsoft.Web/serverfarms",
"location": "[parameters('location')]",
"properties": {
"name": "[parameters('hostingPlanName')]",
"workerSizeId": "[parameters('workerSize')]",
"numberOfWorkers": "1",
"hostingEnvironment": "[parameters('hostingEnvironment')]"
},
"sku": {
"Tier": "[parameters('sku')]",
"Name": "[parameters('skuCode')]"
}
},
{
"apiVersion": "2015-05-01",
"name": "AppMonitoredSite",
"type": "microsoft.insights/components",
"location": "West US 2",
"properties": {
"ApplicationId": "[parameters('name')]",
"Request_Source": "IbizaWebAppExtensionCreate"
}
}
],
"parameters": {
"name": {
"type": "string"
},
"hostingPlanName": {
"type": "string"
},
"hostingEnvironment": {
"type": "string"
},
"location": {
"type": "string"
},
"sku": {
"type": "string"
},
"skuCode": {
"type": "string"
},
"workerSize": {
"type": "string"
},
"serverFarmResourceGroup": {
"type": "string"
},
"subscriptionId": {
"type": "string"
}
},
"$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
"contentVersion": "1.0.0.0"
}
Habilitación mediante Powershell
Para habilitar la supervisión de la aplicación a través de PowerShell, solo debe cambiar la configuración de la aplicación subyacente. En el ejemplo siguiente, se habilita la supervisión de aplicaciones para un sitio web denominado AppMonitoredSite
en el grupo de recursos AppMonitoredRG
. Configura los datos que se enviarán a la clave de instrumentación 012345678-abcd-ef01-2345-6789abcd
.
Nota
Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Consulte Instalación de Azure PowerShell para empezar. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.
$app = Get-AzWebApp -ResourceGroupName "AppMonitoredRG" -Name "AppMonitoredSite" -ErrorAction Stop
$newAppSettings = @{} # case-insensitive hash map
$app.SiteConfig.AppSettings | %{$newAppSettings[$_.Name] = $_.Value} # preserve non Application Insights application settings.
$newAppSettings["APPINSIGHTS_INSTRUMENTATIONKEY"] = "012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights instrumentation key
$newAppSettings["APPLICATIONINSIGHTS_CONNECTION_STRING"] = "InstrumentationKey=012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights connection string
$newAppSettings["ApplicationInsightsAgent_EXTENSION_VERSION"] = "~2"; # enable the ApplicationInsightsAgent
$app = Set-AzWebApp -AppSettings $newAppSettings -ResourceGroupName $app.ResourceGroup -Name $app.Name -ErrorAction Stop
Actualización del agente o la extensión de supervisión: .NET
Para actualizar la extensión o agente de supervisión, siga los pasos de las secciones siguientes.
Actualización de las versiones 2.8.9 y posteriores
La actualización desde la versión 2.8.9 se realiza automáticamente, sin acciones adicionales. Los nuevos bits de supervisión se proporcionan en segundo plano para el servicio de aplicación de destino y se recogerán en el reinicio de la aplicación.
Para comprobar qué versión de la extensión se ejecuta, vaya a https://yoursitename.scm.azurewebsites.net/ApplicationInsights
.
Actualización de las versiones 1.0.0 a 2.6.5
A partir de la versión 2.8.9 se usa la extensión de sitio preinstalada. Si usa una versión anterior, puede actualizarla de dos maneras:
Actualizar habilitandoa través del portal: incluso si tiene instalada la extensión de Application Insights para App Service, la interfaz de usuario muestra solo el botón Habilitar. En segundo plano, la anterior extensión de sitio privada se quitará.
Actualización a través de PowerShell:
- Establezca la configuración de la aplicación para habilitar la extensión de sitio preinstalada
ApplicationInsightsAgent
. Para obtener más información, consulte Habilitar a través de PowerShell. - Quite manualmente la extensión de sitio privada denominada Extensión de Application Insights para Azure App Service.
- Establezca la configuración de la aplicación para habilitar la extensión de sitio preinstalada
Si se realiza la actualización desde una versión anterior a la 2.5.1, compruebe que los archivos DLL se quitan de la carpeta de la ubicación de la aplicación. ApplicationInsights
. Para más información, consulte Pasos de solución de problemas.
Solución de problemas
Nota
Al crear una aplicación web con los entornos de ejecución ASP.NET Core
en Azure App Service, implementa una sola página HTML estática como sitio web de inicio. No se recomienda solucionar un problema con la plantilla predeterminada. Implemente una aplicación antes de solucionar un problema.
A continuación, se muestra nuestra guía paso a paso de solución de problemas para la supervisión basada en extensiones o agentes para aplicaciones basadas en ASP.NET Core que se ejecutan en App Services.
Compruebe que la configuración de la aplicación
ApplicationInsightsAgent_EXTENSION_VERSION
está establecida en un valor de~2
.Vaya a
https://yoursitename.scm.azurewebsites.net/ApplicationInsights
.Confirme que el estado de la extensión de Application Insights es
Pre-Installed Site Extension, version 2.8.x.xxxx, is running.
Si no se está ejecutando, siga las instrucciones de la sección Habilitar la supervisión de Application Insights.
Confirme que el origen de estado existe y tiene el siguiente aspecto:
Status source D:\home\LogFiles\ApplicationInsights\status\status_RD0003FF0317B6_4248_1.json
.Si no está presente un valor similar, significa que la aplicación no se admite o no se está ejecutando actualmente. Para asegurarse de que la aplicación se está ejecutando, intente visitar manualmente los puntos de conexión de la aplicación o la dirección URL de la aplicación, lo que permitirá que la información del entorno en tiempo de ejecución esté disponible.
Confirme que IKeyExists es
True
. Si esFalse
, agregueAPPINSIGHTS_INSTRUMENTATIONKEY
yAPPLICATIONINSIGHTS_CONNECTION_STRING
con el GUID de ikey a la configuración de la aplicación.Si la aplicación hace referencia a cualquier paquete de Application Insights, es posible que la habilitación de la integración de App Service no tenga efecto y que los datos no aparezcan en Application Insights. Un ejemplo sería si ya había instrumentado o intentado instrumentar la aplicación con el SDK de ASP.NET Core. Para corregir el problema, en el portal, active Interoperabilidad con el SDK de Application Insights. Empezará a ver los datos en Application Insights.
Importante
Esta funcionalidad está en versión preliminar.
Ahora los datos se van a enviar mediante un enfoque sin código, incluso si el SDK de Application Insights se usó originalmente o se intentó usar.
Importante
Si la aplicación usó el SDK de Application Insights para enviar datos de telemetría, se deshabilitará la telemetría. En otras palabras, se deshabilitarán la telemetría personalizada (por ejemplo, cualquier método
Track*()
) y la configuración personalizada (como el muestreo).
El sitio web predeterminado implementado con las aplicaciones web no admite la supervisión automática del lado del cliente.
Al crear una aplicación web con los entornos de ejecución ASP.NET Core en Azure App Service, implementa una sola página HTML estática como sitio web de inicio. La página web estática también carga un elemento web administrado de ASP.NET en IIS. Este comportamiento permite probar la supervisión sin código del lado del servidor, pero no admite la supervisión automática del lado del cliente.
Si desea probar el servidor sin código y la supervisión de cliente para ASP.NET Core en una aplicación web de App Services, se recomienda seguir las guías oficiales para crear una aplicación web ASP.NET Core. A continuación, siga las instrucciones del artículo actual para habilitar la supervisión.
¿Cuál es la diferencia entre las métricas estándar de Application Insights y las métricas de Azure App Service?
Application Insights recopila datos de telemetría de las solicitudes que se enviaron a la aplicación. Si el error se produjo en Web Apps o WebServer, y la solicitud no llegó a la aplicación de usuario, Application Insights no tendrá ningún dato de telemetría sobre él.
La duración de serverresponsetime
calculada por Application Insights no coincidirá necesariamente con el tiempo de respuesta del servidor observado por Web Apps. Esto se debe a que Application Insights solo cuenta la duración cuando la solicitud llega realmente a la aplicación de usuario. Si la solicitud se bloquea o se pone en cola en WebServer, ese tiempo de espera se incluirá en las métricas de Web Apps, pero no en las métricas de Application Insights.
Prueba de la conectividad entre el host de la aplicación y el servicio de ingesta
Los SDK y agentes de Application Insights envían telemetría para ingerirse como llamadas REST a nuestros puntos de conexión de ingesta. Puede probar la conectividad desde el servidor web o la máquina host de la aplicación a los puntos de conexión del servicio de ingesta mediante clientes REST sin procesar con comandos de PowerShell o curl. Consulte Solución de problemas de telemetría de aplicaciones que faltan en Application Insights de Azure Monitor.
No se admiten PHP y WordPress.
Los sitios de PHP y WordPress no se admiten. Actualmente, no hay ningún SDK/agente compatible oficialmente para la supervisión del lado servidor de estas cargas de trabajo. Sin embargo, la instrumentación manual de transacciones del lado cliente en un sitio de PHP o WordPress agregando el JavaScript del lado cliente a las páginas web puede realizarse mediante el SDK de JavaScript.
La tabla siguiente proporciona una explicación más detallada de lo que significan estos valores, sus causas subyacente y las correcciones recomendadas.
Valor del problema | Explicación | Fix |
---|---|---|
AppAlreadyInstrumented:true |
Este valor indica que la extensión ha detectado que algún aspecto del SDK ya está presente en la aplicación y se interrumpirá. Puede deberse a una referencia a Microsoft.ApplicationInsights.AspNetCore o Microsoft.ApplicationInsights . |
Quite las referencias. Algunas de estas referencias se agregan de manera predeterminada desde determinadas plantillas de Visual Studio y las versiones anteriores de Visual Studio hacen referencia a Microsoft.ApplicationInsights . |
AppAlreadyInstrumented:true |
Este valor también puede deberse a la presencia del archivo DLL Microsoft.ApplicationsInsights en la carpeta de la aplicación de una implementación anterior. |
Limpie la carpeta de la aplicación para asegurarse de que se han quitado estos archivos DLL. Compruebe el directorio "bin" de la aplicación local y el directorio wwwroot de App Service. (Para comprobar el directorio wwwroot de la aplicación web de App Service, seleccione Herramientas avanzadas (Kudu) >Consola de depuración>CMD>home\site\wwwroot). |
IKeyExists:false |
Este valor indica que la clave de instrumentación no está presente en la configuración de aplicación APPINSIGHTS_INSTRUMENTATIONKEY . Entre las posibles causas se incluyen quitar accidentalmente los valores o olvidarse de establecer los valores en el script de automatización. |
Asegúrese de que la configuración está presente en la configuración de la aplicación de App Service. |
Notas de la versión
Para obtener las actualizaciones y correcciones de errores más recientes, vea las notas de la versión.
Pasos siguientes
- Ejecute el generador de perfiles en la aplicación activa.
- Supervisión de Azure Functions con Application Insights.
- Microsoft Azure Diagnostics para enviar este tipo de información a Application Insights.
- Supervise las métricas del estado del servicio para asegurarse de que el servicio está disponible y responde adecuadamente.
- Reciba notificaciones de alerta cada vez que se produzcan eventos de operaciones o las métricas traspasen un umbral.
- Use aplicaciones y páginas web de Application Insights para JavaScript para obtener la telemetría del cliente de los exploradores que visitan una página web.
- Disponibilidad