Metriche basate su log e metriche preaggregate in Azure Application Insights

Nota

La documentazione seguente si basa sull'API classica di Application Insights. Il piano a lungo termine per Application Insights consiste nel raccogliere dati usando OpenTelemetry. Per altre informazioni, vedere Abilitare OpenTelemetry di Monitoraggio di Azure per le applicazioni .NET, Node.js, Python e Java.

Questo articolo illustra la differenza tra le metriche di Application Insights "tradizionali" basate su log e metriche preaggregate. Entrambi i tipi di metriche sono disponibili per gli utenti di Application Insights. Ognuno di essi offre un valore univoco nel monitoraggio dell'integrità, della diagnostica e dell'analisi delle applicazioni. 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 di monitoraggio delle applicazioni in Application Insights si basava esclusivamente su alcuni tipi predefiniti di eventi, ad esempio richieste, eccezioni, chiamate di dipendenza e visualizzazioni 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. Avere 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 potrebbe essere poco pratica o persino impossibile per le applicazioni che generano un volume elevato di dati di telemetria. Per situazioni in cui il volume di eventi è troppo elevato, Application Insights implementa diverse tecniche di riduzione del volume di telemetria che riducono il numero di eventi raccolti e archiviati. Queste tecniche includono il campionamento e il 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 sui log, alla fine del 2018, il team di Application Insights ha fornito un'anteprima pubblica delle metriche 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 dimensioni di 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, vengono abilitati nuovi scenari, ad esempio avvisi quasi in tempo reale sulle dimensioni delle metriche e dashboard più reattivi.

Importante

Le metriche basate su log e preaggregate coesistono in Application Insights. Per differenziare i due, nell'esperienza utente di Application Insights le metriche preaggregate sono ora denominate metriche standard (anteprima). Le metriche tradizionali degli eventi sono state rinominate in Metriche basate su log.

Gli SDK più recenti (Application Insights 2.7 SDK o versione successiva per .NET) pre-aggregano 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 tramite GetMetric, con un costo inferiore per l'inserimento dei dati e un costo inferiore.

Per gli SDK che non implementano la pre-aggregazione (ovvero le versioni precedenti degli SDK di Application Insights o per la strumentazione del browser), il back-end di Application Insights popola ancora le nuove metriche aggregando gli eventi ricevuti dall'endpoint della raccolta di eventi di Application Insights. Sebbene non si tragga vantaggio dal volume ridotto di dati trasmessi in rete, è comunque possibile usare le metriche preaggregate e ottenere prestazioni migliori e il supporto degli avvisi quasi in tempo reale con SDK che non preaggregeranno le metriche durante la raccolta.

L'endpoint di raccolta preaggrega gli eventi prima del campionamento di inserimento. Per questo motivo, il campionamento dell'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 (pre-aggregazione SDK) Metriche personalizzate (senza pre-aggregazione sdk) Metriche personalizzate (con pre-aggregazione SDK)
.NET Core e .NET Framework Supportato (V2.13.1+) Supportato tramite TrackMetric Supportato (V2.7.2+) tramite GetMetric
Java Non supportato Supportato tramite TrackMetric Non supportato
Node.js Supportato (V2.0.0+) Supportato tramite TrackMetric Non supportato
Python Non supportato Supportato Parzialmente supportato 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 (pre-aggregazione SDK) Metriche personalizzate (senza pre-aggregazione sdk) Metriche personalizzate (con pre-aggregazione 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. ASP.NET collegamento senza codice nelle macchine virtuali o nei set di scalabilità di macchine virtuali e in locale genera metriche standard senza dimensioni. Lo stesso vale per app Azure Servizio, ma il livello di raccolta deve essere impostato su consigliato. L'SDK è necessario per tutte le dimensioni.
  2. ASP.NET collegamento senza codice Core su servizio app genera metriche standard senza dimensioni. L'SDK è necessario per tutte le dimensioni.

Usare la pre-aggregazione con le metriche personalizzate di Application Insights

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

  • Possibilità di configurare e inviare avvisi su 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 migliore per inviare metriche personalizzate. In questo caso, la pre-aggregazione 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 dei dati.

Dimensioni delle metriche personalizzate e preaggregazione

Tutte le metriche inviate tramite OpenTelemetry, trackMetric o GetMetric e TrackValue chiamate API vengono archiviate automaticamente in archivi di log e metriche. Queste metriche sono disponibili nella tabella customMetrics in Application Insights e in Esplora metriche nello spazio dei nomi delle metriche personalizzato denominato "azure.applicationinsights". Anche se la versione basata su log della metrica personalizzata mantiene sempre tutte le dimensioni, la versione preaggregata della metrica viene archiviata per impostazione predefinita senza dimensioni. 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 Invia metriche personalizzate a Archivio metriche di Azure.

Screenshot that shows usage and estimated costs.

Obiettivi di vendita

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

Nota

Il passaggio alla 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 delle metriche personalizzate è disattivata per impostazione predefinita perché in futuro l'archiviazione di metriche personalizzate con dimensioni verrà fatturata separatamente da Application Insights. L'archiviazione delle metriche personalizzate nondimensionali rimane 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 preaggregate standard e basate su log

Usare Esplora metriche di Monitoraggio di Azure per tracciare grafici da metriche preaggregate e basate su log e per creare dashboard con grafici. Dopo aver selezionato la risorsa di Application Insights desiderata, usare lo strumento di selezione dello spazio dei nomi per passare da una metrica standard (anteprima) a una metrica basata su log. È anche possibile selezionare uno spazio dei nomi delle metriche personalizzato.

Screenshot that shows Metric namespace.

Modelli di determinazione dei prezzi per le metriche di Application Insights

L'inserimento di metriche in Application Insights, basato su log o preaggregato, 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.

Selezionando l'opzione Abilita avvisi sulle dimensioni delle 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