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

  1. Seleccione Application Insights en el panel izquierdo del servicio de aplicaciones. Seleccione Habilitar.

     Captura de pantalla de la pestaña

  2. 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.

    Captura de pantalla que muestra la lista desplegable Cambiar el recurso.

  3. 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.

     Captura de pantalla que muestra la sección instrumentación de la aplicación.

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:

  1. Seleccione Configuración>Configuración.

  2. 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
  3. 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.

Captura de pantalla de la configuración de la aplicación de App Service con la configuración de Application Insights.

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. ~2 para Windows o ~3 para Linux
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.

Para crear una plantilla de Resource Manager con la configuración predeterminada de Application Insights, comience el proceso como si fuese a crear una nueva aplicación web con Application Insights habilitado.

  1. 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.

  2. Seleccione Revisar + crear. Seleccione Descargar una plantilla para la automatización.

    Captura de pantalla que muestra el menú de creación de aplicaciones web de App Service.

    Esta opción genera la plantilla de Azure Resource Manager más reciente con toda la configuración necesaria establecida.

    Captura de pantalla que muestra una plantilla de aplicación web de App Service.

En el ejemplo siguiente, reemplace todas las instancias de AppMonitoredSite por el nombre del sitio:

Nota:

Si usa Windows, establezca ApplicationInsightsAgent_EXTENSION_VERSION en ~2. Si usa Linux, establezca ApplicationInsightsAgent_EXTENSION_VERSION en ~3.

{
    "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.

Nota:

Si usa Windows, establezca ApplicationInsightsAgent_EXTENSION_VERSION en ~2. Si usa Linux, establezca ApplicationInsightsAgent_EXTENSION_VERSION en ~3.

$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.

Captura de pantalla de la ruta de acceso de URL para comprobar la versión de la extensión que está ejecutando.

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:

    1. 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.
    2. Quite manualmente la extensión de sitio privada denominada Extensión de Application Insights para Azure App Service.

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.

  1. Compruebe que la configuración de la aplicación ApplicationInsightsAgent_EXTENSION_VERSION está establecida en un valor de ~2.

  2. Vaya a https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

    Captura de pantalla que muestra el vínculo situado encima de la página de resultados.

    • 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 es False, agregue APPINSIGHTS_INSTRUMENTATIONKEY y APPLICATIONINSIGHTS_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.

      Captura de pantalla que muestra la configuración de interoperabilidad habilitada.

      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 en el servidor web, 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 el servidor web, 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