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.
Selezionare Application Insights nel pannello di controllo di Azure per il servizio app e quindi selezionare Abilita.
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.
Specificare la risorsa ed è pronta per l'uso.
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:
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.
Automatizzare la creazione di una risorsa di Application Insights e il collegamento alla risorsa servizio app appena creata
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.
Creare una nuova risorsa servizio app con le informazioni desiderate sull'app Web. Abilitare Application Insights nella scheda Monitoraggio .
Selezionare Rivedi e crea. Selezionare quindi Scarica un modello per l'automazione.
Questa opzione genera il modello di Resource Manager più recente con tutte le impostazioni necessarie configurate.
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 AppMonitoredRG
di 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:
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.
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
- Abilitare la diagnostica di Azure da inviare ad Application Insights
- Monitorare le metriche di integrità dei servizi per assicurarsi che il servizio sia disponibile e reattivo
- Ricevere notifiche di avviso ogni volta che si verificano eventi operativi o metriche superano una soglia
- Panoramica della disponibilità