Abilitare e configurare la registrazione delle applicazioni del servizio app

Completato

In questa unità verrà descritto come la registrazione può essere utile per le app Web e come si abilitano i relativi log.

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 possono 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 indirizzare i messaggi ai file di log, le app Web di Azure usano il server Web (processo 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, può 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 Windows Errore, Avviso, Informazioni, Dettagli File system, archiviazione BLOB
ASP.NET Core Windows Errore, Avviso, Informazioni, Dettagli File system, archiviazione BLOB
ASP.NET Core Linux Errore File system
Node.JS Windows Errore (STDERR), informazioni (STDOUT), avviso, modalità dettagliata File system, archiviazione BLOB
Node.JS Linux Errore File system
Java Linux Errore 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. È progettato per la distribuzione di app in produzione ed è uno strumento di sviluppo potenzialmente utile. Application Insights 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, può 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.

Screenshot of Diagnostics logs pane in the Azure portal.

Per abilitare la registrazione nel file system dell'app Web, impostare Registrazione applicazioni (file system) su 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 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.

Screenshot of configuring application logs in the Azure portal with Save highlighted.

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>

Verificare le conoscenze

1.

Quali tipi di app Web sono in grado di salvare i log in Archiviazione BLOB di Azure?

2.

Perché la registrazione nel file system viene automaticamente disattivata dopo 12 ore?