Monitoraggio delle applicazioni per il servizio app Azure e Python (anteprima)

Importante

Vedere le condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure per termini legali aggiuntivi che si applicano a funzionalità di Azure in versione beta, in anteprima o in altro modo non ancora disponibili a livello generale.

Monitorare le applicazioni Web Python in app Azure Services senza modificare il codice. Questa guida illustra come abilitare Application Insights di Monitoraggio di Azure e offre suggerimenti per automatizzare le distribuzioni su larga scala.

Gli strumenti di integrazione delle librerie Python più diffuse nel codice consentono di raccogliere e correlare automaticamente dipendenze, log e metriche. Dopo la strumentazione, si raccolgono chiamate e metriche da queste librerie Python:

Strumentazione Nome libreria supportato Versioni supportate
Strumentazione Django OpenTelemetry django Link
Strumentazione FastApi OpenTelemetry fastapi Link
Strumentazione Flask OpenTelemetry flask Link
Strumentazione Psycopg2 OpenTelemetry psycopg2 Link
Strumentazione richieste OpenTelemetry requests Link
Strumentazione URLLib openTelemetry urllib Tutte le date
Strumentazione UrlLib3 openTelemetry urllib3 Link

Nota

Se si usa Django, vedere la sezione strumentazione Django aggiuntiva in questo articolo.

La registrazione dei dati di telemetria viene raccolta al livello del logger radice. Per altre informazioni sulla gerarchia di registrazione nativa di Python, vedere la documentazione sulla registrazione di Python.

Prerequisiti

  • Python versione 3.11 o precedente.
  • servizio app deve essere distribuito come codice. I contenitori personalizzati non sono supportati.

Abilita Application Insights

Il modo più semplice per monitorare le applicazioni Python in app Azure Services consiste nell'usare il portale di Azure.

L'attivazione del monitoraggio nella portale di Azure strumenti automaticamente l'applicazione con Application Insights e non richiede modifiche al codice.

Nota

È consigliabile usare la strumentazione automatica solo in servizio app se non si usa la strumentazione manuale di OpenTelemetry nel codice, ad esempio la distribuzione OpenTelemetry di Monitoraggio di Azure o l'utilità di esportazione OpenTelemetry di Monitoraggio di Azure. Ciò impedisce l'invio di dati duplicati. Per altre informazioni, vedere la sezione relativa alla risoluzione dei problemi in questo articolo.

Strumentazione automatica tramite portale di Azure

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

Attivare o disattivare il monitoraggio per le app Python in app Azure Servizio senza apportare modifiche al codice.

Application Insights per Python si integra con il servizio Linux app Azure basato su codice.

L'integrazione è disponibile in anteprima pubblica. Aggiunge Python SDK, disponibile a livello generale.

  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. Specificare la risorsa ed è pronta per l'uso.

    Screenshot dello strumento dell'applicazione.

Impostazione

È possibile configurare con variabili di ambiente OpenTelemetry, ad esempio:

Variabile di ambiente Descrizione
OTEL_SERVICE_NAME, OTEL_RESOURCE_ATTRIBUTES Specifica gli attributi delle risorse OpenTelemetry associati all'applicazione. È possibile impostare qualsiasi attributo di risorsa con OTEL_RESOURCE_ATTRIBUTES o usare OTEL_edizione Standard RVICE_NAME per impostare solo .service.name
OTEL_LOGS_EXPORTER Se impostato su None, disabilita la raccolta e l'esportazione dei dati di telemetria di registrazione.
OTEL_METRICS_EXPORTER Se impostato su None, disabilita la raccolta e l'esportazione dei dati di telemetria delle metriche.
OTEL_TRACES_EXPORTER Se impostato su None, disabilita la raccolta e l'esportazione dei dati di telemetria di traccia distribuiti.
OTEL_BLRP_SCHEDULE_DELAY Specifica l'intervallo di esportazione della registrazione in millisecondi. Il valore predefinito è 5000.
OTEL_BSP_SCHEDULE_DELAY Specifica l'intervallo di esportazione della traccia distribuita in millisecondi. Il valore predefinito è 5000.
OTEL_PYTHON_DISABLED_INSTRUMENTATIONS Specifica quali strumentazioni OpenTelemetry disabilitare. Se disabilitata, le strumentazioni non vengono eseguite come parte dell'strumentazione automatica. Accetta un elenco delimitato da virgole di nomi di librerie minuscole. Ad esempio, impostarlo su "psycopg2,fastapi" per disabilitare le strumentazioni Psycopg2 e FastAPI. L'impostazione predefinita è un elenco vuoto, abilitando tutte le strumentazioni supportate.

Aggiungere una libreria di strumentazione della community

È possibile raccogliere più dati automaticamente quando si includono librerie di strumentazione dalla community OpenTelemetry.

Attenzione

Non supportiamo né garantiamo la qualità delle librerie di strumentazione della community. Per suggerire una distribuzione, pubblicare o votare in modo positivo nella community dei commenti e suggerimenti. Tenere presente che alcuni si basano sulle specifiche sperimentali opentelemetry e potrebbero introdurre modifiche di rilievo future.

Per aggiungere la community OpenTelemetry Instrumentation Library, installarla tramite il file dell'app requirements.txt . OpenTelemetry autoinstrumentation preleva automaticamente e instrumenta tutte le librerie installate. Trovare l'elenco delle raccolte della community qui.

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
APPLICATIONINSIGHTS_CONNECTION_STRING stringa Connessione ions per la risorsa di Application Insights Esempio: abcd1234-ab12-cd34-abcd1234abcd
ApplicationInsightsAgent_EXTENSION_VERSION Estensione principale, che controlla il monitoraggio del runtime. ~3

Nota

Profiler e debugger snapshot non sono disponibili per le applicazioni Python

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

Strumentazione Django

Per usare La strumentazione Django OpenTelemetry, è necessario impostare la DJANGO_SETTINGS_MODULE variabile di ambiente nelle impostazioni di servizio app per puntare dalla cartella dell'app al modulo delle impostazioni. Per altre informazioni, vedere la documentazione di Django.

Domande frequenti

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.

Risoluzione dei problemi

Di seguito è disponibile la guida alla risoluzione dei problemi per il monitoraggio delle applicazioni Python nei servizi app Azure tramite l'installazione automatica.

Dati di telemetria duplicati

È consigliabile usare la strumentazione automatica solo in servizio app se non si usa la strumentazione manuale di OpenTelemetry nel codice, ad esempio la distribuzione OpenTelemetry di Monitoraggio di Azure o l'utilità di esportazione OpenTelemetry di Monitoraggio di Azure. L'uso della strumentazione automatica sopra la strumentazione manuale potrebbe causare dati di telemetria duplicati e aumentare il costo. Per usare servizio app'installazione automatica di OpenTelemetry, rimuovere prima di tutto la strumentazione manuale di OpenTelemetry dal codice.

Dati di telemetria mancanti

Se mancano i dati di telemetria, seguire questa procedura per verificare che la strumentazione automatica sia abilitata correttamente.

Passaggio 1: Controllare il pannello Application Insights nella risorsa servizio app

Verificare che l'strumentazione automatica sia abilitata nel pannello Application Insights nella risorsa servizio app:

Screenshot della scheda Application Insights con l'opzione abilitata selezionata.

Passaggio 2: Verificare che l'Impostazioni dell'app sia corretta

Verificare che l'impostazione dell'app ApplicationInsightsAgent_EXTENSION_VERSION sia impostata su un valore e ~3 che punti APPLICATIONINSIGHTS_CONNECTION_STRING alla risorsa di Application Insights appropriata.

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

Passaggio 3: Controllare la diagnostica e i log di stato di strumentazione automatica

Passare a /var/log/applicationinsights/ e aprire status_*.json.

Verificare che AgentInitializedSuccessfully sia impostato su true e IKey che abbia una chiave iKey valida.

Ecco un file JSON di esempio:

    "AgentInitializedSuccessfully":true,
            
    "AppType":"python",
            
    "MachineName":"c89d3a6d0357",
            
    "PID":"47",
            
    "IKey":"00000000-0000-0000-0000-000000000000",
            
    "SdkVersion":"1.0.0"

Il applicationinsights-extension.log file nella stessa cartella può mostrare altre diagnostiche utili.

App Django

Se l'app usa Django e non riesce ad avviare o usare impostazioni non corrette, assicurarsi di impostare la DJANGO_SETTINGS_MODULE variabile di ambiente. Per informazioni dettagliate, vedere la sezione Strumentazione Django.


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.

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

Passaggi successivi