Compartir a través de


Habilitación de la supervisión de aplicaciones en Azure App Service para aplicaciones .NET, Node.js, Python y Java

La autoinstrumentación, también conocida como monitoreo en tiempo de ejecución, es la manera más fácil de habilitar Application Insights para Azure App Service sin requerir cambios en el código ni configuraciones avanzadas. En función de su escenario específico, evalúe si necesita una supervisión más avanzada a través de la instrumentación manual.

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 cadenas de conexión para aprovechar las nuevas funcionalidades.

Habilitación de Application Insights

Importante

Si se detecta tanto la supervisión de la instrumentación automática como la instrumentación manual basada en SDK, solo se respeta la configuración de instrumentación manual. Esta disposición impide que se envíen datos duplicados. Para más información, consulte Solución de problemas.

Nota:

Autoinstrumentación en el portal de Azure

  1. Seleccione Application Insights en el menú de navegación izquierdo del servicio de aplicaciones y, a continuación, seleccione Habilitar.

     Captura de pantalla que muestra la pestaña Application Insights con la opción Habilitar seleccionada.

  2. Cree un nuevo recurso o seleccione un recurso de Application Insights para esta aplicación.

    Nota:

    Al seleccionar Aceptar para crear un nuevo recurso, se le pedirá que aplique la configuración de supervisión. Al seleccionar Continue (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 sobre cómo instrumentar su aplicación.

Actualizar manualmente la extensión o agente de monitoreo

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. La nueva información de supervisión se entrega en segundo plano al servicio de aplicaciones de destino y se recoge al reiniciar 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 que muestra la ruta de la 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:

  • Actualización habilitando a través de Azure 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, se quita la extensión de sitio privado anterior.

  • 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 privado denominada extensión de Application Insights para Azure App Service.

Si la actualización se realiza desde una versión anterior a la 2.5.1, compruebe que los archivos DLL de ApplicationInsights se quitan de la carpeta bin de la aplicación. Para obtener más información, consulte Solución de problemas.

Configuración de la extensión o agente de supervisión

Actualmente no ofrecemos opciones para configurar la extensión de supervisión para ASP.NET Core.

Habilitación de la supervisión del lado cliente

La supervisión del lado cliente está habilitada de forma predeterminada para aplicaciones ASP.NET Core con la recopilación recomendada, independientemente de si la configuración APPINSIGHTS_JAVASCRIPT_ENABLED de la aplicación está presente.

Si quiere habilitar la supervisión de cliente:

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

Para habilitar la recopilación de datos de telemetría con Application Insights, solo es necesario configurar los valores siguientes de la aplicación:

Captura de pantalla que muestra 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 Importancia
ApplicationInsightsAgent_EXTENSION_VERSION Extensión principal, que controla la supervisión 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 aplicaciones de App Service con Azure Resource Manager

La configuración de la aplicación para Azure App Service se puede administrar y configurar 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 JSON básica de las configuraciones 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 crear una plantilla de Resource Manager con la configuración predeterminada de Application Insights, comienza el proceso como si fueses a crear una aplicación web con Application Insights habilitado.

  1. En Azure Portal, cree un nuevo recurso de aplicación web con la información deseada. Habilite Application Insights en la pestaña Supervisión y seguridad .

  2. Vaya a Revisar y crear y, a continuación, 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.

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

Nota:

La plantilla de ejemplo siguiente es para una aplicación de .NET 8 (LTS) que se ejecuta en Windows. Usa my-monitored-web-app como marcador de posición para el nombre de la aplicación y aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e para el ID de suscripción.

No recomendamos copiar ni usarlo directamente. En su lugar, genere su propia plantilla en función de las instrucciones anteriores.


Expansión para ver la plantilla de ejemplo
{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "subscriptionId": {
            "type": "string"
        },
        "resourceGroupName": {
            "type": "string"
        },
        "name": {
            "type": "string"
        },
        "___location": {
            "type": "string"
        },
        "hostingPlanName": {
            "type": "string"
        },
        "serverFarmResourceGroup": {
            "type": "string"
        },
        "alwaysOn": {
            "type": "bool"
        },
        "ftpsState": {
            "type": "string"
        },
        "autoGeneratedDomainNameLabelScope": {
            "type": "string"
        },
        "sku": {
            "type": "string"
        },
        "skuCode": {
            "type": "string"
        },
        "workerSize": {
            "type": "string"
        },
        "workerSizeId": {
            "type": "string"
        },
        "numberOfWorkers": {
            "type": "string"
        },
        "currentStack": {
            "type": "string"
        },
        "phpVersion": {
            "type": "string"
        },
        "netFrameworkVersion": {
            "type": "string"
        }
    },
    "variables": {},
    "resources": [
        {
            "apiVersion": "2022-03-01",
            "name": "[parameters('name')]",
            "type": "Microsoft.Web/sites",
            "___location": "[parameters('___location')]",
            "tags": null,
            "dependsOn": [
                "microsoft.insights/components/my-monitored-web-app",
                "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]"
            ],
            "properties": {
                "name": "[parameters('name')]",
                "siteConfig": {
                    "appSettings": [
                        {
                            "name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
                            "value": "[reference('microsoft.insights/components/my-monitored-web-app', '2015-05-01').ConnectionString]"
                        },
                        {
                            "name": "ApplicationInsightsAgent_EXTENSION_VERSION",
                            "value": "~2"
                        },
                        {
                            "name": "XDT_MicrosoftApplicationInsights_Mode",
                            "value": "default"
                        }
                    ],
                    "metadata": [
                        {
                            "name": "CURRENT_STACK",
                            "value": "[parameters('currentStack')]"
                        }
                    ],
                    "phpVersion": "[parameters('phpVersion')]",
                    "netFrameworkVersion": "[parameters('netFrameworkVersion')]",
                    "alwaysOn": "[parameters('alwaysOn')]",
                    "ftpsState": "[parameters('ftpsState')]"
                },
                "serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "clientAffinityEnabled": true,
                "virtualNetworkSubnetId": null,
                "httpsOnly": true,
                "publicNetworkAccess": "Enabled",
                "autoGeneratedDomainNameLabelScope": "[parameters('autoGeneratedDomainNameLabelScope')]"
            },
            "resources": [
                {
                    "type": "Microsoft.Web/sites/basicPublishingCredentialsPolicies",
                    "apiVersion": "2022-09-01",
                    "name": "[concat(parameters('name'), '/scm')]",
                    "properties": {
                        "allow": true
                    },
                    "dependsOn": [
                        "[resourceId('Microsoft.Web/Sites', parameters('name'))]"
                    ]
                },
                {
                    "type": "Microsoft.Web/sites/basicPublishingCredentialsPolicies",
                    "apiVersion": "2022-09-01",
                    "name": "[concat(parameters('name'), '/ftp')]",
                    "properties": {
                        "allow": true
                    },
                    "dependsOn": [
                        "[resourceId('Microsoft.Web/Sites', parameters('name'))]"
                    ]
                }
            ]
        },
        {
            "apiVersion": "2018-11-01",
            "name": "[parameters('hostingPlanName')]",
            "type": "Microsoft.Web/serverfarms",
            "___location": "[parameters('___location')]",
            "kind": "",
            "tags": null,
            "dependsOn": [],
            "properties": {
                "name": "[parameters('hostingPlanName')]",
                "workerSize": "[parameters('workerSize')]",
                "workerSizeId": "[parameters('workerSizeId')]",
                "numberOfWorkers": "[parameters('numberOfWorkers')]",
                "zoneRedundant": false
            },
            "sku": {
                "Tier": "[parameters('sku')]",
                "Name": "[parameters('skuCode')]"
            }
        },
        {
            "apiVersion": "2020-02-02-preview",
            "name": "my-monitored-web-app",
            "type": "microsoft.insights/components",
            "___location": "centralus",
            "tags": null,
            "dependsOn": [
                "newWorkspaceTemplate"
            ],
            "properties": {
                "ApplicationId": "[parameters('name')]",
                "Request_Source": "IbizaWebAppExtensionCreate",
                "Flow_Type": "Redfield",
                "Application_Type": "web",
                "WorkspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/DefaultResourceGroup-CUS/providers/Microsoft.OperationalInsights/workspaces/DefaultWorkspace-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e-CUS"
            }
        },
        {
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2021-04-01",
            "name": "newWorkspaceTemplate",
            "resourceGroup": "DefaultResourceGroup-CUS",
            "subscriptionId": "[parameters('subscriptionId')]",
            "properties": {
                "mode": "Incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentVersion": "1.0.0.0",
                    "parameters": {},
                    "variables": {},
                    "resources": [
                        {
                            "apiVersion": "2020-08-01",
                            "name": "DefaultWorkspace-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e-CUS",
                            "type": "Microsoft.OperationalInsights/workspaces",
                            "___location": "centralus",
                            "properties": {}
                        }
                    ]
                }
            }
        }
    ]
}

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 my-monitored-web-app en el grupo de recursos my-resource-group. Configura los datos para que se envíen a la cadena de conexión InstrumentationKey=012345678-abcd-ef01-2345-6789abcd.

Nota:

Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Para empezar, consulte Instalación de Azure PowerShell. Para obtener información sobre cómo migrar al módulo Az PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

Nota:

En Windows, establezca ApplicationInsightsAgent_EXTENSION_VERSION en ~2.

En Linux, establezca ApplicationInsightsAgent_EXTENSION_VERSION en ~3.

$app = Get-AzWebApp -ResourceGroupName "my-resource-group" -Name "my-monitored-web-app" -ErrorAction Stop
$newAppSettings = @{} # Case-insensitive hash map
$app.SiteConfig.AppSettings | %{$newAppSettings[$_.Name] = $_.Value} # Preserve non-Application-Insights application settings.
$newAppSettings["APPLICATIONINSIGHTS_CONNECTION_STRING"] = "InstrumentationKey=aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"; # Set the Application Insights connection string
$newAppSettings["ApplicationInsightsAgent_EXTENSION_VERSION"] = "~3"; # Enable the ApplicationInsightsAgent.
$app = Set-AzWebApp -AppSettings $newAppSettings -ResourceGroupName $app.ResourceGroup -Name $app.Name -ErrorAction Stop

Preguntas más frecuentes

Esta sección proporciona respuestas a preguntas comunes.

¿Qué modifica Application Insights en mi proyecto?

Los detalles dependen del tipo de proyecto. La siguiente lista es un ejemplo de una aplicación web.

  • Agrega archivos al proyecto:

    • ApplicationInsights.config
    • ai.js
  • Instala paquetes NuGet:

    • API de Application Insights: la API principal
    • API de Application Insights para aplicaciones web: se utiliza para enviar telemetría desde el servidor
    • API de Application Insights para aplicaciones JavaScript: se usa para enviar la telemetría del cliente
  • Incluye ensamblados en paquetes:

    • Microsoft.ApplicationInsights
    • Microsoft.ApplicationInsights.Platform
  • Inserta elementos en:

    • Web.config
    • packages.config
  • Inserte fragmentos de código en el código de cliente y servidor para inicializarlos con el identificador de recursos de Application Insights. Por ejemplo, en una aplicación MVC, el código se inserta en la página principal Views/Shared/_Layout.cshtml. Solo para los nuevos proyectos, agregar Application Insights a un proyecto existente manualmente.

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

Solución de problemas

Prueba de la conectividad entre el host de la aplicación y el servicio de ingesta

Tanto los SDK como los 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 entre el servidor web o la máquina host de la aplicación y los puntos finales del servicio de ingesta mediante el uso de clientes REST directos y comandos de PowerShell o curl. Consulte Solución de problemas de telemetría de aplicaciones que faltan en Azure Monitor Application Insights.

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. Recomendamos no resolver un problema con la plantilla predeterminada. Implemente una aplicación antes de solucionar un problema.

Telemetría faltante

Windows

  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 Habilitación de 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, pruebe a visitar manualmente los extremos de URL/aplicación de la aplicación, lo que permite que la información 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 anteriormente instrumentaste o intentaste instrumentar tu aplicación con el SDK de ASP.NET Core. Para corregir el problema, en Azure Portal, active Interoperabilidad con el SDK de Application Insights.

      Importante

      Esta funcionalidad está en versión preliminar.

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

      Los datos se envían mediante un enfoque sin código, incluso si se usó originalmente el SDK de Application Insights 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).

Linux

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

  2. Vaya a https://your site name.scm.azurewebsites.net/ApplicationInsights.

  3. En este sitio, confirme lo siguiente:

    • El origen de estado existe y tiene el siguiente aspecto: Status source /var/log/applicationinsights/status_abcde1234567_89_0.json
    • Se muestra el valor Auto-Instrumentation enabled successfully. Si no está presente un valor similar, significa que la aplicación no se admite o no se está ejecutando. Para asegurarse de que la aplicación se está ejecutando, pruebe a visitar manualmente los extremos de URL/aplicación de la aplicación, lo que permite que la información de ejecución esté disponible.
    • 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.

    Captura de pantalla que muestra la página web de estado de la autoinstrumentación.

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 la supervisión del servidor sin código y del lado cliente para ASP.NET Core en una aplicación web de App Service, se recomienda seguir las guías oficiales para crear una aplicación web de ASP.NET Core. Después, use las instrucciones del artículo actual para habilitar la supervisión.

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. Para realizar un seguimiento de las transacciones del lado cliente en un sitio php o WordPress, agregue javaScript del lado cliente a las páginas web 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 Corrección
AppAlreadyInstrumented:true Este valor indica que la extensión detectó algún aspecto del SDK que ya está presente en la aplicación y vuelve a desactivarse. Una referencia a Microsoft.ApplicationInsights.AspNetCore o Microsoft.ApplicationInsights puede provocar este valor. 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 La presencia de Microsoft.ApplicationsInsights DLL en la carpeta de la aplicación de una implementación anterior también puede provocar este valor. 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 en 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.