Monitorare le esecuzioni in Funzioni di Azure

Funzioni di Azure offre un'integrazione predefinita con applicazione Azure Insights per monitorare le esecuzioni delle funzioni. Questo articolo offre una panoramica delle funzionalità di monitoraggio fornite da Azure per il monitoraggio Funzioni di Azure.

Application Insights raccoglie i dati di log, prestazioni ed errori. Rilevando automaticamente anomalie delle prestazioni e offrendo potenti strumenti di analisi, è possibile diagnosticare più facilmente i problemi e comprendere meglio il modo in cui vengono usate le funzioni. Questi strumenti sono progettati per migliorare continuamente le prestazioni e l'usabilità delle funzioni. È anche possibile usare Application Insights durante lo sviluppo di un progetto locale di app per le funzioni. Per altre informazioni, vedere Informazioni su Application Insights.

Poiché la strumentazione di Application Insights è incorporata in Funzioni di Azure, è necessaria una chiave di strumentazione valida per connettere l'app per le funzioni a una risorsa di Application Insights. La chiave di strumentazione viene aggiunta alle impostazioni dell'applicazione durante la creazione della risorsa dell'app per le funzioni in Azure. Se l'app per le funzioni non dispone già di questa chiave, è possibile impostarla manualmente.

È anche possibile monitorare l'app per le funzioni usando Monitoraggio di Azure. Per altre informazioni, vedere Monitoraggio Funzioni di Azure con Monitoraggio di Azure.

Prezzi e limiti di Application Insights

È possibile provare l'integrazione di Application Insights con Funzioni di Azure gratuitamente con un limite giornaliero per la quantità di dati elaborati gratuitamente.

Se si abilita Applications Insights durante lo sviluppo, è possibile raggiungere questo limite durante i test. Quando il limite giornaliero è quasi raggiunto, Azure invia notifiche tramite il portale e messaggi di posta elettronica. Se si ignorano gli avvisi e viene raggiunto il limite, i nuovi log non verranno visualizzati nelle query di Application Insights. È quindi importante prestare attenzione al limite per evitare di perdere tempo inutilmente. Per altre informazioni, vedere Fatturazione di Application Insights.

Importante

Application Insights ha una funzionalità di campionamento che consente di evitare la produzione di un numero eccessivo di dati di telemetria sulle esecuzioni completate nei picchi di carico. Il campionamento è abilitato per impostazione predefinita. Se sembrano mancare dati, potrebbe essere semplicemente necessario regolare le impostazioni di campionamento in base allo specifico scenario di monitoraggio. Per altre informazioni, vedere Configurare il campionamento.

L'elenco completo delle funzionalità di Application Insights disponibili per le app per le funzioni è riportato in Application Insights per le funzionalità supportate di Funzioni di Azure.

Integrazione di Application Insights

In genere, si crea un'istanza di Application Insights quando si crea l'app per le funzioni. In questo caso, la chiave di strumentazione necessaria per l'integrazione è già impostata come impostazione dell'applicazione denominata APPINSIGHTS_INSTRUMENTATIONKEY. Se per qualche motivo l'app per le funzioni non ha il set di chiavi di strumentazione, è necessario abilitare l'integrazione di Application Insights.

Importante

I cloud sovrani, ad esempio Azure per enti pubblici, richiedono l'uso della stringa di connessione di Application Insights (APPLICATIONINSIGHTS_CONNECTION_STRING) anziché della chiave di strumentazione. Per altre informazioni, vedere il riferimento APPLICATIONINSIGHTS_CONNECTION_STRING.

La tabella seguente illustra in dettaglio le funzionalità supportate di Application Insights disponibili per il monitoraggio delle app per le funzioni:

Funzioni di Azure versione di runtime 1.x 2.x+
Raccolta automatica di
•Richieste
•Eccezioni
• Contatori delle prestazioni
•Dipendenze
   — HTTP
   — Bus di servizio
   — Hub eventi
   — SQL*
Funzionalità supportate
• QuickPulse/LiveMetrics
   — Canale di controllo sicuro
•Campionamento
•Battiti cardiaci
correlazione
• Bus di servizio
• Hub eventi
Configurabile
Completamente configurabile

* Per abilitare la raccolta di testo della stringa di query SQL, vedere Abilitare la raccolta di query SQL.

Raccolta di dati di telemetria

Con l'integrazione di Application Insights abilitata, i dati di telemetria vengono inviati all'istanza di Application Insights connessa. Questi dati includono i log generati dall'host di Funzioni, le tracce scritte dal codice delle funzioni e i dati sulle prestazioni.

Nota

Oltre ai dati dalle funzioni e dall'host funzioni, è anche possibile raccogliere dati dal controller di scalabilità di Funzioni.

Livelli di log e categorie

Quando si scrivono tracce dal codice dell'applicazione, è necessario assegnare un livello di log alle tracce. I livelli di log consentono di limitare la quantità di dati raccolti dalle tracce.

A ogni log viene assegnato un livello di log . Il valore è un intero che indica l'importanza relativa:

LogLevel Codice Descrizione
Trace 0 Log che contengono i messaggi più dettagliati. Questi messaggi potrebbero contenere dati dell'applicazione sensibili. Questi messaggi sono disabilitati per impostazione predefinita e non devono mai essere abilitati in un ambiente di produzione.
Debug 1 Log usati per l'analisi interattiva durante lo sviluppo. Questi log devono contenere principalmente informazioni utili per il debug e non hanno un valore a lungo termine.
Informazioni 2 Log che tengono traccia del flusso generale dell'applicazione. Questi log devono avere un valore a lungo termine.
Avviso 3 Log che evidenziano un evento anomalo o imprevisto nel flusso dell'applicazione, ma non causano altrimenti l'arresto dell'esecuzione dell'applicazione.
Errore 4 Log che evidenziano quando il flusso di esecuzione corrente viene arrestato a causa di un errore. Questi errori devono indicare un errore nell'attività corrente, non un errore a livello di applicazione.
Critico 5 Log che descrivono un arresto anomalo irreversibile di un'applicazione o del sistema o un errore irreversibile che richiede attenzione immediata.
nessuno 6 Disabilita la registrazione per la categoria specificata.

La configurazione del file host.json determina la quantità di registrazione inviata da un'app per le funzioni ad Application Insights.

Per altre informazioni sui livelli di log, vedere Configurare i livelli di log.

Assegnando elementi registrati a una categoria, si ha maggiore controllo sui dati di telemetria generati da origini specifiche nell'app per le funzioni. Le categorie semplificano l'esecuzione dell'analisi sui dati raccolti. Le tracce scritte dal codice della funzione vengono assegnate a singole categorie in base al nome della funzione. Per altre informazioni sulle categorie, vedere Configurare le categorie.

Dati di telemetria personalizzati

In C#, JavaScript e Python è possibile usare un SDK di Application Insights per scrivere dati di telemetria personalizzati.

Dipendenze

A partire dalla versione 2.x di Funzioni, Application Insights raccoglie automaticamente i dati sulle dipendenze per le associazioni che usano determinati SDK client. La traccia distribuita e il rilevamento delle dipendenze di Application Insights non sono attualmente supportati per le app C# in esecuzione in un processo di lavoro isolato. Application Insights raccoglie i dati sulle dipendenze seguenti:

  • Azure Cosmos DB
  • Hub eventi di Azure
  • Bus di servizio di Azure
  • Servizi di archiviazione di Azure (BLOB, code e tabelle)

Vengono acquisite anche le richieste HTTP e le chiamate di database che usano SqlClient . Per l'elenco completo delle dipendenze supportate da Application Insights, vedere Rilevamento automatico delle dipendenze.

Application Insights genera una mappa delle applicazioni dei dati delle dipendenze raccolti. Di seguito è riportato un esempio di mappa dell'applicazione di una funzione trigger HTTP con un'associazione di output dell'archiviazione code.

Mappa delle applicazioni con dipendenza

Le dipendenze vengono scritte a Information livello. Se si filtrano in corrispondenza Warning o superiore, i dati delle dipendenze non verranno visualizzati. Inoltre, la raccolta automatica delle dipendenze avviene in un ambito non utente. Per acquisire i dati delle dipendenze, assicurarsi che il livello sia impostato almeno Information all'esterno dell'ambito utente (Function.<YOUR_FUNCTION_NAME>.User) nell'host.

Oltre alla raccolta automatica dei dati delle dipendenze, è anche possibile usare uno degli SDK di Application Insights specifici del linguaggio per scrivere informazioni sulle dipendenze personalizzate nei log. Per un esempio di come scrivere dipendenze personalizzate, vedere uno degli esempi specifici del linguaggio seguenti:

Contatori delle prestazioni

La raccolta automatica dei contatori delle prestazioni non è supportata durante l'esecuzione in Linux.

Scrittura nei log

Il modo in cui si scrive nei log e nelle API usate dipende dal linguaggio del progetto dell'app per le funzioni.
Per altre informazioni sulla scrittura di log dalle funzioni, vedere la guida per gli sviluppatori per il linguaggio.

Analizzare i dati

Per impostazione predefinita, i dati raccolti dall'app per le funzioni vengono archiviati in Application Insights. Nella portale di Azure Application Insights offre un ampio set di visualizzazioni dei dati di telemetria. È possibile esaminare i log degli errori e eseguire query su eventi e metriche. Per altre informazioni, inclusi esempi di base su come visualizzare ed eseguire query sui dati raccolti, vedere Analizzare i dati di telemetria Funzioni di Azure in Application Insights.

Log in streaming

Durante lo sviluppo di un'applicazione, spesso si vuole vedere cosa viene scritto nei log quasi in tempo reale durante l'esecuzione in Azure.

Esistono due modi per visualizzare un flusso dei dati di log generati dalle esecuzioni delle funzioni.

  • Streaming dei log predefinito: la piattaforma del servizio app consente di visualizzare un flusso dei file di log dell'applicazione. Questo flusso equivale all'output visualizzato durante il debug delle funzioni durante lo sviluppo locale e quando si usa la scheda Test nel portale. Vengono visualizzate tutte le informazioni basate sui log. Per altre informazioni, vedere Eseguire lo streaming dei log. Questo metodo di streaming supporta solo una singola istanza e non può essere usato con un'app in esecuzione su Linux con un piano a consumo.

  • Live Metrics Stream: quando l'app per le funzioni è connessa ad Application Insights, è possibile visualizzare i dati di log e altre metriche quasi in tempo reale nel portale di Azure usando Live Metrics Stream. È opportuno usare questo metodo quando si monitorano funzioni in esecuzione su più istanze o su Linux con un piano a consumo. Questo metodo usa dati campionati.

I flussi di log possono essere visualizzati sia nel portale sia nella maggior parte degli ambienti di sviluppo locali. Per informazioni su come abilitare i flussi di log, vedere Abilitare i log di esecuzione del flusso in Funzioni di Azure.

Log di diagnostica

Application Insights consente di esportare i dati di telemetria nell'archiviazione a lungo termine o in altri servizi di analisi.

Poiché Funzioni si integra anche con Monitoraggio di Azure, è anche possibile usare le impostazioni di diagnostica per inviare dati di telemetria a varie destinazioni, inclusi i log di Monitoraggio di Azure. Per altre informazioni, vedere Monitoraggio di Funzioni di Azure con i log di Monitoraggio di Azure.

Log del controller di scalabilità

Il controller di scalabilità Funzioni di Azure monitora le istanze dell'host Funzioni di Azure in cui viene eseguita l'app. Questo controller prende decisioni su quando aggiungere o rimuovere istanze in base alle prestazioni correnti. È possibile fare in modo che il controller di scalabilità emetta log ad Application Insights per comprendere meglio le decisioni prese dal controller di scala per l'app per le funzioni. È anche possibile archiviare i log generati nell'archivio BLOB per l'analisi da un altro servizio.

Per abilitare questa funzionalità, aggiungere un'impostazione dell'applicazione denominata SCALE_CONTROLLER_LOGGING_ENABLED alle impostazioni dell'app per le funzioni. Per informazioni su come, vedere Configurare i log del controller di scalabilità.

Metriche di Monitoraggio di Azure

Oltre ai dati di telemetria basati su log raccolti da Application Insights, è anche possibile ottenere dati su come viene eseguita l'app per le funzioni dalle metriche di Monitoraggio di Azure. Per altre informazioni, vedere Monitoraggio con Monitoraggio di Azure.

Segnalare i problemi

Per segnalare un problema con l'integrazione di Application Insights in Funzioni o per inviare un suggerimento o una richiesta, creare un problema in GitHub.

Passaggi successivi

Per altre informazioni, vedere le seguenti risorse: