Live Metrics: monitorare e diagnosticare con una latenza di 1 secondo

Monitorare l'applicazione Web live e in produzione usando Metriche attive (note anche come QuickPulse) da Application Insights. È possibile selezionare e filtrare le metriche e i contatori delle prestazioni da osservare in tempo reale, senza interferenze del servizio. È anche possibile esaminare le tracce dello stack di richieste ed eccezioni di esempio non riuscite. Insieme a Profiler e Snapshot Debugger, Live Metrics offre uno strumento di diagnostica potente e non invasivo per il sito Web live.

Nota

Live Metrics supporta solo TLS 1.2. Per ulteriori informazioni, vedere Risoluzione dei problemi.

Con Live Metrics è possibile:

  • Convalidare una correzione mentre viene rilasciata controllando i conteggi delle prestazioni e degli errori.
  • Osservare l'effetto dei carichi di test e diagnosticare i problemi in tempo reale.
  • Concentrarsi su sessioni di test specifiche o filtrare i problemi noti selezionando e filtrando le metriche da controllare.
  • Ottenere le eccezioni delle tracce in tempo reale.
  • Provare a usare i filtri per individuare gli indicatori di prestazioni chiave più rilevanti.
  • Monitorare ogni contatore delle prestazioni di Windows live.
  • Identificare facilmente un server che presenta problemi e filtrare tutti i feed KPI/live in base a tale server.

Screenshot that shows the Live Metrics tab.

Live Metrics è attualmente supportato per le app ASP.NET, ASP.NET Core, Funzioni di Azure, Java e Node.js.

Nota

Il numero di istanze del server monitorate visualizzate da Live Metrics potrebbe essere inferiore al numero effettivo di istanze allocate per l'applicazione. Questa mancata corrispondenza è dovuta al fatto che molti server Web moderni scaricano le applicazioni che non ricevono richieste per un periodo di tempo per risparmiare risorse. Poiché Live Metrics conta solo i server che eseguono l'applicazione, i server che hanno già scaricato il processo non verranno inclusi in tale totale.

Attività iniziali

Importante

Per abilitare Application Insights, assicurarsi che sia attivato nella portale di Azure e che l'app usi una versione recente del pacchetto NuGet di Application Insights. Senza il pacchetto NuGet, alcuni dati di telemetria vengono inviati ad Application Insights, ma questi dati di telemetria non verranno visualizzati nelle metriche attive.

  1. Seguire le linee guida specifiche del linguaggio per abilitare le metriche attive:

  2. Nella portale di Azure aprire la risorsa di Application Insights per l'app. Aprire quindi Live Stream.

  3. Proteggere il canale di controllo se è possibile usare dati sensibili come i nomi dei clienti nei filtri.

Nota

Il 31 marzo 2025, il supporto per l'inserimento delle chiavi di strumentazione terminerà. L'inserimento di chiavi di strumentazione continuerà a funzionare, ma non forniamo più aggiornamenti o supporto per la funzionalità. Passare alle stringa di connessione per sfruttare le nuove funzionalità.

Abilitare Live Metrics usando il codice per qualsiasi applicazione .NET

Nota

Le metriche attive sono abilitate per impostazione predefinita durante l'onboarding usando le istruzioni consigliate per le applicazioni .NET.

Per configurare manualmente le metriche attive:

  1. Installare il pacchetto NuGet Microsoft.ApplicationInsights.PerfCounterCollector.
  2. Il codice dell'app console di esempio seguente mostra la configurazione di Live Metrics:
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

// Create a TelemetryConfiguration instance.
TelemetryConfiguration config = TelemetryConfiguration.CreateDefault();
config.InstrumentationKey = "INSTRUMENTATION-KEY-HERE";
QuickPulseTelemetryProcessor quickPulseProcessor = null;
config.DefaultTelemetrySink.TelemetryProcessorChainBuilder
    .Use((next) =>
    {
        quickPulseProcessor = new QuickPulseTelemetryProcessor(next);
        return quickPulseProcessor;
    })
    .Build();

var quickPulseModule = new QuickPulseTelemetryModule();

// Secure the control channel.
// This is optional, but recommended.
quickPulseModule.AuthenticationApiKey = "YOUR-API-KEY-HERE";
quickPulseModule.Initialize(config);
quickPulseModule.RegisterTelemetryProcessor(quickPulseProcessor);

// Create a TelemetryClient instance. It is important
// to use the same TelemetryConfiguration here as the one
// used to set up Live Metrics.
TelemetryClient client = new TelemetryClient(config);

// This sample runs indefinitely. Replace with actual application logic.
while (true)
{
    // Send dependency and request telemetry.
    // These will be shown in Live Metrics.
    // CPU/Memory Performance counter is also shown
    // automatically without any additional steps.
    client.TrackDependency("My dependency", "target", "http://sample",
        DateTimeOffset.Now, TimeSpan.FromMilliseconds(300), true);
    client.TrackRequest("My Request", DateTimeOffset.Now,
        TimeSpan.FromMilliseconds(230), "200", true);
    Task.Delay(1000).Wait();
}

L'esempio precedente riguarda un'app console, ma lo stesso codice può essere usato in qualsiasi applicazione .NET. Se altri moduli di telemetria sono abilitati per la raccolta automatica dei dati di telemetria, è importante assicurarsi che la stessa configurazione usata per l'inizializzazione di tali moduli venga usata per il modulo Live Metrics.

In che modo le metriche attive differiscono da Esplora metriche e Log Analytics?

Funzionalità Live Stream Esplora metriche e Log Analytics
Latenza Dati visualizzati entro un secondo. Aggregazione in minuti.
Nessuna conservazione I dati vengono mantenuti mentre sono presenti nel grafico e vengono quindi eliminati. Dati conservati per 90 giorni.
Su richiesta I dati vengono trasmessi solo quando il riquadro Metriche attive è aperto. I dati vengono inviati ogni volta che l'SDK viene installato e abilitato.
Libero Non sono previsti addebiti per i dati di Live Stream. Soggetto ai prezzi.
Campionamento Tutte le metriche selezionate e i contatori vengono trasmessi. Gli errori e le analisi dello stack vengono usati come esempi. Gli eventi possono essere campionati.
Canale di controllo I segnali di controllo del filtro vengono inviati all'SDK. È consigliabile proteggere questo canale. La comunicazione è un modo per passare al portale.

Selezionare e filtrare le metriche

Queste funzionalità sono disponibili con ASP.NET, ASP.NET Core e Funzioni di Azure (v2).

È possibile monitorare gli indicatori KPI personalizzati live applicando filtri arbitrari su eventuali dati di Application Insights Telemetry dal portale. Selezionare il controllo filtro visualizzato quando si passa il mouse su uno dei grafici. Il grafico seguente traccia un indicatore KPI di conteggio richieste personalizzato con filtri per gli attributi URL e Durata. Convalidare i filtri con la sezione di anteprima del flusso che mostra un feed live di dati di telemetria che corrisponda ai criteri specificati in qualsiasi momento.

Screenshot that shows the Filter request rate.

È possibile monitorare un valore diverso da Count. Le opzioni dipendono dal tipo di flusso, che può essere qualsiasi telemetria di Application Insights, ad esempio richieste, dipendenze, eccezioni, tracce, eventi o metriche. Può anche essere una misura personalizzata.

Screenshot that shows the Query Builder on Request Rate with a custom metric.

Oltre ai dati di telemetria di Application Insights, è anche possibile monitorare qualsiasi contatore delle prestazioni di Windows. Selezionarlo dalle opzioni del flusso e specificare il nome del contatore delle prestazioni.

Le metriche attive vengono aggregate in due punti: in locale in ogni server e quindi in tutti i server. È possibile modificare l'impostazione predefinita in una delle due opzioni selezionando altre opzioni nei rispettivi elenchi a discesa.

Telemetria di esempio: eventi di diagnostica dinamica personalizzati

Per impostazione predefinita, il feed live degli eventi mostra esempi di richieste non riuscite e chiamate di dipendenza, eccezioni, eventi e tracce. Selezionare l'icona del filtro per visualizzare i criteri applicati in qualsiasi momento.

Screenshot that shows the Filter button.

Così come con le metriche, è possibile specificare i criteri arbitrari per i tipi di dati di Application Insights Telemetry. In questo esempio si selezionano eventi ed errori di richiesta specifici.

Screenshot that shows the Query Builder.

Nota

Attualmente, per i criteri basati su messaggi di eccezione, usare il messaggio di eccezione più esterno. Nell'esempio precedente, per escludere l'eccezione non dannosa con un messaggio di eccezione interno (segue il delimitatore "<--" "Il client disconnesso", usare un messaggio che non contiene i criteri "Errore durante la lettura del contenuto della richiesta".

Per visualizzare i dettagli di un elemento nel feed live, selezionarlo. È possibile sospendere il feed selezionando Sospendi oppure scorrendo verso il basso e selezionando un elemento. Il feed live riprende dopo lo scorrimento verso l'alto o quando si seleziona il contatore degli elementi raccolti durante la sospensione.

Screenshot that shows the Sample telemetry window with an exception selected and the exception details displayed at the bottom of the window.

Filtro per istanza di server

Se si vuole monitorare un'istanza specifica del ruolo server, è possibile applicare un filtro per server. Per filtrare, selezionare il nome del server in Server.

Screenshot that shows the Sampled live failures.

Proteggere il canale di controllo

I filtri personalizzati delle metriche attive consentono di controllare quali dati di telemetria dell'applicazione vengono trasmessi alla visualizzazione Metriche attive nella portale di Azure. I criteri dei filtri vengono inviati alle app instrumentate con Application Insights SDK. Il valore del filtro potrebbe contenere informazioni riservate, ad esempio l'ID cliente. Per proteggere questo valore e impedire la potenziale divulgazione di applicazioni non autorizzate, sono disponibili due opzioni:

  • Consigliato: proteggere il canale Live Metrics usando l'autenticazione Microsoft Entra.
  • Legacy (non più consigliato): configurare un canale autenticato configurando una chiave API privata, come illustrato nella sezione "Opzione legacy".

Nota

Il 30 settembre 2025 le chiavi API usate per trasmettere i dati di telemetria delle metriche live in Application Insights verranno ritirati. Dopo tale data, le applicazioni che usano chiavi API non saranno in grado di inviare i dati delle metriche attive alla risorsa di Application Insights. L'inserimento di dati di telemetria autenticato per lo streaming di metriche live in Application Insights dovrà essere eseguito con l'autenticazione di Microsoft Entra per Application Insights.

È possibile provare filtri personalizzati senza dover configurare un canale autenticato. Selezionare una delle icone del filtro e autorizzare i server connessi. Se si sceglie questa opzione, è necessario autorizzare i server connessi una volta ogni nuova sessione o ogni volta che viene online un nuovo server.

Avviso

Sconsigliamo vivamente l'uso di canali non protetti e disabiliteremo questa opzione sei mesi dopo averla usata. Nella finestra di dialogo Autorizza server connessi viene visualizzata la data successiva alla quale questa opzione verrà disabilitata.

Screenshot that shows the Authorize connected servers dialog.

Opzione legacy: Creare una chiave API

  1. Selezionare la scheda Accesso API e quindi selezionare Crea chiave API.

    Screenshot that shows selecting the API Access tab and the Create API key button.

  2. Selezionare la casella di controllo Authenticate SDK control channel (Autentica canale di controllo SDK) e quindi selezionare Generate key ( Genera chiave).

    Screenshot that shows the Create API key pane. Select Authenticate SDK control channel checkbox and then select Generate key.

Aggiungere una chiave API alla configurazione

È possibile aggiungere una chiave API alla configurazione per ASP.NET, ASP.NET Core, WorkerService e Funzioni di Azure app.

Nel file Program.cs aggiungere lo spazio dei nomi seguente:

using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

Aggiungere quindi la registrazione del servizio seguente:

// Existing code which includes services.AddApplicationInsightsTelemetry() to enable Application Insights.
builder.Services.ConfigureTelemetryModule<QuickPulseTelemetryModule> ((module, o) => module.AuthenticationApiKey = "YOUR-API-KEY-HERE");

Per altre informazioni su come configurare le applicazioni ASP.NET Core, vedere Configurazione dei moduli di telemetria in ASP.NET Core.

WorkerService

Per le applicazioni WorkerService , seguire queste istruzioni.

Aggiungere lo spazio dei nomi seguente:

using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

Aggiungere quindi la riga seguente prima della chiamata services.AddApplicationInsightsTelemetryWorkerService:

    services.ConfigureTelemetryModule<QuickPulseTelemetryModule> ((module, o) => module.AuthenticationApiKey = "YOUR-API-KEY-HERE");

Per altre informazioni su come configurare le applicazioni WorkerService, vedere Configurazione dei moduli di telemetria in WorkerServices.

App di Funzioni di Azure

Per le app Funzioni di Azure (v2), è possibile proteggere il canale con una chiave API usando una variabile di ambiente.

Creare una chiave API dall'interno della risorsa di Application Insights e passare a Impostazioni> Configuration per l'app Funzioni di Azure. Selezionare Nuova impostazione dell'applicazione, immettere un nome e APPINSIGHTS_QUICKPULSEAUTHAPIKEYimmettere un valore corrispondente alla chiave API.

Tabella delle funzionalità supportate

Lingua Metriche di base Metriche delle prestazioni Filtro personalizzato Telemetria di esempio Suddivisione della CPU per processo
.NET Framework Supportato (LTS) Supportato (LTS) Supportato (LTS) Supportato (LTS) Supportato (LTS)
.NET Core (target=.NET Framework) Supportato (LTS) Supportato (LTS) Supportato (LTS) Supportato (LTS) Supportato (LTS)
.NET Core (target=.NET Core) Supportato (LTS) Supportato* Supportato (LTS) Supportato (LTS) Non supportato
Funzioni di Azure v2 Supportata Supportato Supportato Supportato Non supportato
Java Supportato (V2.0.0+) Supportato (V2.0.0+) Non supportato Supportato (V3.2.0+) Non supportato
Node.js Supportato (V1.3.0+) Supportato (V1.3.0+) Non supportato Supportato (V1.3.0+) Non supportato
Python Non supportato Non supportato Non supportato Non supportato Non supportato

Le metriche di base includono la richiesta, la dipendenza e la frequenza delle eccezioni. Le metriche delle prestazioni (contatori delle prestazioni) includono memoria e CPU. I dati di telemetria di esempio mostrano un flusso di informazioni dettagliate per le richieste e le dipendenze non riuscite, le eccezioni, gli eventi e le tracce.

Il supporto di PerfCounters varia leggermente tra le versioni di .NET Core che non hanno come destinazione .NET Framework:

  • Le metriche perfCounters sono supportate durante l'esecuzione nel servizio app Azure per Windows (ASP.NET Core SDK versione 2.4.1 o successiva).
  • PerfCounters sono supportati quando l'app è in esecuzione in qualsiasi computer Windows per le app destinate a .NET Core LTS o versione successiva.
  • PerfCounters è supportato quando l'app viene eseguita ovunque (ad esempio Linux, Windows, servizio app per Linux o contenitori) nelle versioni più recenti, ma solo per le app destinate a .NET Core LTS o versione successiva.

Risoluzione dei problemi

Live Metrics usa indirizzi IP diversi rispetto ad altri dati di telemetria di Application Insights. Assicurarsi che tali indirizzi IP siano aperti nel firewall. Verificare anche che le porte in uscita per le metriche attive siano aperte nel firewall dei server.

Come descritto nell'annuncio di migrazione di Azure TLS 1.2, Live Metrics supporta ora solo TLS 1.2. Se si usa una versione precedente di TLS, Live Metrics non visualizza dati. Per le applicazioni basate su .NET Framework 4.5.1, vedere Abilitare Transport Layer Security (TLS) 1.2 nei client - Configuration Manager per supportare la versione più recente di TLS.

Configurazione mancante per .NET

  1. Verificare di usare la versione più recente del pacchetto NuGet Microsoft.ApplicationInsights.PerfCounterCollector.

  2. Modificare il ApplicationInsights.config file:

    • Verificare che il stringa di connessione punti alla risorsa di Application Insights in uso.
    • Individuare l'opzione QuickPulseTelemetryModule di configurazione. Se non è presente, aggiungerlo.
    • Individuare l'opzione QuickPulseTelemetryProcessor di configurazione. Se non è presente, aggiungerlo.
    <TelemetryModules>
    <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.
    QuickPulse.QuickPulseTelemetryModule, Microsoft.AI.PerfCounterCollector"/>
    </TelemetryModules>
    
    <TelemetryProcessors>
    <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.
    QuickPulse.QuickPulseTelemetryProcessor, Microsoft.AI.PerfCounterCollector"/>
    </TelemetryProcessors>
    
  3. Riavvia l'applicazione.

Messaggio di stato "I dati sono temporaneamente inaccessibili"

Quando si passa a Metriche attive, è possibile che venga visualizzato un banner con il messaggio di stato: "I dati sono temporaneamente inaccessibili. Gli aggiornamenti sullo stato vengono pubblicati qui https://aka.ms/aistatus "

Seguire il collegamento alla pagina stato di Azure e verificare se è presente un'interruzione dell'attivazione che interessa Application Insights. Verificare che i firewall e le estensioni del browser non blocchino l'accesso alle metriche attive se non si verifica un'interruzione. Ad esempio, alcune estensioni ad-blocker più diffuse bloccano le connessioni a *.monitor.azure.com. Per usare le funzionalità complete di Live Metrics, disabilitare l'estensione ad-blocker o aggiungere una regola di esclusione per il dominio *.livediagnostics.monitor.azure.com al blocco annunci, al firewall e così via.

Numero elevato imprevisto di richieste di livediagnostics.monitor.azure.com

Gli SDK di Application Insights usano un'API REST per comunicare con gli endpoint QuickPulse, che forniscono metriche attive per l'applicazione Web. Per impostazione predefinita, gli SDK eseguono il polling degli endpoint una volta ogni cinque secondi per verificare se si sta visualizzando il riquadro Metriche attive nel portale di Azure.

Se si apre il riquadro Metriche aperte, gli SDK passano a una modalità di frequenza superiore e inviano nuove metriche a QuickPulse ogni secondo. In questo modo è possibile monitorare e diagnosticare l'applicazione in tempo reale con una latenza di 1 secondo, ma genera anche un maggior traffico di rete. Per ripristinare il normale flusso di traffico, allontanarsi dal riquadro Metriche attive.

Nota

Le chiamate API REST effettuate dagli SDK agli endpoint QuickPulse non vengono rilevate da Application Insights e non influiscono sulle chiamate alle dipendenze o ad altre metriche. Tuttavia, è possibile visualizzarli in altri strumenti di monitoraggio della rete.

Passaggi successivi