Metriche basate su log e metriche preaggregate in Application Insights

Nota

La documentazione seguente si basa sull'API classica di Application Insights. Il piano a lungo termine per Application Insights prevede la raccolta di dati con OpenTelemetry. Per altre informazioni, vedere Abilitare OpenTelemetry di Monitoraggio di Azure per le applicazioni .NET, Node.js, Python e Java oltre che la Roadmap OpenTelemetry. Le indicazioni sulla migrazione sono disponibili per .NET, Node.js e Python.

Questo articolo spiega la differenza tra le metriche "tradizionali" di Application Insights basate su log e le metriche preaggregate. Entrambi i tipi di metriche sono disponibili per gli utenti di Application Insights. Ciascun tipo offre un valore univoco per il monitoraggio dell'integrità, della diagnostica e dell'analisi dell'applicazione. Gli sviluppatori che instrumentano le applicazioni possono decidere quale tipo di metrica è più adatto a uno scenario specifico. Le decisioni sono basate sulle dimensioni dell'applicazione, sul volume previsto di dati di telemetria e sui requisiti aziendali per la precisione e gli avvisi delle metriche.

Metriche basate su log

In passato, il modello di dati di telemetria per il monitoraggio delle applicazioni in Application Insights era unicamente basato su un numero ridotto di tipi predefiniti di eventi, tra cui richieste, eccezioni, chiamate di dipendenza e visualizzazioni di pagina. Gli sviluppatori possono usare l'SDK per generare questi eventi manualmente scrivendo codice che richiama in modo esplicito l'SDK. Oppure possono basarsi sulla raccolta automatica di eventi dalla strumentazione automatica. In entrambi i casi, il back-end di Application Insights archivia tutti gli eventi raccolti come log. I riquadri di Application Insights nel portale di Azure fungono da strumento analitico e diagnostico per la visualizzazione dei dati basati su eventi dai log.

L'uso di log per mantenere un set completo di eventi può offrire eccezionali vantaggi in termini di analisi e diagnostica. Ad esempio, è possibile ottenere un conteggio esatto delle richieste a un URL specifico con il numero di utenti distinti che hanno effettuato queste chiamate. In alternativa, è possibile ottenere tracce di diagnostica dettagliate, incluse le eccezioni e le chiamate di dipendenza per qualsiasi sessione utente. Disporre di questo tipo di informazioni può migliorare la visibilità sull'integrità e sull'utilizzo dell'applicazione. Può anche ridurre il tempo necessario per diagnosticare i problemi con un'app.

Allo stesso tempo, la raccolta di un set completo di eventi può essere poco pratica (o persino impossibile) per le applicazioni che generano una grande quantità di dati di telemetria. Per i casi in cui il volume di eventi è troppo elevato, Application Insights implementa diverse tecniche di riduzione dei volumi di dati di telemetria, che riducono il numero di eventi raccolti e archiviati. Queste tecniche includono campionamento e filtro. Sfortunatamente, riducendo il numero di eventi archiviati si riduce anche l'accuratezza delle metriche che, in background, devono eseguire aggregazioni in fase di query degli eventi archiviati nei log.

Nota

In Application Insights le metriche basate sull'aggregazione in fase di query di eventi e misurazioni archiviati in log sono denominate metriche basate su log. Queste metriche in genere hanno molte dimensioni dalle proprietà dell'evento, rendendole superiori per l'analisi. L'accuratezza di queste metriche è influenzata negativamente dal campionamento e dal filtro.

Metriche preaggregate

Oltre alle metriche basate su log, verso la fine del 2018 il team di Application Insights ha reso disponibile un'anteprima pubblica di un tipo di metriche che sono archiviate in un repository specializzato ottimizzato per le serie temporali. Le nuove metriche non vengono più mantenute come singoli eventi con un numero elevato di proprietà. Al contrario, vengono archiviate come serie temporali preaggregate e solo con le dimensioni chiave. Questa modifica rende le nuove metriche superiori in fase di query. Il recupero dei dati avviene più velocemente e richiede meno potenza di calcolo. Di conseguenza, sono possibili nuovi scenari, come la generazione di avvisi praticamente in tempo reale in base alle dimensioni delle metriche e dashboard più reattivi.

Importante

Le metriche basate su log e quelle preaggregate coesistono in Azure Application Insights. Per distinguerle, nell'esperienza utente di Application Insights le metriche preaggregate sono ora denominate metriche standard. Le metriche tradizionali dagli eventi sono state rinominate in metriche basate su log.

Gli SDK più recenti (Application Insights 2.7 SDK o versioni successive per .NET) preaggregano le metriche durante la raccolta. Questo processo si applica alle metriche standard inviate per impostazione predefinita, quindi l'accuratezza non è influenzata dal campionamento o dal filtro. Si applica anche alle metriche personalizzate inviate usando GetMetric, con un inserimento dei dati ridotto e un costo inferiore.

Per gli SDK che non implementano la preaggregazione, ovvero le versioni meno recenti di Application Insights SDK o per la strumentazione del browser, il back-end di Application Insights popola ancora le nuove metriche aggregando gli eventi ricevuti dall'endpoint di raccolta degli eventi di Application Insights. Anche se non è possibile trarre vantaggio dal volume ridotto dei dati trasmessi in rete, è comunque possibile usare le metriche preaggregate e ottenere prestazioni migliori e supporto per la generazione di avvisi dimensionali praticamente in tempo reale con gli SDK che non preaggregano le metriche durante la raccolta.

L'endpoint di raccolta preaggrega gli eventi prima del campionamento per inserimento. Per questo motivo, il campionamento per inserimento non influisce mai sull'accuratezza delle metriche preaggregate, indipendentemente dalla versione dell'SDK usata con l'applicazione.

Tabella delle metriche preaggregate supportate dall'SDK

SDK di produzione correnti Metriche standard (preaggregazione SDK) Metriche personalizzate (senza preaggregazione SDK) Metriche personalizzate (con preaggregazione SDK)
.NET Core e .NET Framework Supportate (V2.13.1+) Supportate tramite TrackMetric Supportate (V2.7.2+) tramite GetMetric
Java Non supportato Supportate tramite TrackMetric Non supportato
Node.js Supportate (V2.0.0+) Supportate tramite TrackMetric Non supportato
Python Non supportato Supportato Supporto parziale tramite OpenCensus.stats

Nota

L'implementazione delle metriche per Python tramite OpenCensus.stats è diversa da GetMetric. Per altre informazioni, vedere la documentazione di Python sulle metriche.

Tabella delle metriche preaggregate supportate senza codice

SDK di produzione correnti Metriche standard (preaggregazione SDK) Metriche personalizzate (senza preaggregazione SDK) Metriche personalizzate (con preaggregazione SDK)
ASP.NET Supportato 1 Non supportato Non supportato
ASP.NET Core Supportato 2 Non supportato Non supportato
Java Non supportato Non supportato Supportata
Node.js Non supportato Non supportato Non supportato
  1. La strumentazione automatica di ASP.NET in macchine virtuali/set di scalabilità di macchine virtuali e locale genera metriche standard senza dimensioni. Lo stesso vale per Servizio app di Azure, ma il livello di raccolta deve essere impostato su consigliato. L'SDK è necessario per tutte le dimensioni.
  2. La strumentazione automatica di ASP.NET Core in Servizio app genera metriche standard senza dimensioni. L'SDK è necessario per tutte le dimensioni.

Usare la preaggregazione con metriche personalizzate di Application Insights

È possibile usare la preaggregazione con metriche personalizzate. I due vantaggi principali sono:

  • Configurare e generare avvisi per una dimensione di una metrica personalizzata
  • Ridurre il volume di dati inviati dall'SDK all'endpoint di raccolta di Application Insights

Esistono diversi modi per l'invio di metriche personalizzate da Application Insights SDK. Se la versione dell'SDK offre GetMetric e TrackValue, questi metodi rappresentano il modo preferito per inviare metriche personalizzate. In questo caso, la preaggregazione avviene all'interno dell'SDK. Questo approccio riduce il volume di dati archiviati in Azure e anche il volume di dati trasmessi dall'SDK ad Application Insights. In caso contrario, usare il metodo trackMetric, che preaggrega gli eventi delle metriche durante l'inserimento dati.

Dimensioni delle metriche personalizzate e preaggregazione

Tutte le metriche inviate tramite chiamate API OpenTelemetry, trackMetric o GetMetric e TrackValue vengono automaticamente archiviate sia negli archivi di log che negli archivi di metriche. Queste metriche sono disponibili nella tabella customMetrics in Application Insights e in Esplora metriche nello spazio dei nomi delle metriche personalizzate denominato "azure.applicationinsights". Sebbene la versione basata su log della metrica personalizzata conservi sempre tutte le dimensioni, la versione preaggregata della metrica viene archiviata senza dimensioni per impostazione predefinita. La conservazione delle dimensioni delle metriche personalizzate è una funzionalità di anteprima che può essere attivata dalla scheda Utilizzo e costi stimati selezionando Con dimensioni in Inviare metriche personalizzate all'archivio metriche di Azure.

Screenshot che mostra l'utilizzo e i costi stimati.

Obiettivi di vendita

Le metriche preaggregate vengono archiviate come serie temporali in Monitoraggio di Azure. Si applicano le quote di Monitoraggio di Azure per le metriche personalizzate.

Nota

Il superamento della quota potrebbe avere conseguenze impreviste. Monitoraggio di Azure potrebbe diventare inaffidabile nella sottoscrizione o nell'area. Per informazioni su come evitare di superare la quota, vedere Limitazioni e considerazioni sulla progettazione.

Perché la raccolta di dimensioni di metriche personalizzate è disattivata per impostazione predefinita?

La raccolta di dimensioni di metriche personalizzate è disattivata per impostazione predefinita perché in futuro l'archiviazione di metriche personalizzate con dimensioni verrà fatturata separatamente da Application Insights. L'archiviazione di metriche personalizzate non dimensionali resterà gratuita (fino a una quota). Per informazioni sulle modifiche che stanno per essere apportate al modello tariffario, vedere la pagina ufficiale dei prezzi.

Creare grafici ed esplorare le metriche basate su log e preaggregate standard

È possibile usare Esplora metriche in Monitoraggio di Azure per tracciare grafici da metriche preaggregate e basate su log, nonché creare dashboard con grafici. Dopo aver selezionato la risorsa di Application Insights desiderata, usare lo strumento di selezione dello spazio dei nomi per passare dalle metriche standard a quelle basate su log. È anche possibile selezionare uno spazio dei nomi delle metriche personalizzato.

Screenshot che mostra lo spazio dei nomi delle metriche.

Modelli di prezzi per le metriche di Application Insights

L'inserimento di metriche in Application Insights, basate su log o preaggregate, genera costi in base alle dimensioni dei dati inseriti. Per ulteriori informazioni, consultare Dettagli dei prezzi dei log del Monitoraggio di Azure. Le metriche personalizzate, incluse tutte le dimensioni, vengono sempre archiviate nell'archivio log di Application Insights. Inoltre, una versione preaggregata delle metriche personalizzate senza dimensioni viene inoltrata all'archivio delle metriche per impostazione predefinita.

Se si seleziona l'opzione Abilita gli avvisi sulle dimensioni di metriche personalizzate per archiviare tutte le dimensioni delle metriche preaggregate nell'archivio metriche, è possibile generare costi aggiuntivi in base ai prezzi delle metriche personalizzate.

Passaggi successivi