Leggere in inglese

Condividi tramite


Abilitare il monitoraggio delle applicazioni nel servizio app Azure per applicazioni .NET, Node.js, Python e Java

La strumentazione automatica, noto anche come monitoraggio del runtime, è il modo più semplice per abilitare Application Insights per il servizio app di Azure senza richiedere modifiche al codice o configurazioni avanzate. In base al proprio scenario specifico, valutare se è necessario un monitoraggio più avanzato tramite la strumentazione manuale.

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 Application Insights

Importante

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

Nota

Strumentazione automatica nel portale di Azure

  1. Selezionare Application Insights nel menu di spostamento a sinistra del servizio app e quindi selezionare 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 degli strumenti dell'applicazione.

Aggiornare manualmente l'estensione/agente di monitoraggio

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 verranno ritirati al riavvio dell'applicazione.

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:

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

Configurare l'estensione/agente di monitoraggio

Attualmente non sono disponibili opzioni per configurare l'estensione di monitoraggio per ASP.NET Core.

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 seguenti:

Screenshot che mostra le impostazioni dell'applicazione App Service con le impostazioni di Application Insights.

Definizioni delle impostazioni dell'applicazione

Nome dell'impostazione dell'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 l'SDK di Application Insights.) 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 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. Nel portale di Azure creare una nuova risorsa app Web con le informazioni desiderate. Abilitare Application Insights nella scheda Monitoraggio e protezione .

  2. Passare a Rivedi e crea e quindi selezionare Scarica un modello per l'automazione. Questa opzione genera il modello di Resource Manager più recente con tutte le impostazioni necessarie configurate.

    Screenshot che mostra il menu di creazione della web app in App Service.

Nota

Il modello di esempio seguente è destinato a un'applicazione .NET 8 (LTS) in esecuzione in Windows. Usa i segnaposto my-monitored-web-app per il nome dell'applicazione e aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e per l'ID sottoscrizione.

Non è consigliabile copiarlo e usarlo direttamente. Generare invece un modello personalizzato in base alle istruzioni precedenti.


Espandere per visualizzare il modello di esempio
{
    "$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": {}
                        }
                    ]
                }
            }
        }
    ]
}

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 my-monitored-web-app nel gruppo di risorse my-resource-group. Configura i dati da inviare alla stringa di InstrumentationKey=012345678-abcd-ef01-2345-6789abcd connessione.

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

Per Windows impostare ApplicationInsightsAgent_EXTENSION_VERSION su ~2.

Per Linux impostare ApplicationInsightsAgent_EXTENSION_VERSION su ~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

Risoluzione dei problemi

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 relativi ai dati di telemetria dell'applicazione mancanti in Application Insights di Monitoraggio di Azure.

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. Eseguire il deployment di un'applicazione prima di risolvere un problema.

Dati di telemetria mancanti

Windows

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

  2. Passare 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 consente di rendere disponibili le 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 qualsiasi pacchetto di Application Insights, l'abilitazione dell'integrazione servizio app potrebbe non essere effettiva e i dati potrebbero non essere visualizzati in Application Insights. Un esempio sarebbe se in precedenza hai integrato o hai tentato di integrare l'app con ASP.NET Core SDK. Per risolvere il problema, nella portale di Azure attivare Interoperabilità con Application Insights SDK.

      Importante

      Questa funzionalità è in anteprima.

       Screenshot che mostra l'impostazione di Interop abilitata.

      I dati vengono inviati utilizzando un approccio senza codice, anche se il SDK di Application Insights era stato originariamente utilizzato o si era tentato di utilizzarlo.

      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.

Linux

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

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

  3. All'interno del sito confermare:

    • La fonte dello stato esiste e appare come Status source /var/log/applicationinsights/status_abcde1234567_89_0.json.
    • Viene visualizzato il valore Auto-Instrumentation enabled successfully. Se non è presente un valore simile, significa che l'applicazione non è 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 consente di rendere disponibili le informazioni di runtime.
    • IKeyExists è True. Se è False, aggiungere APPINSIGHTS_INSTRUMENTATIONKEY e APPLICATIONINSIGHTS_CONNECTION_STRING con il GUID ikey alle impostazioni dell'applicazione.

    Screenshot che mostra la pagina Web dello stato della strumentazione automatica.

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 vuoi testare il monitoraggio lato server e lato client senza codice per ASP.NET Core in un'app web di App Service, consigliamo di seguire le guide ufficiali per creare un'app web ASP.NET Core. Successivamente, usare le istruzioni nell'articolo corrente per abilitare il monitoraggio.

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 tenere traccia delle transazioni lato client in un sito PHP o WordPress, aggiungere javaScript sul lato client alle pagine Web usando JavaScript SDK.

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

Valore del problema Spiegazione Correzione
AppAlreadyInstrumented:true Questo valore indica che l'estensione ha rilevato un aspetto dell'SDK già presente nell'applicazione e fa un passo indietro. Un riferimento a Microsoft.ApplicationInsights.AspNetCore o Microsoft.ApplicationInsights può causare questo valore. 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 Anche la presenza di Microsoft.ApplicationsInsights DLL nella cartella dell'app da una distribuzione precedente può causare questo valore. 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 di App Service, 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.

Passaggi successivi


Risorse aggiuntive

Formazione

Modulo

Configurare il monitoraggio per le applicazioni - Training

In questo modulo si apprenderà come usare Application Insights per monitorare le prestazioni dell'applicazione e come usare Azure ASQL Insights per migliorare le prestazioni delle applicazioni di database SQL di Azure.

Certificazione

Certificazione Microsoft: Azure Developer Associate - Certifications

Progettare soluzioni end-to-end in Microsoft Azure per creare Funzioni di Azure, implementare e gestire app Web, sviluppare soluzioni che usano Archiviazione di Azure e altro ancora.