Monitoraggio delle applicazioni per il servizio app Azure e Java

Il monitoraggio delle applicazioni Web Java in esecuzione in app Azure Services non richiede alcuna modifica al codice. Questo articolo illustra come abilitare il monitoraggio di Application Insights di Monitoraggio di Azure e fornisce indicazioni preliminari per automatizzare il processo per distribuzioni su larga scala.

Nota

Con le applicazioni Spring Boot Native Image, usare il progetto di applicazione Java di Spring Boot OpenTelemetry Distro/Application Insights in Monitoraggio di Azure anziché la soluzione dell'agente Java di Application Insights descritta di seguito.

Abilita Application Insights

Il modo consigliato per abilitare il monitoraggio delle applicazioni Java per le applicazioni Java in esecuzione in app Azure Services è tramite portale di Azure. L'attivazione del monitoraggio delle applicazioni in portale di Azure instrumenterà automaticamente l'applicazione con Application Insights e non richiede alcuna modifica del codice. È possibile applicare configurazioni aggiuntive e quindi in base al proprio scenario specifico, se necessario, si aggiungono dati di telemetria personalizzati.

Strumentazione automatica tramite portale di Azure

È possibile attivare il monitoraggio per le app Java in esecuzione in app Azure Servizio solo con una selezione, senza alcuna modifica del codice necessaria. L'integrazione aggiunge Application Insights Java 3.x e raccoglie automaticamente i dati di telemetria.

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

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

    Screenshot della scheda Application Insights con l'opzione abilitata 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, verrà richiesto di applicare le impostazioni di monitoraggio. Selezionando Continua si collegherà la nuova risorsa di Application Insights al servizio app; ciò consente anche di attivare un riavvio del servizio app.

    Screenshot dell'elenco a discesa Cambia risorsa.

  3. Questo ultimo passaggio è facoltativo. Dopo aver specificato la risorsa da usare, è possibile configurare l'agente Java. Se non si configura l'agente Java, si applicano le configurazioni predefinite.

    Il set completo di configurazioni è disponibile, è sufficiente incollare un file JSON valido. Escludere il stringa di connessione e tutte le configurazioni in anteprima. È possibile aggiungere gli elementi attualmente in anteprima man mano che diventano disponibili a livello generale.

    Dopo aver modificato le configurazioni tramite portale di Azure, APPLICATIONINSIGHTS_CONFIGURATION_FILE variabile di ambiente vengono popolate automaticamente e visualizzate nel pannello delle impostazioni servizio app. Questa variabile contiene il contenuto JSON completo incollato nella casella di testo portale di Azure configurazione per l'app Java.

    Screenshot dello strumento dell'applicazione.

Abilitare il monitoraggio lato client

Per abilitare il monitoraggio lato client per l'applicazione Java, è necessario aggiungere manualmente JavaScript SDK sul lato client all'applicazione.

Automatizzare il monitoraggio

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

Screenshot di servizio app application Impostazioni con le impostazioni di Application Insights disponibili.

Definizioni delle impostazioni dell'applicazione

Nome impostazione app Definizione Valore
ApplicationInsightsAgent_EXTENSION_VERSION Estensione principale, che controlla il monitoraggio del runtime. ~2 in Windows o ~3 in Linux.
XDT_MicrosoftApplicationInsights_Java Flag per controllare se è incluso l'agente Java. 0 o 1 (applicabile solo in Windows).

Nota

Profiler e debugger snapshot non sono disponibili per le applicazioni Java

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

Risoluzione dei problemi

Usare la guida dettagliata per risolvere i problemi relativi alle applicazioni basate su Java in esecuzione nei servizi di app Azure.

  1. Verificare che ApplicationInsightsAgent_EXTENSION_VERSION l'impostazione dell'app sia impostata su "~2" in Windows, "~3" in Linux

  2. Esaminare il file di log per verificare che l'agente sia stato avviato correttamente: passare a "https://yoursitename.scm.azurewebsites.net/, in SSH passare alla directory radice, il file di log si trova in LogFiles/ApplicationInsights.

    Screenshot della pagina dei risultati del collegamento precedente.

  3. Dopo aver abilitato il monitoraggio delle applicazioni per l'app Java, è possibile verificare che l'agente funzioni esaminando le metriche attive, anche prima di distribuire e app in servizio app verranno visualizzate alcune richieste dall'ambiente. Tenere presente che il set completo di dati di telemetria è disponibile solo quando l'app è stata distribuita ed eseguita.

  4. Impostare APPLICATIONINSIGHTS_edizione Standard LF_DIAGNOSTICS_LEVEL variabile di ambiente su "debug" se non vengono visualizzati errori e non sono presenti dati di telemetria

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.

Distribuire manualmente la versione più recente di Application Insights Java

La versione java di Application Insights viene aggiornata automaticamente come parte degli aggiornamenti di servizio app.

Se si verifica un problema risolto nella versione più recente di Application Insights Java, è possibile aggiornarlo manualmente.

Per eseguire l'aggiornamento manuale, seguire questa procedura:

  1. Caricare il file JAR dell'agente Java in servizio app

    a. Per prima cosa, ottenere la versione più recente dell'interfaccia della riga di comando di Azure seguendo le istruzioni riportate qui.

    b. Ottenere quindi la versione più recente dell'agente Java di Application Insights seguendo le istruzioni riportate qui.

    c. Distribuire quindi il file JAR dell'agente Java in servizio app usando il comando seguente: az webapp deploy --src-path applicationinsights-agent-{VERSION_NUMBER}.jar --target-path java/applicationinsights-agent-{VERSION_NUMBER}.jar --type static --resource-group {YOUR_RESOURCE_GROUP} --name {YOUR_APP_SVC_NAME}. In alternativa, è possibile usare questa guida per distribuire l'agente tramite il plug-in Maven.

  2. Disabilitare Application Insights tramite la scheda Application Insights nella portale di Azure.

  3. Dopo aver caricato il file JAR dell'agente, passare a servizio app configurazioni. Se è necessario usare il comando di avvio per Linux, includere gli argomenti jvm:

    Screenshot del comando di avvio.

    Il comando di avvio non rispetta JAVA_OPTS Java edizione Standard o CATALINA_OPTS per Tomcat.

    Se non si usa Comando di avvio, creare una nuova variabile di ambiente, JAVA_OPTS per Java edizione Standard o CATALINA_OPTS per Tomcat, con il valore -javaagent:{PATH_TO_THE_AGENT_JAR}/applicationinsights-agent-{VERSION_NUMBER}.jar.

  4. Riavviare l'app per applicare le modifiche.

Nota

Se si imposta per JAVA_OPTS Java edizione Standard o CATALINA_OPTS per la variabile di ambiente Tomcat, sarà necessario disabilitare Application Insights nel portale. In alternativa, se si preferisce abilitare Application Insights dal portale, assicurarsi di non impostare per JAVA_OPTS Java edizione Standard o CATALINA_OPTS per la variabile Tomcat nelle impostazioni delle configurazioni servizio app.

Note sulla versione

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

Passaggi successivi