Monitoraggio delle prestazioni applicative per i servizi app di Azure.

Abilitazione del monitoraggio in ASP. Le applicazioni Web basate su NET in esecuzione in app Azure Servizio sono ora più semplici che mai. In precedenza, era necessario instrumentare manualmente l'app. Ora l'estensione o l'agente più recente è integrato nell'immagine servizio app per impostazione predefinita. Questo articolo illustra come abilitare il monitoraggio di Application Insights di Monitoraggio di Azure e fornire indicazioni preliminari per automatizzare il processo per le distribuzioni su larga scala.

Nota

L'aggiunta manuale di un'estensione del sito di Application Insights tramite Le estensioni degli strumenti>di sviluppo è deprecata. Questo metodo di installazione dell'estensione dipendeva dagli aggiornamenti manuali per ogni nuova versione. La versione stabile più recente dell'estensione è ora preinstallata come parte dell'immagine servizio app. I file si trovano in d:\Programmi (x86)\SiteExtensions\ApplicationInsightsAgent e vengono aggiornati automaticamente con ogni versione stabile. Se si seguono le istruzioni di installazione automatica per abilitare il monitoraggio, l'estensione deprecata verrà rimossa automaticamente.

Se vengono rilevati sia il monitoraggio automatico che la strumentazione manuale basata su SDK, verranno rispettate solo le impostazioni di strumentazione manuale. Questa disposizione impedisce l'invio di dati duplicati. Per altre informazioni, vedere la sezione Risoluzione dei problemi.

Nota

Il 31 marzo 2025, il supporto per l'inserimento delle chiavi di strumentazione terminerà. L'inserimento di chiavi di strumentazione continuerà a funzionare, ma non forniamo più aggiornamenti o supporto per la funzionalità. Passare alle stringa 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.

Nota

La combinazione di APPINSIGHTS_JAVASCRIPT_ENABLED e urlCompression non è supportata. Per altre informazioni, vedere la spiegazione nella sezione Risoluzione dei problemi.

  1. Selezionare Application Insights nel pannello di controllo di Azure per il servizio app. Selezionare quindi Abilita.

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

  2. Scegliere di 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 di selezionare Applica impostazioni di monitoraggio. Selezionando Continua si collega la nuova risorsa di Application Insights al servizio app. In questo modo viene attivato anche un riavvio del servizio app.

    Screenshot che mostra l'elenco a discesa Cambia risorsa.

  3. Dopo aver specificato la risorsa da usare, è possibile scegliere come si vuole che Application Insights raccolga i dati per ogni piattaforma per l'applicazione. ASP.NET il monitoraggio delle app è attivato per impostazione predefinita con due diversi livelli di raccolta.

    Screenshot che mostra la pagina delle estensioni del sito di Application Insights con l'opzione Crea nuova risorsa selezionata.

    La tabella seguente riepiloga i dati raccolti per ogni route.

    Dati ASP.NET raccolta di base ASP.NET raccolta consigliata
    Aggiunge le tendenze di utilizzo della CPU, della memoria e delle operazioni di I/O No
    Raccoglie le tendenze di utilizzo e consente la correlazione dei risultati di disponibilità con le transazioni
    Raccoglie le eccezioni non gestite dal processo host
    Migliora la precisione delle metriche APM in condizioni di carico quando viene usato il campionamento
    Mette in correlazione i microservizi attraverso i limiti di richiesta/dipendenza No (solo funzionalità APM a istanza singola)
  4. Per configurare il campionamento, che in precedenza era possibile controllare tramite il file applicationinsights.config , è ora possibile interagire con esso tramite le impostazioni dell'applicazione con il prefisso MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessorcorrispondente.

    • Ad esempio, per modificare la percentuale di campionamento iniziale, è possibile creare un'impostazione dell'applicazione di MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_InitialSamplingPercentage e un valore di 100.

    • Per disabilitare il campionamento, impostare su MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage un valore di 100.

    • Le impostazioni supportate includono:

      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_InitialSamplingPercentage
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_EvaluationInterval
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MaxTelemetryItemsPerSecond
    • Per l'elenco delle impostazioni e delle definizioni del processore di telemetria di campionamento adattivo supportate, vedere la documentazione sul codice e sul campionamento.

Abilitare il monitoraggio lato client

Il monitoraggio lato client è un consenso esplicito per ASP.NET. Per abilitare il monitoraggio lato client:

  1. Selezionare Impostazioni>Configurazione.

  2. In Impostazioni applicazione creare una nuova impostazione dell'applicazione:

    • Nome: immettere APPINSIGHTS_JAVASCRIPT_ENABLED.
    • Valore: immettere true.
  3. Salvare le impostazioni e riavviare l'app.

Per disabilitare il monitoraggio lato client, rimuovere la coppia di valori di chiave associata dalle impostazioni dell'applicazione o impostare il valore su false.

Automatizzare il monitoraggio

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

Screenshot che mostra servizio app impostazioni dell'applicazione 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
XDT_MicrosoftApplicationInsights_Mode In modalità predefinita sono abilitate solo le funzionalità essenziali per garantire prestazioni ottimali. default oppure recommended
InstrumentationEngine_EXTENSION_VERSION Controlla se il motore InstrumentationEngine di riscrittura binaria verrà attivato. Questa impostazione ha implicazioni sulle prestazioni e influisce sul tempo di avvio/avvio a freddo. ~1
XDT_MicrosoftApplicationInsights_BaseExtensions Controlla se il testo della tabella di SQL e Azure verrà acquisito insieme alle chiamate alle dipendenze. Avviso di prestazioni: l'ora di avvio dell'applicazione a freddo verrà influenzata. Questa impostazione richiede .InstrumentationEngine ~1

servizio app impostazioni dell'applicazione con Azure Resource Manager

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

Struttura di base del codice JSON delle impostazioni dell'applicazione per una risorsa 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 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 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 servizio app.

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

Nota

Se si usa Windows, impostare su ApplicationInsightsAgent_EXTENSION_VERSION~2. Se si usa Linux, impostare su ApplicationInsightsAgent_EXTENSION_VERSION~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 AppMonitoredRGdi risorse . Configura i dati da inviare alla chiave di 012345678-abcd-ef01-2345-6789abcd strumentazione.

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

Aggiornamento dell'estensione/agente di monitoraggio: .NET

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. Verranno selezionate al riavvio dell'applicazione.

Per verificare 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 ha una versione precedente, è possibile eseguire l'aggiornamento tramite uno dei due modi seguenti:

Se l'aggiornamento viene eseguito da una versione precedente alla 2.5.1, verificare che le DLL di Application Insights vengano rimosse dalla cartella del bin dell'applicazione. Per altre informazioni, vedere i passaggi nella sezione Risoluzione dei problemi.

Risoluzione dei problemi

Nota

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

Ecco la guida dettagliata alla risoluzione dei problemi per il monitoraggio basato su estensione/agente per ASP. Applicazioni basate su NET in esecuzione in servizio app.

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

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

    Screenshot che mostra la pagina dei risultati del collegamento precedente.

    • Verificare che Application Insights Extension Status sia Pre-Installed Site Extension, version 2.8.x.xxxx e sia in esecuzione.

      Se non è in esecuzione, seguire le istruzioni per abilitare il monitoraggio di Application Insights.

    • Verificare che l'origine di 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. In caso contrario, aggiungere APPINSIGHTS_INSTRUMENTATIONKEY e APPLICATIONINSIGHTS_CONNECTION_STRING con il GUID della chiave di strumentazione alle impostazioni dell'applicazione.

    • Verificare che non siano presenti voci per AppAlreadyInstrumented, AppContainsDiagnosticSourceAssemblye AppContainsAspNetTelemetryCorrelationAssembly.

      Se una di queste voci esiste, rimuovere i pacchetti seguenti dall'applicazione: Microsoft.ApplicationInsights, System.Diagnostics.DiagnosticSourcee Microsoft.AspNet.TelemetryCorrelation.

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

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

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

APPINSIGHTS_JAVASCRIPT_ENABLED e urlCompression non sono supportati

Se si usa APPINSIGHTS_JAVASCRIPT_ENABLED=true nei casi in cui viene codificato il contenuto, è possibile che vengano visualizzati errori come:

  • Errore di riscrittura URL 500.
  • Errore del modulo di riscrittura url 500.53 con il messaggio "Impossibile applicare regole di riscrittura in uscita quando il contenuto della risposta HTTP è codificato ('gzip')."

Si verifica un errore perché l'impostazione dell'applicazione APPINSIGHTS_JAVASCRIPT_ENABLED è impostata su true e la codifica del contenuto è presente contemporaneamente. Questo scenario non è ancora supportato. La soluzione alternativa consiste nel rimuovere APPINSIGHTS_JAVASCRIPT_ENABLED dalle impostazioni dell'applicazione. Sfortunatamente, se la strumentazione JavaScript sul lato client/browser è ancora necessaria, per le pagine Web sono necessari riferimenti manuali all'SDK. Seguire le istruzioni per la strumentazione manuale con JavaScript SDK.

Per le informazioni più recenti sull'agente/estensione di Application Insights, vedere le note sulla versione.

Qual è la differenza tra le metriche standard di Application Insights e le metriche del servizio app 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 da 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 di 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 essere inseriti 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 PowerShell o comandi curl. Vedere Risolvere i problemi di telemetria delle applicazioni mancanti in Application Insights di 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. È possibile instrumentare manualmente le transazioni sul lato client in un sito PHP o WordPress aggiungendo javaScript sul lato client alle pagine Web usando JavaScript SDK.

La tabella seguente fornisce una spiegazione più dettagliata 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 System.Diagnostics.DiagnosticSource, Microsoft.AspNet.TelemetryCorrelationo 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 potrebbero aggiungere riferimenti a Microsoft.ApplicationInsights.
AppAlreadyInstrumented:true Questo valore può anche essere causato dalla presenza delle DLL precedenti 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 nella risorsa servizio app. Per controllare la directory wwwroot dell'app Web servizio app, selezionare Strumenti avanzati (Kudu)>Console di debug>CMD>home\site\wwwroot.
AppContainsAspNetTelemetryCorrelationAssembly: true Questo valore indica che l'estensione ha rilevato riferimenti a Microsoft.AspNet.TelemetryCorrelation nell'applicazione e verrà riattivata. Rimuovere il riferimento.
AppContainsDiagnosticSourceAssembly**:true Questo valore indica che l'estensione ha rilevato riferimenti a System.Diagnostics.DiagnosticSource nell'applicazione e verrà riattivata. Per ASP.NET rimuovere il riferimento.
IKeyExists:false Questo valore indica che la chiave di strumentazione non è presente nell'impostazione APPINSIGHTS_INSTRUMENTATIONKEYdell'app . Le possibili cause potrebbero essere che i valori sono stati rimossi accidentalmente oppure si è dimenticato di impostare i valori nello script di automazione. Assicurarsi che l'impostazione sia presente nelle impostazioni dell'applicazione servizio app.

System.IO.FileNotFoundException dopo l'aggiornamento della versione 2.8.44

La versione 2.8.44 di strumentazione automatica aggiorna Application Insights SDK alla versione 2.20.0. Application Insights SDK ha un riferimento indiretto a System.Runtime.CompilerServices.Unsafe.dll tramite System.Diagnostics.DiagnosticSource.dll. Se l'applicazione ha il reindirizzamento dell'associazione per System.Runtime.CompilerServices.Unsafe.dll e se questa libreria non è presente nella cartella dell'applicazione, potrebbe generare System.IO.FileNotFoundException.

Per risolvere questo problema, rimuovere la voce di reindirizzamento dell'associazione per System.Runtime.CompilerServices.Unsafe.dll dal file web.config. Se l'applicazione vuole usare System.Runtime.CompilerServices.Unsafe.dll, impostare il reindirizzamento dell'associazione come illustrato di seguito:

<dependentAssembly>
	<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
	<bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
</dependentAssembly>

Come soluzione alternativa temporanea, è possibile impostare l'impostazione ApplicationInsightsAgent_EXTENSION_VERSION dell'app su un valore di 2.8.37. Questa impostazione attiverà servizio app per usare l'estensione di Application Insights precedente. Le mitigazioni temporanee devono essere usate solo come provvisorio.

Note sulla versione

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

Passaggi successivi