Abilitare la registrazione diagnostica per le app nel Servizio app di Azure
Panoramica
Azure offre diagnostica integrata per facilitare il debug di un'app del servizio app. In questo articolo viene descritto come abilitare la registrazione diagnostica e aggiungere strumentazione all'applicazione. Viene anche descritto come accedere alle informazioni registrate da Azure.
L'articolo illustra anche l'uso del portale di Azure e dell'interfaccia della riga di comando di Azure per elaborare i log di diagnostica. Per informazioni sull'elaborazione dei log di diagnostica in Visual Studio vedere Risoluzione dei problemi di Azure in Visual Studio.
Nota
Oltre alle istruzioni di registrazione in questo articolo, è disponibile una nuova funzionalità di registrazione integrata con Monitoraggio di Azure. Altre informazioni su questa funzionalità sono disponibili nella sezione Inviare log a Monitoraggio di Azure .
Tipo | Piattaforma | Posizione | Descrizione |
---|---|---|---|
Registrazione di applicazioni | Windows, Linux | servizio app file system e/o BLOB di Archiviazione di Azure | Registra i messaggi generati dal codice dell'applicazione. I messaggi possono essere generati dal framework Web scelto o dal codice dell'applicazione direttamente usando il modello di registrazione standard del linguaggio. A ogni messaggio viene assegnata una delle categorie seguenti: Critico, Errore, Avviso, Info, Debug e Traccia. È possibile selezionare il livello di gravità desiderato impostando il livello di gravità quando si abilita la registrazione delle applicazioni. |
Registrazione del server Web | Windows | servizio app file system o BLOB di Archiviazione di Azure | Dati di richiesta HTTP non elaborati nel formato di file di log esteso W3C. Ogni messaggio di log include dati come il metodo HTTP, l'URI della risorsa, l'IP client, la porta client, l'agente utente, il codice di risposta e così via. |
Messaggi di errore dettagliati | Windows | servizio app file system | Copie delle pagine di errore.htm che sarebbero state inviate al browser client. Per motivi di sicurezza, le pagine di errore dettagliate non devono essere inviate ai client nell'ambiente di produzione, ma servizio app possono salvare la pagina di errore ogni volta che si verifica un errore dell'applicazione con codice HTTP 400 o superiore. La pagina può contenere informazioni che consentono di determinare il motivo per cui il server restituisce il codice di errore. |
Traccia delle richieste non riuscite | Windows | servizio app file system | Informazioni dettagliate sulla traccia sulle richieste non riuscite, inclusa una traccia dei componenti IIS usati per elaborare la richiesta e il tempo impiegato in ogni componente. È utile per migliorare le prestazioni del sito o isolare uno specifico errore HTTP. Viene generata una cartella per ogni richiesta non riuscita, che contiene il file di log XML e il foglio di stile XSL con cui visualizzare il file di log. |
Registrazione della distribuzione | Windows, Linux | servizio app file system | Registra quando si pubblica contenuto in un'app. La registrazione della distribuzione viene eseguita automaticamente e non sono disponibili impostazioni configurabili per la registrazione della distribuzione. Consente di determinare il motivo per cui una distribuzione non è riuscita. Ad esempio, se si usa uno script di distribuzione personalizzato, è possibile usare la registrazione della distribuzione per determinare il motivo per cui lo script ha esito negativo. |
Nota
servizio app offre uno strumento di diagnostica interattivo dedicato che consente di risolvere i problemi dell'applicazione. Per altre informazioni, vedere Panoramica approfondita della diagnostica del Servizio app di Azure.
È anche possibile usare altri servizi di Azure per migliorare le funzionalità di registrazione e monitoraggio dell'app, ad esempio Monitoraggio di Azure.
Abilitare la registrazione delle applicazioni (Windows)
Per abilitare la registrazione delle applicazioni per Windows app nel portale di Azure, passare all'app e selezionare servizio app log.
Selezionare Sì per Registrazione applicazioni (file system) o Registrazione applicazioni (BLOB) o entrambi.
L'opzione Filesystem è destinata a scopi di debug temporanei e si disattiva in 12 ore. L'opzione BLOB è per la registrazione a lungo termine e richiede un contenitore di archiviazione BLOB in cui scrivere i log. L'opzione BLOB include anche informazioni aggiuntive nei messaggi di log, ad esempio l'ID dell'istanza della macchina virtuale di origine del messaggio di log (), l'ID del thread (InstanceId
Tid
) e un timestamp più granulare (EventTickCount
).
Nota
Se l'account Archiviazione di Azure è protetto dalle regole del firewall, vedere Considerazioni sulla rete.
Nota
Attualmente solo i log applicazioni .NET possono essere scritti nell'archiviazione BLOB. Java, PHP, Node.js, i log applicazioni Python possono essere archiviati solo nel file system servizio app (senza modifiche al codice per scrivere i log nell'archiviazione esterna).
Inoltre, se si rigenerano le chiavi di accesso dell'account di archiviazione, è necessario reimpostare la rispettiva configurazione di registrazione per usare le chiavi di accesso aggiornate. Per eseguire questa operazione:
- Nella scheda Configura impostare la funzionalità di registrazione corrispondente su Off. Salvare l’impostazione.
- Abilitare di nuovo la registrazione al BLOB dell'account di archiviazione. Salvare l’impostazione.
Selezionare il livello o il livello di dettagli da registrare. La tabella seguente mostra le categorie di log incluse in ogni livello:
Livello | Categorie incluse |
---|---|
Disabilitato | Nessuno |
Error (Errore) (Error (Errore)e) | Errore, Errore critico |
Avviso | Avviso, Errore, Errore critico |
Informazioni | Informazioni, Avviso, Errore, Errore critico |
Verbose | Analisi, Debug, Informazioni, Avviso, Errore, Errore critico (tutte le categorie) |
Al termine, selezionare Salva.
Nota
Se si scrivono log in BLOB, i criteri di conservazione non vengono più applicati se si elimina l'app ma si mantengono i log nei BLOB. Per altre informazioni, vedere Costi che potrebbero accumularsi dopo l'eliminazione delle risorse.
Abilitare la registrazione delle applicazioni (Linux/Contenitore)
Per abilitare la registrazione delle applicazioni per app Linux o contenitori personalizzati nel portale di Azure, passare all'app e selezionare servizio app log.
In Registrazione applicazioni selezionare File system.
In Quota (MB)specificare la quota del disco per i log applicazioni. In Periodo di conservazione (giorni) impostare il numero di giorni in cui devono essere conservati i log.
Al termine, selezionare Salva.
Abilitazione della registrazione del server Web
Per abilitare la registrazione del server Web per le app Windows nel portale di Azure, passare all'app e selezionare servizio app log.
Per Registrazione server Web selezionare Archiviazione per archiviare i log nell'archivio BLOB o File System per archiviare i log nel file system servizio app.
Nota
Se l'account Archiviazione di Azure è protetto dalle regole del firewall, vedere Considerazioni sulla rete.
In Periodo di conservazione (giorni) impostare il numero di giorni in cui devono essere conservati i log.
Nota
Se si rigenerano le chiavi di accesso dell'account di archiviazione, è necessario reimpostare la configurazione di registrazione corrispondente per l'uso delle chiavi aggiornate. Per eseguire questa operazione:
- Nella scheda Configura impostare la funzionalità di registrazione corrispondente su Off. Salvare l’impostazione.
- Abilitare di nuovo la registrazione al BLOB dell'account di archiviazione. Salvare l’impostazione.
Al termine, selezionare Salva.
Nota
Se si scrivono log in BLOB, i criteri di conservazione non vengono più applicati se si elimina l'app ma si mantengono i log nei BLOB. Per altre informazioni, vedere Costi che potrebbero accumularsi dopo l'eliminazione delle risorse.
Registrare errori dettagliati
Per salvare la pagina di errore o la traccia delle richieste non riuscite per Windows app nel portale di Azure, passare all'app e selezionare servizio app log.
In Registrazione dettagliata degli errori o Traccia richieste non riuscite selezionare Sì, quindi selezionare Salva.
Entrambi i tipi di log vengono archiviati nel file system servizio app. Vengono conservati fino a 50 errori (file/cartelle). Quando il numero di file HTML supera 50, i file di errore meno recenti vengono eliminati automaticamente.
Per impostazione predefinita, la funzionalità Traccia richieste non riuscite acquisisce un log di richieste non riuscite con codici di stato HTTP compresi tra 400 e 600. Per specificare regole personalizzate, è possibile eseguire l'override della <traceFailedRequests>
sezione nel file web.config .
Aggiungere messaggi di log nel codice
Nel codice dell'applicazione si usano le normali funzionalità di registrazione per inviare messaggi di log ai log dell'applicazione. Ad esempio:
Le applicazioni ASP.NET possono utilizzare la classe System.Diagnostics.Trace per registrare le informazioni nel log di diagnostica applicazioni. Ad esempio:
System.Diagnostics.Trace.TraceError("If you're seeing this, something bad happened");
Per impostazione predefinita, ASP.NET Core usa il provider di registrazione Microsoft.Extensions.Logging.AzureAppServices. Per altre informazioni, vedere Registrazione in ASP.NET Core- Registrazione in Azure. Per informazioni sulla registrazione di WebJobs SDK, vedere Attività iniziali con Azure WebJobs SDK
Eseguire lo streaming dei log
Prima di trasmettere i log in tempo reale, abilitare il tipo di log desiderato. Tutte le informazioni scritte nei file che terminano in .txt, log o .htm archiviate nella directory /LogFiles (d:/home/logfiles) vengono trasmessi da servizio app.
Nota
Alcuni tipi di buffer di registrazione scrivono nel file di log, producendo nel caso eventi di "fuori servizio" nel flusso. Ad esempio, una voce del log di applicazione che si verifica quando un utente visita una pagina può essere visualizzata nel flusso prima della corrispondente voce di log HTTP per la richiesta della pagina.
Nel portale di Azure
Per trasmettere i log nel portale di Azure, passare all'app e selezionare Flusso di log.
In Cloud Shell
Per trasmettere i log live in Cloud Shell, usare il comando seguente:
Importante
Questo comando potrebbe non funzionare con le app Web ospitate in un piano di servizio app Linux.
az webapp log tail --name appname --resource-group myResourceGroup
Per filtrare tipi di log specifici, ad esempio HTTP, usare il parametro --Provider . Ad esempio:
az webapp log tail --name appname --resource-group myResourceGroup --provider http
Nel terminale locale
Per trasmettere i log nella console locale, installare l'interfaccia della riga di comando di Azure e accedere all'account. Dopo aver eseguito l'accesso, seguire le istruzioni per Cloud Shell
Accedere ai file di log
Se si configura l'opzione ARCHIVIAZIONE DI AZURE BLOB per un tipo di log, è necessario uno strumento client che funzioni con Archiviazione di Azure. Per altre informazioni, vedere Archiviazione di Azure Strumenti client.
Per i log archiviati nel file system servizio app, il modo più semplice consiste nel scaricare il file ZIP nel browser all'indirizzo:
- Contenitori Linux/personalizzati:
https://<app-name>.scm.azurewebsites.net/api/logs/docker/zip
- Windows app:
https://<app-name>.scm.azurewebsites.net/api/dump
Per i contenitori Linux/personalizzati, il file ZIP contiene i log di output della console sia per l'host Docker che per il contenitore Docker. Per un'app con scalabilità orizzontale, il file ZIP contiene un set di log per ogni istanza. Nel file system servizio app questi file di log sono il contenuto della directory /home/LogFiles.
Per Windows app, il file ZIP contiene il contenuto della directory D:\Home\LogFiles nel file system servizio app. Presenta la struttura seguente:
Tipo di log | Directory | Descrizione |
---|---|---|
Log applicazioni | /LogFiles/Application/ | Contiene uno o più file di testo. Il formato dei messaggi di log dipende dal provider di registrazione usato. |
Tracce delle richieste non riuscite | /LogFiles/W3SVC######/ | Contiene file XML e un file XSL. È possibile visualizzare i file XML formattati nel browser. |
Log degli errori dettagliati | /LogFiles/DetailedErrors/ | Contiene i file di errore HTM. È possibile visualizzare i file HTM nel browser. Un altro modo per visualizzare le tracce delle richieste non riuscite consiste nel passare alla pagina dell'app nel portale. Dal menu a sinistra selezionare Diagnosticare e risolvere i problemi, quindi cercare Log di traccia delle richieste non riuscite, quindi fare clic sull'icona per esplorare e visualizzare la traccia desiderata. |
Log del server Web | /LogFiles/http/RawLogs/ | Contiene file di testo formattati usando il formato di file di log esteso W3C. Queste informazioni possono essere lette usando un editor di testo o un'utilità come Log Parser. servizio app non supporta i s-computername campi , s-ip o cs-version . |
Log di distribuzione | /LogFiles/Git/ e /deployments/ | Contengono i log generati dai processi di distribuzione interna, nonché i log per le distribuzioni Git. |
Inviare log a Monitoraggio di Azure
Con la nuova integrazione di Monitoraggio di Azure è possibile creare Impostazioni di diagnostica per inviare log a account Archiviazione, Hub eventi e Log Analytics.
Tipi di log supportati
La tabella seguente illustra i tipi di log e le descrizioni supportati:
Tipo di log | Windows | Contenitore di Windows | Linux | Contenitore Linux | Descrizione |
---|---|---|---|---|---|
AppServiceConsoleLogs | Java edizione Standard & Tomcat | Sì | Sì | Sì | Output standard ed errore standard |
AppServiceHTTPLogs | Sì | Sì | Sì | Sì | Web Server Logs |
AppServiceEnvironmentPlatformLogs | Sì | N/D | Sì | Sì | ambiente del servizio app: ridimensionamento, modifiche alla configurazione e log di stato |
AppServiceAuditLogs | Sì | Sì | Sì | Sì | Attività di accesso tramite FTP e Kudu |
AppServiceFileAuditLogs | Sì | Sì | TBA | TBA | Modifiche ai file apportate al contenuto del sito; disponibile solo per il livello Premium e superiore |
AppServiceAppLogs | & ASP.NET Tomcat 1 | & ASP.NET Tomcat 1 | Java edizione Standard & Immagini benedette Tomcat 2 | Java edizione Standard & Immagini benedette Tomcat 2 | Log applicazioni |
AppServiceIPSecAuditLogs | Sì | Sì | Sì | Sì | Richieste da regole IP |
AppServicePlatformLogs | TBA | Sì | Sì | Sì | Log delle operazioni del contenitore |
AppServiceAntivirusScanAuditLogs 3 | Sì | Sì | Sì | Sì | Log di analisi antivirus con Microsoft Defender for Cloud; disponibile solo per il livello di Premium |
1 Per le app Tomcat, aggiungere TOMCAT_USE_STARTUP_BAT
alle impostazioni dell'app e impostarla su false
o 0
. Deve trovarsi nella versione più recente di Tomcat e usare java.util.logging.
2 Per le app Java edizione Standard, aggiungere WEBSITE_AZMON_PREVIEW_ENABLED
alle impostazioni dell'app e impostarla su true
o su 1
.
3 Il tipo di log AppServiceAntivirusScanAuditLogs è ancora in anteprima
Considerazioni sulla rete
Se si protegge l'account Archiviazione di Azure solo consentendo le reti selezionate, può ricevere i log da servizio app solo se sono vere entrambe le condizioni seguenti:
- L'account Archiviazione di Azure si trova in un'area di Azure diversa dall'app servizio app.
- Tutti gli indirizzi in uscita dell'app servizio app vengono aggiunti alle regole del firewall dell'account Archiviazione. Per trovare gli indirizzi in uscita per l'app, vedere Trovare gli indirizzi IP in uscita.
Passaggi successivi
- Eseguire query sui log con Monitoraggio di Azure
- Come monitorare il Servizio app di Azure
- Risoluzione dei problemi del Servizio app di Azure in Visual Studio
- Analizzare i log delle app in HDInsight
- Esercitazione: Eseguire un test di carico per identificare i colli di bottiglia delle prestazioni in un'app Web