Monitorare le esecuzioni in Funzioni di Azure
Funzioni di Azure offre l'integrazione predefinita con Azure Application Insights per il monitoraggio delle esecuzioni di funzioni. Questo articolo offre una panoramica delle funzionalità di monitoraggio fornite da Azure per il monitoraggio di Funzioni di Azure.
Application Insights raccoglie i dati di log, prestazioni ed errori. Rilevando automaticamente anomalie delle prestazioni e grazie a 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 chiave di strumentazione di Application Insights è già integrata 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 di Funzioni di Azure con Monitoraggio di Azure.
Prezzi e limiti di Application Insights
È possibile provare gratuitamente l'integrazione di Application Insights con Funzioni di Azure con un limite giornaliero alla quantità di dati elaborati gratuitamente.
Se si abilita Application 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 con 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à configurata come impostazione dell'applicazione denominata APPINSIGHTS_INSTRUMENTATIONKEY
. Se per qualche motivo l'app per le funzioni non dispone del 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:
Versione del runtime di Funzioni di Azure | 1.x | 2.x+ |
---|---|---|
Raccolta automatica di | ||
• Richieste | ✓ | ✓ |
• Eccezioni | ✓ | ✓ |
• Contatori delle prestazioni | ✓ | ✓ |
• Dipendenze | ||
— HTTP | ✓ | |
— Bus di servizio | ✓ | |
— Hub eventi | ✓ | |
— SQL* | ✓ | |
Funzionalità supportate | ||
• QuickPulse/LiveMetrics | Sì | Sì |
— Canale di controllo sicuro | Sì | |
• Campionamento | Sì | Sì |
• Heartbeat | Sì | |
Correlazione | ||
• Bus di servizio | Sì | |
• Hub eventi | Sì | |
Configurabile | ||
•Completamente configurabile | Sì |
* 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 delle funzioni e dell'host Funzioni, è anche possibile raccogliere dati dal controller di scalabilità di Funzioni.
Livelli e categorie di log
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 è assegnato un livello di log. Il valore è un numero intero che indica l'importanza relativa:
LogLevel | Codice | Descrizione |
---|---|---|
Traccia | 0 | Log che contengono i messaggi più dettagliati. Questi messaggi potrebbero contenere dati sensibili dell'applicazione. 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 in altro modo l'arresto dell'esecuzione dell'applicazione. |
Error | 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. |
None | 6 | Disabilita la registrazione per la categoria specificata. |
La configurazione del file host.json determina l’entità della registrazione inviata ad Application Insights da un'app per le funzioni.
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#, JavaScripte Pythonè possibile usare un Application Insights SDK 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 Dipendenze rilevate automaticamente.
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.
Le dipendenze vengono scritte a livello Information
. Se si filtra a livello di Warning
o superiore, non verranno visualizzati i dati delle dipendenze. 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 su come scrivere dipendenze personalizzate, vedere uno degli esempi specifici del linguaggio seguenti:
- Registrare dati di telemetria personalizzati nelle funzioni C#
- Registrare dati di telemetria personalizzati nelle funzioni JavaScript
- Registrare dati di telemetria personalizzati nelle funzioni Python
Contatori delle prestazioni
La raccolta automatica di 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.
Analisi dei dati
Per impostazione predefinita, i dati raccolti dall'app per le funzioni vengono archiviati in Application Insights. Nel portale di Azure, Application Insights offre un set completo 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 di Funzioni di Azure in Application Insights.
Log in streaming
Durante lo sviluppo di un'applicazione, è spesso necessario visualizzare il contenuto dei log quasi in tempo reale mentre è in esecuzione Azure.
Esistono due modi per visualizzare il 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 quando si esegue il debug delle funzioni durante lo sviluppo locale o 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: se 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 di streaming 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à di Funzioni di Azure monitora le istanze dell'host di 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 i log ad Application Insights per comprendere meglio le decisioni prese dal controller di scalabilità 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 sui 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 ulteriori informazioni, vedi le seguenti risorse: