Condividi tramite


Monitorare le esecuzioni in Funzioni di Azure

Funzioni di Azure offre l'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, tra cui come scegliere un utilità di esportazione dei dati di telemetria.

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.

Poiché la strumentazione di Application Insights è integrata in Funzioni di Azure, è necessaria una chiave di strumentazione o stringa di connessione valida per connettere l'app per le funzioni a una risorsa di Application Insights. Questa connessione viene configurata come impostazione dell'applicazione quando si crea la risorsa dell'app per le funzioni in Azure. Se l'app per le funzioni non ha già questa impostazione, è possibile impostarla manualmente.

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

Opzioni di esportazione dei dati di telemetria

Funzioni di Azure genera dati di telemetria sia dal processo host di Funzioni che dal processo di lavoro specifico del linguaggio in cui viene eseguito il codice della funzione. È possibile scegliere come vengono esportati questi dati di telemetria:

Metodo di Esportazione Descrizione Raccomandazione
OpenTelemetry con utilità di esportazione di Monitoraggio di Azure Esporta i dati di telemetria in un formato OpenTelemetry in Application Insights e facoltativamente in qualsiasi endpoint conforme a OTLP. Consigliato per le app nuove ed esistenti.
Integrazione predefinita di Application Insights Integrazione predefinita che invia dati di telemetria ad Application Insights senza codice aggiuntivo. Buona per le esigenze di monitoraggio di base.
SDK classici di Application Insights SDK specifici per linguaggio che forniscono un controllo granulare sulla telemetria personalizzata. Legacy. Pianificare la migrazione a OpenTelemetry.

Importante

Per le applicazioni nuove ed esistenti, l'approccio consigliato consiste nell'usare Monitoraggio di Azure OpenTelemetry Exporter per inviare dati di telemetria ad Application Insights. Se attualmente si usa un SDK di Application Insights classico per personalizzare i dati di telemetria esportati, pianificare la migrazione a OpenTelemetry per il supporto a lungo termine e l'accesso alle funzionalità di osservabilità più recenti. Gli SDK classici di Application Insights non riceveranno nuovi aggiornamenti delle funzionalità. OpenTelemetry non è supportato per le app in-process C#.

L'utilità di esportazione Monitoraggio di Azure OpenTelemetry richiede una stringa di connessione per Application Insights (APPLICATIONINSIGHTS_CONNECTION_STRING) e non supporta l'uso di una chiave di strumentazione.

Per informazioni su come configurare OpenTelemetry nell'app per le funzioni, vedere Use OpenTelemetry con Funzioni 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. Azure fornisce notifiche tramite portale e posta elettronica quando si sta raggiungendo il limite giornaliero. Se si dimenticano questi avvisi e si raggiunge il limite, i nuovi log non vengono 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.

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 ad 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 4.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
• Heartbeat
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

Grazie all'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.

Note

Oltre ai dati provenienti dalle funzioni e dall'host di Funzioni, è 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 stesse. 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
Trace 0 Log che contengono i messaggi più dettagliati. Questi messaggi possono contenere dati sensibili dell'applicazione. Questi messaggi sono disabilitati per impostazione predefinita e non devono mai essere abilitati in un ambiente di produzione.
Correzione errori di programma 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 che altrimenti non causano l'arresto dell'esecuzione dell'applicazione.
Errore 4 Log che evidenziano il momento in cui il flusso di esecuzione corrente viene interrotto a causa di un errore. Tali errori dovrebbero indicare un errore nell'attività corrente e 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 il livello di registrazioni che un'app per le funzioni invia 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

Per scrivere dati di telemetria personalizzati dalle funzioni, l'approccio consigliato consiste nell'usare l'utilità di esportazione OpenTelemetry, che fornisce dati di telemetria basati su standard che possono essere inviati ad Application Insights e a qualsiasi endpoint conforme a OTLP.

È anche possibile usare SDK di Application Insights classici specifici del linguaggio per scrivere dati di telemetria personalizzati in C#, JavaScript e Python. Tuttavia, questi SDK classici sono legacy e non riceveranno nuovi aggiornamenti delle funzionalità. Pianificare la migrazione a OpenTelemetry per il supporto a lungo termine.

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. 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.

Screenshot mostra una mappa dell'applicazione con dipendenza nel portale Azure.

Le dipendenze vengono scritte a livello Information. Se si applica un filtro a Warning o oltre, i dati delle dipendenze non vengono visualizzati. Inoltre, la raccolta automatica delle dipendenze avviene in un ambito non utente. Per acquisire i dati delle dipendenze, verificare 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, è possibile scrivere informazioni sulle dipendenze personalizzate nei log. L'approccio consigliato consiste nell'usare l'utilità di esportazione OpenTelemetry per il rilevamento delle dipendenze basato su standard.

È anche possibile usare SDK di Application Insights classici specifici del linguaggio, ma sono legacy e non riceveranno nuovi aggiornamenti delle funzionalità:

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 Azure Application Insights offre un set completo di visualizzazioni dei dati di telemetria. È possibile esaminare i log degli errori ed eseguire query su eventi e metriche. Per altre informazioni, inclusi esempi di base su come visualizzare ed eseguire query sui dati raccolti, vedere Analizzare la telemetria di 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 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: 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 Enable streaming execution logs in Funzioni di Azure.To learn how to enable log streams, see Enable streaming execution logs 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 Monitor Funzioni 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 i log ad Application Insights per comprendere meglio le decisioni prese dal controller 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 farlo, 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 da Monitoraggio di Azure Metriche. Per altre informazioni, vedere Monitor Funzioni di Azure.

Segnalare i problemi

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

Passaggi successivi

Per altre informazioni, vedere le seguenti risorse: