Monitoraggio delle prestazioni applicative per i servizi app di Azure e ASP.NET Core.

L'abilitazione del monitoraggio sulle applicazioni Web basate su core ASP.NET in esecuzione nel Servizio app di Azure è ora più semplice che mai. In precedenza, era necessario instrumentare manualmente l'app. A questo punto, l'estensione o l'agente più recente è integrato nell'immagine del servizio app per impostazione predefinita. Questo articolo illustra come abilitare il monitoraggio di Application Insights di Monitoraggio di Azure. Fornisce inoltre il materiale sussidiario preliminare per automatizzare il processo per le distribuzioni su larga scala.

Nota

La documentazione seguente si basa sull'API classica di Application Insights. Il piano a lungo termine per Application Insights prevede la raccolta di dati con OpenTelemetry. Per altre informazioni, vedere Abilitare OpenTelemetry di Monitoraggio di Azure per le applicazioni .NET, Node.js, Python e Java oltre che la Roadmap OpenTelemetry. Le indicazioni sulla migrazione sono disponibili per .NET, Node.js e Python.

Nota

Il 31 marzo 2025, il supporto per l'inserimento delle chiavi di strumentazione terminerà. L'inserimento delle chiavi di strumentazione continuerà a funzionare, ma non saranno più garantiti aggiornamenti o supporto per la funzionalità. Eseguire la transizione alle stringhe di connessione per sfruttare le nuove funzionalità.

Abilitare il monitoraggio della strumentazione automatica

Per un elenco completo degli scenari di strumentazione automatica supportati, vedere Ambienti, lingue e provider di risorse supportati.

Importante

Solo il Supporto a lungo termine di .NET Core è supportato per la strumentazione automatica in Windows.

Le distribuzioni autonome di trim non sono supportate. Usare quindi la strumentazione manuale tramite codice.

Nota

La strumentazione automatica era nota come "connessione senza codice" prima di ottobre 2021.

Vedere la sezione Abilitare il monitoraggio seguente per iniziare a configurare Application Insights con la risorsa del servizio app.

Abilitare il monitoraggio

  1. Selezionare Application Insights nel riquadro sinistro per il servizio app. Selezionare quindi Abilita.

     Screenshot che mostra la scheda Application Insights con l'opzione Abilita selezionata.

  2. Creare una nuova risorsa o selezionare una risorsa di Application Insights esistente per questa applicazione.

    Nota

    Quando si seleziona OK per creare la nuova risorsa, viene richiesto Applica impostazioni di monitoraggio. La selezione di Continua collega la nuova risorsa di Application Insights al servizio app. Il servizio app viene quindi riavviato.

    Screenshot che mostra l'elenco a discesa Cambia risorsa.

  3. Dopo aver specificato la risorsa da usare, è possibile scegliere il modo in cui Application Insights deve raccogliere i dati per ogni piattaforma per l'applicazione. Le opzioni di raccolta ASP.NET Core sono Consigliate o Disabilitate.

     Screenshot che mostra la sezione strumentazione dell'applicazione.

Abilitare il monitoraggio lato client

Il monitoraggio lato client è abilitato per impostazione predefinita per le app ASP.NET Core con raccolta Consigliata, indipendentemente dal fatto che sia presente l'impostazione dell'app APPINSIGHTS_JAVASCRIPT_ENABLED.

Se si vuole disabilitare il monitoraggio lato client:

  1. Selezionare Impostazioni>Configurazione.

  2. In Impostazioni applicazione creare un'impostazione Nuova applicazione con le informazioni seguenti:

    • Nome: APPINSIGHTS_JAVASCRIPT_ENABLED
    • Valore: false
  3. Fare clic su Save (Salva) per salvare le impostazioni. Riavviare l'app.

Automatizzare il monitoraggio

Per abilitare la raccolta di dati di telemetria con Application Insights, è necessario impostare solo le impostazioni dell'applicazione.

Screenshot che mostra le impostazioni dell'applicazione del servizio app con le impostazioni di Application Insights.

Definizioni delle impostazioni dell'applicazione

Nome impostazione app Definizione Valore
ApplicationInsightsAgent_EXTENSION_VERSION Estensione principale, che controlla il monitoraggio del runtime. ~2 per Windows o ~3 per Linux
XDT_MicrosoftApplicationInsights_Mode Per garantire prestazioni ottimali, in modalità predefinita sono abilitate solo le funzionalità essenziali. disabled o recommended.
XDT_MicrosoftApplicationInsights_PreemptSdk Solo per le app ASP.NET Core. Abilita Interop (interoperabilità) con Application Insights SDK. Carica l'estensione side-by-side con l'SDK e la usa per inviare i dati di telemetria (disabilita Application Insights SDK). 1

Impostazioni dell'applicazione del servizio app con Azure Resource Manager

Le impostazioni dell'applicazione per il servizio app di Azure possono essere gestite e configurate con i modelli di Azure Resource Manager. È possibile usare questo metodo quando si distribuiscono nuove risorse del servizio app con l'automazione di Resource Manager o si modificano le impostazioni delle risorse esistenti.

Struttura di base delle impostazioni dell'applicazione JSON per una risorsa del servizio app:

      "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"
          }
        }
      ]

Per un esempio di modello di Resource Manager con le impostazioni dell'applicazione configurate per Application Insights, questo modello può essere utile. In particolare, vedere la sezione che inizia alla riga 238.

Per creare un modello di Resource Manager con le impostazioni predefinite di Application Insights, iniziare il processo come se si intendesse creare una nuova app Web con Application Insights abilitato.

  1. Creare una nuova risorsa del servizio app con le informazioni desiderate sull'app Web. Abilitare Application Insights nella scheda Monitoraggio.

  2. Selezionare Rivedi e crea. Selezionare quindi Scarica un modello per l'automazione.

    Screenshot che mostra il menu di creazione dell'app Web del servizio app.

    Questa opzione genera il modello di Resource Manager più recente con tutte le impostazioni necessarie configurate.

    Screenshot che mostra un modello di app Web del servizio app.

Nell'esempio seguente sostituire tutte le istanze di AppMonitoredSite con il nome del sito:

Nota

Se si usa Windows, impostare ApplicationInsightsAgent_EXTENSION_VERSION su ~2. Se si usa Linux, impostare ApplicationInsightsAgent_EXTENSION_VERSION su ~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"
}

Abilitare tramite PowerShell

Per abilitare il monitoraggio delle applicazioni tramite PowerShell, è necessario modificare solo le impostazioni dell'applicazione sottostanti. L'esempio seguente abilita il monitoraggio delle applicazioni per un sito Web denominato AppMonitoredSite nel gruppo di risorse AppMonitoredRG. Configura i dati da inviare alla chiave di strumentazione 012345678-abcd-ef01-2345-6789abcd.

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Nota

Se si usa Windows, impostare ApplicationInsightsAgent_EXTENSION_VERSION su ~2. Se si usa Linux, impostare ApplicationInsightsAgent_EXTENSION_VERSION su ~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

Aggiornare l'estensione/agente di monitoraggio - .NET

Per aggiornare l'estensione/agente di monitoraggio, seguire i passi descritti nelle sezioni successive.

Eseguire l'aggiornamento dalle versioni 2.8.9 e successive

L'aggiornamento dalla versione 2.8.9 viene eseguito automaticamente, senza azioni aggiuntive. I nuovi bit di monitoraggio vengono recapitati in background al servizio app di destinazione e al riavvio dell'applicazione verranno prelevati.

Per verificare qual è la versione dell'estensione in esecuzione, passare a https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

Screenshot che mostra il percorso URL per controllare la versione dell'estensione in esecuzione.

Eseguire l'aggiornamento dalle versioni 1.0.0 - 2.6.5

A partire dalla versione 2.8.9, viene usata l'estensione del sito preinstallata. Se si usa una versione precedente, è possibile eseguire l'aggiornamento tramite uno dei due modi seguenti:

  • Aggiornare abilitando tramite il portale: anche se è installata l'estensione Application Insights per il servizio app, l'interfaccia utente visualizza solo il pulsante Abilita. Dietro le quinte, l'estensione del sito privato precedente verrà rimossa.

  • Aggiornare tramite PowerShell:

    1. Impostare le impostazioni dell'applicazione per abilitare l'estensione del sito preinstallata ApplicationInsightsAgent. Per altre informazioni, vedere Abilitare tramite PowerShell.
    2. Rimuovere manualmente l'estensione del sito privato denominata Estensione Application Insights per il Servizio app di Azure.

Se l'aggiornamento viene eseguito da una versione precedente alla 2.5.1, verificare che le DLL ApplicationInsights vengano rimosse dalla cartella bin dell'applicazione. Per altre informazioni, vedere Passaggi per la risoluzione dei problemi.

Risoluzione dei problemi

Nota

Quando si crea un'app Web con i runtime ASP.NET Core nel servizio app, come sito Web iniziale viene distribuita una singola pagina HTML statica. Non è consigliabile risolvere un problema con il modello predefinito. Distribuire un'applicazione prima di risolvere un problema.

Di seguito è disponibile la guida dettagliata alla risoluzione dei problemi per il monitoraggio basato su estensione/agente per le applicazioni basate su core ASP.NET in esecuzione nel servizio app.

  1. Verificare che l'impostazione dell'app ApplicationInsightsAgent_EXTENSION_VERSION sia impostata su un valore di ~2.

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

    Screenshot che mostra il collegamento sopra la pagina dei risultati.

    • Verificare che lo stato dell'estensione di Application Insights sia Pre-Installed Site Extension, version 2.8.x.xxxx, is running.

      Se non è in esecuzione, seguire le istruzioni nella sezione Abilitare il monitoraggio di Application Insights.

    • Verificare che l'origine dello stato esista e abbia un aspetto simile a Status source D:\home\LogFiles\ApplicationInsights\status\status_RD0003FF0317B6_4248_1.json.

      Se non è presente un valore simile, significa che l'applicazione non è attualmente in esecuzione o non è supportata. Per assicurarsi che l'applicazione sia in esecuzione, provare a visitare manualmente l'URL dell'applicazione/gli endpoint dell'applicazione, che consentirà la disponibilità delle informazioni di runtime.

    • Verificare che IKeyExists sia True. Se è False, aggiungere APPINSIGHTS_INSTRUMENTATIONKEY e APPLICATIONINSIGHTS_CONNECTION_STRING con il GUID ikey alle impostazioni dell'applicazione.

    • Se l'applicazione fa riferimento a un pacchetto di Application Insights, l'abilitazione dell'integrazione del servizio app potrebbe non avere effetto e i dati potrebbero non essere visualizzati in Application Insights. Un esempio sarebbe se in precedenza è stata instrumentata o si è tentato di instrumentare l'app con ASP.NET Core SDK. Per risolvere il problema, nel portale attivare Interop con Application Insights SDK. Si inizierà a visualizzare i dati in Application Insights.

      Importante

      Questa funzionalità è in anteprima.

       Screenshot che mostra l'impostazione di Interop abilitata.

      I dati verranno ora inviati usando un approccio senza codice, anche se in origine era stato o era stato tentato di usare Application Insights SDK.

      Importante

      Se l'applicazione usa Application Insights SDK per inviare dati di telemetria, questi saranno disabilitati. In altre parole, i dati di telemetria personalizzati (ad esempio, qualsiasi metodo Track*()) e le impostazioni personalizzate (ad esempio il campionamento) verranno disabilitate.

Il sito Web predefinito distribuito con le app Web non supporta il monitoraggio lato client automatico

Quando si crea un'app Web con i runtime di ASP.NET Core nel servizio app, viene distribuita una singola pagina HTML statica come sito Web iniziale. La pagina Web statica carica anche una web part gestita da ASP.NET in IIS. Questo comportamento consente di testare il monitoraggio lato server senza codice, ma non supporta il monitoraggio lato client automatico.

Se si vuole testare il server senza codice e il monitoraggio lato client per ASP.NET Core in un'app Web del servizio app, è consigliabile seguire le guide ufficiali per la creazione di un'app Web ASP.NET Core. Per abilitare il monitoraggio usare quindi le istruzioni nell'articolo corrente.

Qual è la differenza tra le metriche standard rispetto ad Application Insights e metriche del Servizio app di Azure?

Application Insights raccoglie i dati di telemetria per le richieste inviate all'applicazione. Se l'errore si verifica in WebApps/WebServer e la richiesta non ha raggiunto l'applicazione utente, Application Insights non dispone di dati di telemetria su di esso.

La durata per serverresponsetime calcolata da Application Insights non corrisponde necessariamente al tempo di risposta del server osservato dalle app Web. Questo comportamento è dovuto al fatto che Application Insights conta solo la durata quando la richiesta raggiunge effettivamente l'applicazione utente. Se la richiesta è bloccata o in coda in WebServer, il tempo di attesa viene incluso nelle metriche delle app Web, ma non nelle metriche di Application Insights.

Testare la connettività tra l'host dell'applicazione e il servizio di inserimento

Gli SDK e gli agenti di Application Insights inviano dati di telemetria per l'inserimento come chiamate REST agli endpoint di inserimento. È possibile testare la connettività dal server Web o dal computer host dell'applicazione agli endpoint del servizio di inserimento usando client REST non elaborati da comandi PowerShell o curl. Vedere Risolvere i problemi di dati di telemetria delle applicazioni mancanti in Application Insights per Monitoraggio di Azure.

PHP e WordPress non sono supportati

I siti PHP e WordPress non sono supportati. Attualmente non è disponibile alcun SDK/agente supportato ufficialmente per il monitoraggio lato server di questi carichi di lavoro. Per instrumentare manualmente le transazioni sul lato client in PHP o in un sito WordPress aggiungendo JavaScript lato client alle pagine Web, usare JavaScript SDK.

La tabella seguente fornisce una spiegazione del significato di questi valori, delle cause sottostanti e delle correzioni consigliate.

Valore del problema Spiegazione Fix
AppAlreadyInstrumented:true Questo valore indica che l'estensione ha rilevato che alcuni aspetti dell'SDK sono già presenti nell'applicazione e che verranno nuovamente disattivati. Può essere dovuto a un riferimento a Microsoft.ApplicationInsights.AspNetCore o a Microsoft.ApplicationInsights. Rimuovere i riferimenti. Alcuni di questi riferimenti vengono aggiunti per impostazione predefinita da determinati modelli di Visual Studio. Le versioni precedenti di Visual Studio fanno riferimento a Microsoft.ApplicationInsights.
AppAlreadyInstrumented:true Questo valore può anche essere causato dalla presenza della DLL Microsoft.ApplicationsInsights nella cartella dell'app da una distribuzione precedente. Pulire la cartella dell'app per assicurarsi che queste DLL vengano rimosse. Controllare sia la directory bin dell'app locale che la directory wwwroot nel servizio app. (Per controllare la directory wwwroot dell'app Web del servizio app, selezionare Strumenti avanzati (Kudu) >Console di debug>CMD>home\site\wwwroot).
IKeyExists:false Questo valore indica che la chiave di strumentazione non è presente nell'impostazione dell'app APPINSIGHTS_INSTRUMENTATIONKEY. Le possibili cause includono la rimozione accidentale dei valori o l'aver dimenticato di impostare i valori nello script di automazione. Assicurarsi che l'impostazione sia presente nelle impostazioni per l'applicazione del servizio app.

Note sulla versione

Per gli aggiornamenti e le correzioni di bug più recenti, vedere le Note sulla versione.

Passaggi successivi