Abilitare e configurare la registrazione delle applicazioni del servizio app
In questa unità verrà descritto come la registrazione può essere utile per le app Web e come si abilitano i log delle app.
Che cosa sono i log delle app?
Azure offre diagnostica predefinita con la registrazione delle app. I log delle app sono l'output delle istruzioni di traccia del runtime nel codice delle app. Ad esempio, è possibile scegliere di controllare parte della logica nel codice aggiungendo una traccia per vedere quando viene elaborata una specifica funzione. Oppure, è possibile decidere solo di visualizzare un messaggio registrato quando si verifica uno specifico livello di errore. La registrazione delle app è stata pensata principalmente per le app in pre-produzione e per la risoluzione di problemi complessi, perché il numero eccessivo di log può causare un calo delle prestazioni e un rapido esaurimento dello spazio di archiviazione. Per questo motivo, la registrazione nel file system viene disabilitata automaticamente dopo 12 ore.
La registrazione delle app presenta alcune limitazioni in fatto di dimensionamento, principalmente perché vengono usati file per salvare l'output registrato. Se sono presenti più istanze di un'app e la stessa risorsa di archiviazione viene condivisa tra tutte le istanze, i messaggi provenienti da istanze diverse potrebbero mescolarsi, rendendo difficile la risoluzione dei problemi. Se ogni istanza ha un proprio file di log, esistono più log e anche in questo caso diventa più difficile risolvere i problemi specifici dell'istanza.
I tipi di registrazione disponibili con il Servizio app di Azure dipendono dal framework di codice dell'app e dal fatto che l'app sia in esecuzione in un host app di Windows o Linux.
ASP.NET
Le app ASP.NET possono essere eseguite solo nei servizi app di Windows. Per registrare informazioni nel log di diagnostica delle app, usare la classe System.Diagnostics.Trace
. Si possono usare quattro livelli di traccia, correlati ai livelli di registrazione error
, warning
, information
e verbose
indicati nel portale di Azure:
- Trace.TraceError("Message"); // Scrive un messaggio di errore
- Trace.TraceWarning("Message"); // Scrive un messaggio di avviso
- Trace.TraceInformation("Message"); // Scrive un messaggio informativo
- Trace.WriteLine("Message"); // Scrive un messaggio dettagliato
App ASP.NET Core
Le app ASP.NET Core possono essere eseguite in Windows o Linux. Per registrare informazioni nei log delle app di Azure, è necessario usare la classe logger factory e quindi uno dei sei livelli di log:
- logger.LogCritical("Message"); // Scrive un messaggio critico al livello di registrazione 5
- logger.LogError("Message"); // Scrive un messaggio di errore al livello di registrazione 4
- logger.LogWarning("Message"); // Scrive un messaggio di avviso al livello di registrazione 3
- logger.LogInformation("Message"); // Scrive un messaggio informativo al livello di registrazione 2
- logger.LogDebug("Message"); // Scrive un messaggio di debug al livello di registrazione 1
- logger.LogTrace("Message"); // Scrive un messaggio di traccia dettagliato al livello di registrazione 0
Per le app ASP.NET Core in Windows, questi messaggi sono correlati ai filtri nel portale di Azure in questo modo:
- I livelli 4 e 5 sono messaggi di errore.
- Il livello 3 è un messaggio di avviso.
- Il livello 2 è un messaggio informativo.
- I livelli 0 e 1 sono messaggi dettagliati.
Per le app ASP.NET Core in Linux, vengono registrati solo i messaggi di errore (livelli 4 e 5).
App Node.js
Per le app Web basate su script, ad esempio le app Node.js in Windows o Linux, la registrazione delle app viene abilitata tramite il metodo console():
- console.error("Message"); // Scrive un messaggio in STDERR.
- console.log("Message"); // Scrive un messaggio in STDOUT.
Entrambi i tipi di messaggio vengono scritti nei log a livello di errore del servizio app di Azure.
Differenze di registrazione tra gli host Windows e Linux
Per instradare i messaggi ai file di log, le app Web di Azure usano il server Web Internet Information Services (IIS). Poiché le app Web basate su Windows sono un servizio di Azure consolidato e la messaggistica per le app ASP.NET è strettamente integrata con il servizio IIS sottostante, le app di Windows traggono vantaggio da un'infrastruttura di registrazione avanzata. Per le altre app, le opzioni di registrazione sono limitate dalla piattaforma di sviluppo, anche se sono in esecuzione in un servizio app di Windows.
L'immagine Docker usata per il contenitore di app determina la funzionalità di registrazione disponibile per le app con script basate su Linux, ad esempio Node. La registrazione di base, ad esempio con reindirizzamenti a STDERR o STDOUT, usa i log Docker. La funzionalità di registrazione più avanzata dipende dall'immagine sottostante, ad esempio se è in esecuzione PHP, Perl, Ruby e così via. Per scaricare la registrazione delle applicazioni Web equivalente messa a disposizione da IIS per le app di Windows, potrebbe essere necessaria la connessione al contenitore con SSH.
La tabella seguente contiene un riepilogo del supporto di registrazione per ambienti di app e gli host più comuni.
Ambiente app | Host | Livelli di registrazione | Percorso di salvataggio |
---|---|---|---|
ASP.NET | Finestre | Errore, Avviso, Informazioni, Dettagli | File system, archiviazione BLOB |
ASP.NET Core | Finestre | Errore, Avviso, Informazioni, Dettagli | File system, archiviazione BLOB |
ASP.NET Core | Linux | Error | File system |
Node.js | Finestre | Errore (STDERR), informazioni (STDOUT), avviso, modalità dettagliata | File system, archiviazione BLOB |
Node.js | Linux | Error | File system |
Java | Linux | Error | File system |
Alternative alla diagnostica delle app
Azure Application Insights è un'estensione del sito che fornisce più funzionalità di monitoraggio delle prestazioni, ad esempio dati dettagliati su utilizzo e prestazioni. Application Insights è progettato per la distribuzione di app in produzione ed è uno strumento di sviluppo potenzialmente utile. Funziona con una gamma di ambienti di sviluppo di app e offre lo stesso set di dati avanzati su telemetria e prestazioni sia per le app ASP.NET che per le app Node. Tuttavia, per usare Application Insights, è necessario includere un codice specifico all'interno dell'app, usando l'SDK di Application Insights. Application Insights è anche un servizio fatturabile. Quindi, in base alle dimensioni delle distribuzioni di app e ai dati raccolti, potrebbe essere necessario pianificare costi regolari.
È anche possibile visualizzare le Metriche per l'app, che consentono di profilarne il funzionamento. Questi contatori sono utili nella produzione e nello sviluppo. È possibile visualizzare l'utilizzo di CPU, memoria, rete e file system e impostare gli avvisi quando un contatore raggiunge una determinata soglia. La fatturazione per le metriche è coperta dal livello di piano di servizio app.
Abilitare la registrazione usando il portale di Azure
Nel portale la registrazione delle app viene gestita dal riquadro Log di diagnostica dell'app Web.
Per abilitare la registrazione nel file system dell'app Web, impostare Registrazione applicazioni (file system) su Sì e quindi impostare Livello su Errore, Avviso, Informazioni o Dettagli. La registrazione nel file system verrà automaticamente reimpostata su No dopo 12 ore.
Per abilitare la registrazione in un contenitore di Archiviazione BLOB, impostare Registrazione applicazioni (BLOB) su Sì e quindi selezionare un account di archiviazione e un contenitore. L'account di archiviazione e l'app Web devono essere creati nella stessa area di Azure. Impostare quindi il livello su Errore, Avviso, Informazioni o Dettagli.
Nota
Il salvataggio nell'archiviazione BLOB non è disponibile per i log delle app Linux.
Quando si accede all'archivio BLOB, è necessario impostare anche un periodo di conservazione. A differenza dei log del file system, i log di BLOB non vengono mai eliminati per impostazione predefinita. L'opzione del periodo di conservazione consente di eliminare i log con date meno recenti del numero specificato di giorni.
Dopo aver configurato i log, selezionare Salva.
Abilitare la registrazione usando l'interfaccia della riga di comando di Azure
Per abilitare la registrazione delle app nel file system, eseguire questo comando.
az webapp log config --application-logging filesystem --level verbose --name <app-name> --resource-group <resource-group-name>
Ad esempio, per abilitare la registrazione nel file system per un'app denominata contosofashions123, con l'acquisizione di tutti i messaggi, eseguire questo comando.
az webapp log config --application-logging filesystem --level verbose --name contosofashions123 --resource-group contosofashionsRG
Attualmente non è possibile disabilitare la registrazione delle applicazioni usando i comandi dell'interfaccia della riga di comando di Azure. Tuttavia, il comando seguente reimposta la registrazione nel file system solo a livello di errore.
az webapp log config --application-logging off --name <app-name> --resource-group <resource-group-name>
Per visualizzare lo stato attuale della registrazione per un'app, usare questo comando.
az webapp log show --name <app-name> --resource-group <resource-group-name>