Analizzare Funzioni di Azure telemetria in Application Insights

Funzioni di Azure si integra con Application Insights per consentire di monitorare meglio le app per le funzioni. L'Insights raccoglie i dati di telemetria generati dall'app per le funzioni, incluse le informazioni che l'app scrive nei log. L'Insights dell'applicazione viene in genere abilitata quando viene creata l'app per le funzioni. Se per l'app per le funzioni non è impostata la chiave di strumentazione, è prima necessario abilitare l'integrazionedi Application Insights .

Per impostazione predefinita, i dati raccolti dall'app per le funzioni vengono archiviati in Application Insights. Nell'portale di 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. Questo articolo fornisce esempi di base su come visualizzare ed eseguire query sui dati raccolti. Per altre informazioni sull'esplorazione dei dati dell'app per le funzioni in Application Insights, vedere Che cos'è Application Insights?.

Per altre informazioni sulla conservazione dei dati e sui potenziali costi di archiviazione, vedere Raccolta,conservazione e archiviazione dei dati in Application Insights .

Visualizzazione dei dati di telemetria nella scheda Monitoraggio

Con l'integrazione di Application Insights abilitata, è possibile visualizzare i dati di telemetria nella scheda Monitor.

  1. Nella pagina dell'app per le funzioni selezionare una funzione eseguita almeno una volta dopo la configurazione di Application Insights, quindi selezionare Monitor nel riquadro a sinistra. Selezionare Aggiorna periodicamente fino a quando non viene visualizzato l'elenco di chiamate di funzione.

    Elenco di chiamate

    Nota

    La visualizzazione dell'elenco può richiedere fino a 5 minuti, il tempo necessario al client di telemetria di configurare in batch i dati da trasmettere al server. Questo ritardo non si applica al servizio Live Metrics Stream, che si connette all'host di Funzioni mentre si carica la pagina e, quindi, i log vengono trasmessi direttamente alla pagina.

  2. Per visualizzare i log per una chiamata di funzione particolare, selezionare il collegamento alla colonna Data (UTC) per la chiamata. L'output di registrazione per tale chiamata viene visualizzato in una nuova pagina.

    Dettagli della chiamata

  3. Scegliere Esegui in Application Insights per visualizzare l'origine della query che recupera i dati di log di Monitoraggio di Azure nel log di Azure. Se è la prima volta che si usa Azure Log Analytics nella propria sottoscrizione, viene chiesto di abilitarlo.

  4. Dopo aver abilitato Log Analytics, viene visualizzata la query seguente. È possibile vedere che i risultati della query sono limitati agli ultimi 30 giorni ( ) e che i risultati non mostrano più di where timestamp > ago(30d) 20 righe ( take 20 ). Al contrario, l'elenco dei dettagli delle chiamate alla funzione è relativo agli ultimi 30 giorni senza alcun limite.

    Elenco di chiamate di analisi di Application Insights

Per altre informazioni, vedere Eseguire query sui dati di telemetria più avanti in questo articolo.

Visualizzare i dati di telemetria in Application Insights

Per aprire Application Insights da un'app per le funzioni nel portale di Azure:

  1. Passare all'app per le funzioni nel portale.

  2. Selezionare Applicazione Insights sotto Impostazioni nella pagina a sinistra.

  3. Se è la prima volta che si usa Application Insights con la sottoscrizione, verrà richiesto di abilitarla. A tale scopo, selezionare Attiva applicazione Insights e quindi selezionare Applica nella pagina successiva.

Aprire Application Insights dalla pagina di panoramica dell'app per le funzioni

Per informazioni su come usare Application Insights, vedere la documentazione su Application Insights. Questa sezione mostra alcuni esempi su come visualizzare i dati in Application Insights. Se si ha già familiarità con Application Insights, è possibile passare direttamente alle sezioni sulla configurazione e la personalizzazione dei dati di telemetria.

Scheda di panoramica di Application Insights

Le aree di Application Insights seguenti possono essere utili durante la valutazione del comportamento, delle prestazioni e degli errori delle funzioni:

Analisi dei problemi Descrizione
Errori È possibile creare grafici e avvisi in base agli errori di funzione e alle eccezioni del server. Il nome dell'operazione corrisponde al nome della funzione. Gli errori nelle dipendenze non vengono mostrati a meno che non si implementino i dati di telemetria personalizzati per le dipendenze.
Prestazioni È possibile analizzare i problemi di prestazioni visualizzando l'utilizzo delle risorse e la velocità effettiva per le Istanze del ruolo del cloud. Questi dati sulle prestazioni possono essere utili per scenari di debug in cui le funzioni impedendo le risorse sottostanti.
Metriche È possibile creare grafici e avvisi basati sulle metriche, che includono il numero di chiamate di funzione, il tempo di esecuzione e le percentuali di riuscita.
Metriche in tempo reale Visualizzare i dati delle metriche così come vengono creati quasi in tempo reale.

Query sui dati di telemetria

Analytics di Application Insights consente di accedere a tutti i dati di telemetria sotto forma di tabelle in un database. Analytics offre un linguaggio di query per l'estrazione, la manipolazione e la visualizzazione dei dati.

Scegliere Log per esplorare o eseguire una query in merito agli eventi registrati.

Esempio di Analytics

Questo è un esempio che mostra la distribuzione delle richieste per ruolo di lavoro negli ultimi 30 minuti.

requests
| where timestamp > ago(30m) 
| summarize count() by cloud_RoleInstance, bin(timestamp, 1m)
| render timechart

Le tabelle disponibili vengono mostrate nella scheda Schema a sinistra. Nelle tabelle seguenti è possibile trovare i dati generati dalle chiamate alla funzione:

Tabella Descrizione
traces Log creati dal runtime, dal controller di scalabilità e dalle tracce dal codice della funzione.
requests una richiesta per ogni chiamata alla funzione.
exceptions tutte le eccezioni generate dal runtime.
customMetrics numero di chiamate con esito positivo e negativo, percentuale di riuscita, durata.
customEvents eventi rilevati dal runtime, ad esempio: richieste HTTP che attivano una funzione.
performanceCounters informazioni sulle prestazioni dei server su cui sono in esecuzione le funzioni.

Le altre tabelle sono riservate ai test di disponibilità e ai dati di telemetria del browser e del client. È possibile implementare i dati di telemetria personalizzati per aggiungerne altri.

All'interno di ogni tabella alcuni dati specifici per Funzioni si trovano nel campo customDimensions. Ad esempio, la query seguente recupera tutte le tracce con livello di registrazione Error.

traces 
| where customDimensions.LogLevel == "Error"

Il runtime fornisce i campi customDimensions.LogLevel e customDimensions.Category. È possibile specificare campi aggiuntivi nei log in cui si scrive il codice funzione. Per un esempio in C#, vedere Registrazione strutturata nella Guida per gli sviluppatori della libreria di classi .NET.

Log del controller di scalabilità di query

Questa funzionalità è disponibile in anteprima.

Dopo aver abilitato sia la registrazione del controller di scalabilità che l'integrazione di Application Insights, è possibile usare la ricerca log di Application Insights per eseguire una query per i log del controller di scalabilità generati. I log del controller di scalabilità vengono traces salvati nella raccolta nella categoria ScaleControllerLogs.

La query seguente può essere usata per cercare tutti i log del controller di scalabilità per l'app per le funzioni corrente entro il periodo di tempo specificato:

traces 
| extend CustomDimensions = todynamic(tostring(customDimensions))
| where CustomDimensions.Category == "ScaleControllerLogs"

La query seguente si espande sulla query precedente per mostrare come ottenere solo i log che indicano una modifica della scala:

traces 
| extend CustomDimensions = todynamic(tostring(customDimensions))
| where CustomDimensions.Category == "ScaleControllerLogs"
| where message == "Instance count changed"
| extend Reason = CustomDimensions.Reason
| extend PreviousInstanceCount = CustomDimensions.PreviousInstanceCount
| extend NewInstanceCount = CustomDimensions.CurrentInstanceCount

Metriche specifiche del piano a consumo

Quando si esegue in un piano a consumo,il costo di esecuzione di una singola funzione viene misurato in GB-secondi. Il costo di esecuzione viene calcolato combinando l'utilizzo della memoria con il tempo di esecuzione. Per altre informazioni, vedere Stima dei costi del piano a consumo.

Le query di telemetria seguenti sono specifiche delle metriche che influiscono sul costo dell'esecuzione di funzioni nel piano a consumo.

Determinare l'utilizzo della memoria

In monitoraggio selezionare log (Analytics), quindi copiare la query di telemetria seguente e incollarla nella finestra di query e selezionare Esegui. Questa query restituisce l'utilizzo totale della memoria per ogni tempo campione.

performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value

I risultati sono simili all'esempio seguente:

timestamp [ UTC] name Valore
9/12/2019, 1:05:14 . 947 am Private Bytes 209.932.288
9/12/2019, 1:06:14 . 994 am Private Bytes 212.189.184
9/12/2019, 1:06:30 . 010 Private Bytes 231.714.816
9/12/2019, 1:07:15 . 040 am Private Bytes 210.591.744
9/12/2019, 1:12:16 . 285 am Private Bytes 216.285.184
9/12/2019, 1:12:31 . 376 am Private Bytes 235.806.720

Determinazione della durata

Monitoraggio di Azure tiene traccia delle metriche a livello di risorsa, che per le funzioni è l'app per le funzioni. Application Insights integrazione genera metriche per ogni singola funzione. Di seguito è riportato un esempio di query di analisi per ottenere la durata media di una funzione:

customMetrics
| where name contains "Duration"
| extend averageDuration = valueSum / valueCount
| summarize averageDurationMilliseconds=avg(averageDuration) by name
name averageDurationMilliseconds
AvgDurationMs QueueTrigger 16 . 087
MaxDurationMs QueueTrigger 90 . 249
MinDurationMs QueueTrigger 8 . 522

Passaggi successivi

Altre informazioni sul monitoraggio delle Funzioni di Azure: