Monitorare Funzioni di AzureMonitor Azure Functions

Funzioni di Azure offre l'integrazione predefinita con Azure Application Insights per il monitoraggio delle funzioni.Azure Functions offers built-in integration with Azure Application Insights to monitor functions. Questo articolo fornisce una panoramica delle funzionalità di monitoraggio fornite da Azure per il monitoraggio di funzioni di Azure.This article provides an overview of the monitoring capabilities provided by Azure for monitoring Azure Functions.

Application Insights raccoglie i dati di log, delle prestazioni e degli errori.Application Insights collects log, performance, and error data. Grazie al rilevamento automatico delle anomalie delle prestazioni e alla presenza di potenti strumenti di analisi, è possibile diagnosticare più facilmente i problemi e comprendere meglio il modo in cui le funzioni vengono utilizzate.By automatically detecting performance anomalies and featuring powerful analytics tools, you can more easily diagnose issues and better understand how your functions are used. Questi strumenti sono progettati per contribuire a migliorare continuamente le prestazioni e l'usabilità delle funzioni.These tools are designed to help you continuously improve performance and usability of your functions. È anche possibile usare Application Insights durante lo sviluppo di un progetto locale di app per le funzioni.You can even use Application Insights during local function app project development. Per altre informazioni, vedere Informazioni su Application Insights.For more information, see What is Application Insights?.

Poiché Application Insights strumentazione è incorporata in funzioni di Azure, è necessaria una chiave di strumentazione valida per connettere l'app per le funzioni a una risorsa Application Insights.As Application Insights instrumentation is built into Azure Functions, you need a valid instrumentation key to connect your function app to an Application Insights resource. La chiave di strumentazione viene aggiunta alle impostazioni dell'applicazione durante la creazione della risorsa dell'app per le funzioni in Azure.The instrumentation key is added to your application settings as you create your function app resource in Azure. Se l'app per le funzioni non dispone già di questa chiave, è possibile impostarla manualmente.If your function app doesn't already have this key, you can set it manually.

Prezzi e limiti di Application InsightsApplication Insights pricing and limits

È possibile provare gratuitamente Application Insights integrazione con funzioni di Azure con un limite giornaliero per la quantità di dati elaborati gratuitamente.You can try out Application Insights integration with Azure Functions for free featuring a daily limit to how much data is processed for free.

Se si Abilita Application Insights durante lo sviluppo, è possibile raggiungere questo limite durante i test.If you enable Applications Insights during development, you might hit this limit during testing. Quando il limite giornaliero è quasi raggiunto, Azure invia notifiche tramite il portale e messaggi di posta elettronica.Azure provides portal and email notifications when you're approaching your daily limit. Se si ignorano gli avvisi e viene raggiunto il limite, i nuovi log non verranno visualizzati nelle query di Application Insights.If you miss those alerts and hit the limit, new logs won't appear in Application Insights queries. È quindi importante prestare attenzione al limite per evitare di perdere tempo inutilmente.Be aware of the limit to avoid unnecessary troubleshooting time. Per altre informazioni, vedere Gestire volumi di dati e prezzi in Application Insights.For more information, see Manage pricing and data volume in 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.Application Insights has a sampling feature that can protect you from producing too much telemetry data on completed executions at times of peak load. Il campionamento è abilitato per impostazione predefinita.Sampling is enabled by default. Se sembrano mancare dati, potrebbe essere semplicemente necessario regolare le impostazioni di campionamento in base allo specifico scenario di monitoraggio.If you appear to be missing data, you might need to adjust the sampling settings to fit your particular monitoring scenario. Per altre informazioni, vedere Configurare il campionamento.To learn more, see Configure sampling.

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.The full list of Application Insights features available to your function app is detailed in Application Insights for Azure Functions supported features.

Integrazione di Application InsightsApplication Insights integration

In genere, si crea un'istanza di Application Insights quando si crea l'app per le funzioni.Typically, you create an Application Insights instance when you create your function app. In questo caso, la chiave di strumentazione necessaria per l'integrazione è già impostata come impostazione dell'applicazione denominata APPINSIGHTS_INSTRUMENTATIONKEY.In this case, the instrumentation key required for the integration is already set as an application setting named APPINSIGHTS_INSTRUMENTATIONKEY. Se per qualche motivo l'app per le funzioni non ha il set di chiavi di strumentazione, è necessario abilitare l'integrazione Application Insights.If for some reason your function app doesn't have the instrumentation key set, you need to enable Application Insights integration.

Raccolta di dati di telemetriaCollecting telemetry data

Con Application Insights integrazione abilitata, i dati di telemetria vengono inviati all'istanza di Application Insights connessa.With Application Insights integration enabled, telemetry data is sent to your connected Application Insights instance. Questi dati includono i log generati dall'host funzioni, le tracce scritte dal codice delle funzioni e i dati sulle prestazioni.This data includes logs generated by the Functions host, traces written from your functions code, and performance data.

Nota

Oltre ai dati delle funzioni e dell'host di funzioni, è anche possibile raccogliere dati dal controller di scalabilità delle funzioni.In addition to data from your functions and the Functions host, you can also collect data from the Functions scale controller.

Livelli e categorie di logLog levels and categories

Quando si scrivono tracce dal codice dell'applicazione, è necessario assegnare un livello di registrazione alle tracce.When you write traces from your application code, you should assign a log level to the traces. I livelli di registrazione consentono di limitare la quantità di dati raccolti dalle tracce.Log levels provide a way for you to limit the amount of data that is collected from your traces.

A ogni log viene assegnato un livello di registrazione .A log level is assigned to every log. Il valore è un numero intero che indica l'importanza relativa:The value is an integer that indicates relative importance:

LogLevelLogLevel CodiceCode DescrizioneDescription
TraceTrace 00 Log che contengono i messaggi più dettagliati.Logs that contain the most detailed messages. Questi messaggi possono contenere dati sensibili dell'applicazione.These messages may contain sensitive application data. Questi messaggi sono disabilitati per impostazione predefinita e non devono mai essere abilitati in un ambiente di produzione.These messages are disabled by default and should never be enabled in a production environment.
DebugDebug 11 Log usati per l'analisi interattiva durante lo sviluppo.Logs that are used for interactive investigation during development. Questi log devono contenere principalmente informazioni utili per il debug e non hanno un valore a lungo termine.These logs should primarily contain information useful for debugging and have no long-term value.
InformazioniInformation 22 Log che tengono traccia del flusso generale dell'applicazione.Logs that track the general flow of the application. Questi log devono avere un valore a lungo termine.These logs should have long-term value.
AvvisoWarning 33 Log che evidenziano un evento anomalo o imprevisto nel flusso dell'applicazione, ma non provocano altrimenti l'arresto dell'esecuzione dell'applicazione.Logs that highlight an abnormal or unexpected event in the application flow, but don't otherwise cause the application execution to stop.
ErroreError 44 Log che evidenziano il momento in cui il flusso di esecuzione corrente viene arrestato a causa di un errore.Logs that highlight when the current flow of execution is stopped because of a failure. Questi errori dovrebbero indicare un errore nell'attività corrente, non un errore a livello di applicazione.These errors should indicate a failure in the current activity, not an application-wide failure.
CriticoCritical 55 Log che descrivono un arresto anomalo irreversibile di un'applicazione o del sistema o un errore irreversibile che richiede attenzione immediata.Logs that describe an unrecoverable application or system crash, or a catastrophic failure that requires immediate attention.
nessunoNone 66 Disabilita la registrazione per la categoria specificata.Disables logging for the specified category.

Il host.js di configurazione dei file determina la quantità di registrazione inviata da un'app per le funzioni al Application Insights.The host.json file configuration determines how much logging a functions app sends to Application Insights.

Per altre informazioni sui livelli di registrazione, vedere configurare i livelli di registrazione.To learn more about log levels, see Configure log levels.

Assegnando gli elementi registrati a una categoria, si ha maggiore controllo sui dati di telemetria generati da origini specifiche nell'app per le funzioni.By assigning logged items to a category, you have more control over telemetry generated from specific sources in your function app. Le categorie semplificano l'esecuzione di analisi sui dati raccolti.Categories make it easier to run analytics over collected data. Le tracce scritte dal codice della funzione vengono assegnate a singole categorie in base al nome della funzione.Traces written from your function code are assigned to individual categories based on the function name. Per altre informazioni sulle categorie, vedere configurare le categorie.To learn more about categories, see Configure categories.

Dati di telemetria personalizzatiCustom telemetry data

In C# e JavaScriptè possibile usare un SDK Application Insights per scrivere dati di telemetria personalizzati.In C# and JavaScript, you can use an Application Insights SDK to write custom telemetry data.

DependenciesDependencies

A partire dalla versione 2. x di funzioni, il runtime raccoglie automaticamente i dati sulle dipendenze per le associazioni che usano alcuni SDK client.Starting with version 2.x of Functions, the runtime automatically collects data on dependencies for bindings that use certain client SDKs. Application Insights raccoglie i dati sulle dipendenze seguenti:Application Insights collects data on the following dependencies:

  • Azure Cosmos DBAzure Cosmos DB
  • Hub eventi di AzureAzure Event Hubs
  • Bus di servizio di AzureAzure Service Bus
  • Servizi di archiviazione di Azure (BLOB, code e tabelle)Azure Storage services (Blob, Queue, and Table)

Vengono acquisite anche le richieste HTTP e le chiamate di database usando SqlClient .HTTP requests and database calls using SqlClient are also captured. Per l'elenco completo delle dipendenze supportate da Application Insights, vedere dipendenze rilevate automaticamente.For the complete list of dependencies supported by Application Insights, see automatically tracked dependencies.

Application Insights genera una mappa delle applicazioni dei dati di dipendenza raccolti.Application Insights generates an application map of collected dependency data. Di seguito è riportato un esempio di una mappa delle applicazioni di una funzione trigger HTTP con un'associazione di output di archiviazione di Accodamento.The following is an example of an application map of an HTTP trigger function with a Queue storage output binding.

Mappa delle applicazioni con dipendenza

Le dipendenze vengono scritte a Information livello.Dependencies are written at the Information level. Se si applica un filtro a Warning o versione successiva, i dati delle dipendenze non verranno visualizzati.If you filter at Warning or above, you won't see the dependency data. Inoltre, la raccolta automatica delle dipendenze si verifica in un ambito non utente.Also, automatic collection of dependencies happens at a non-user scope. Per acquisire i dati delle dipendenze, verificare che il livello sia impostato almeno al di Information fuori dell'ambito utente ( Function.<YOUR_FUNCTION_NAME>.User ) nell'host.To capture dependency data, make sure the level is set to at least Information outside the user scope (Function.<YOUR_FUNCTION_NAME>.User) in your host.

Oltre alla raccolta automatica dei dati sulle dipendenze, è anche possibile usare uno degli SDK Application Insights specifici del linguaggio per scrivere le informazioni sulle dipendenze personalizzate nei log.In addition to automatic dependency data collection, you can also use one of the language-specific Application Insights SDKs to write custom dependency information to the logs. Per un esempio di come scrivere dipendenze personalizzate, vedere uno degli esempi specifici del linguaggio seguenti:For an example how to write custom dependencies, see one of the following language-specific examples:

Scrittura nei logWriting to logs

La modalità di scrittura nei log e le API usate dipendono dalla lingua del progetto dell'app per le funzioni.The way that you write to logs and the APIs you use depend on the language of your function app project.
Per ulteriori informazioni sulla scrittura dei log dalle funzioni, vedere la guida per gli sviluppatori della lingua.See the developer guide for your language to learn more about writing logs from your functions.

Log in streamingStreaming Logs

Durante lo sviluppo di un'applicazione, è spesso necessario vedere cosa viene scritto nei log quasi in tempo reale durante l'esecuzione in Azure.While developing an application, you often want to see what's being written to the logs in near real time when running in Azure.

Esistono due modi per visualizzare un flusso dei dati di log generati dalle esecuzioni di funzioni.There are two ways to view a stream of the log data being generated by your function executions.

  • Streaming dei log predefinito: la piattaforma del servizio app consente di visualizzare un flusso dei file di log dell'applicazione.Built-in log streaming: the App Service platform lets you view a stream of your application log files. Questo flusso è equivalente all'output visualizzato quando si esegue il debug delle funzioni durante lo sviluppo locale e quando si usa la scheda test nel portale.This stream is equivalent to the output seen when you debug your functions during local development and when you use the Test tab in the portal. Vengono visualizzate tutte le informazioni basate sui log.All log-based information is displayed. Per altre informazioni, vedere Eseguire lo streaming dei log.For more information, see Stream logs. 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.This streaming method supports only a single instance, and can't be used with an app running on Linux in a Consumption plan.

  • Live Metrics Stream: quando l'app per le funzioni è connessa a Application Insights, è possibile visualizzare i dati di log e altre metriche quasi in tempo reale nel portale di Azure usando Live Metrics Stream.Live Metrics Stream: when your function app is connected to Application Insights, you can view log data and other metrics in near real time in the Azure portal using Live Metrics Stream. È opportuno usare questo metodo quando si monitorano funzioni in esecuzione su più istanze o su Linux con un piano a consumo.Use this method when monitoring functions running on multiple-instances or on Linux in a Consumption plan. Questo metodo usa dati campionati.This method uses sampled data.

I flussi di log possono essere visualizzati sia nel portale sia nella maggior parte degli ambienti di sviluppo locali.Log streams can be viewed both in the portal and in most local development environments. Per informazioni su come abilitare i flussi di log, vedere abilitare i log di esecuzione del flusso in funzioni di Azure.To learn how to enable log streams, see Enable streaming execution logs in Azure Functions.

Log di diagnosticaDiagnostic logs

Questa funzionalità è disponibile in anteprima.This feature is in preview.

Application Insights consente di esportare i dati di telemetria nell'archiviazione a lungo termine o in altri Analysis Services.Application Insights lets you export telemetry data to long-term storage or other analysis services.

Poiché le funzioni si integrano anche con monitoraggio di Azure, è anche possibile usare le impostazioni di diagnostica per inviare i dati di telemetria a diverse destinazioni, inclusi i log di monitoraggio di Azure.Because Functions also integrates with Azure Monitor, you can also use diagnostic settings to send telemetry data to various destinations, including Azure Monitor logs. Per altre informazioni, vedere Monitoraggio di Funzioni di Azure con i log di Monitoraggio di Azure.To learn more, see Monitoring Azure Functions with Azure Monitor Logs.

Ridimensiona log del controllerScale controller logs

Questa funzionalità è disponibile in anteprima.This feature is in preview.

Il controller di scalabilità di funzioni di Azure monitora le istanze dell'host di funzioni di Azure in cui viene eseguita l'app.The Azure Functions scale controller monitors instances of the Azure Functions host on which your app runs. Questo controller prende le decisioni relative al momento in cui aggiungere o rimuovere le istanze in base alle prestazioni correnti.This controller makes decisions about when to add or remove instances based on current performance. È possibile fare in modo che il controller di scalabilità crei log per Application Insights per comprendere meglio le decisioni prese dal controller di scalabilità per l'app per le funzioni.You can have the scale controller emit logs to Application Insights to better understand the decisions the scale controller is making for your function app. È anche possibile archiviare i log generati nell'archivio BLOB per l'analisi da parte di un altro servizio.You can also store the generated logs in Blob storage for analysis by another service.

Per abilitare questa funzionalità, è necessario aggiungere un'impostazione dell'applicazione denominata SCALE_CONTROLLER_LOGGING_ENABLED per le impostazioni dell'app per le funzioni.To enable this feature, you add an application setting named SCALE_CONTROLLER_LOGGING_ENABLED to your function app settings. Per informazioni, vedere configurare i log del controller di scalabilità.To learn how, see Configure scale controller logs.

Segnalare i problemiReport issues

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.To report an issue with Application Insights integration in Functions, or to make a suggestion or request, create an issue in GitHub.

Passaggi successiviNext steps

Per altre informazioni, vedere le seguenti risorse:For more information, see the following resources: