Abilitare OpenTelemetry di Monitoraggio di Azure per applicazioni .NET, Node.js, Python e Java

Questo articolo descrive come abilitare e configurare la raccolta di dati basata su OpenTelemetry per sfruttare le esperienze all'interno di Application Insights di Monitoraggio di Azure. Viene illustrato come installare la distribuzione OpenTelemetry di Monitoraggio di Azure. La distribuzione OpenTelemetry di Monitoraggio di Azure offre una distribuzione OpenTelemetry che include il supporto per le funzionalità specifiche di Monitoraggio di Azure. La distribuzione abilita la telemetria automatica includendo librerie di strumentazione OpenTelemetry per la raccolta di tracce, metriche, log ed eccezioni e consente di raccogliere dati di telemetria personalizzati . È anche possibile usare la funzionalità Live Metrics inclusa nella distribuzione per monitorare e raccogliere altri dati di telemetria dalle applicazioni Web in produzione in tempo reale. Per altre informazioni sui vantaggi dell'uso della distribuzione di OpenTelemetry di Monitoraggio di Azure, vedere Perché usare la distribuzione di OpenTelemetry di Monitoraggio di Azure? in Domande frequenti su OpenTelemetry.

Per altre informazioni sulla raccolta di dati con OpenTelemetry, vedere Nozioni di base sulla raccolta dati o Domande frequenti su OpenTelemetry.

Stato versione OpenTelemetry

Le offerte OpenTelemetry sono disponibili per le applicazioni .NET, Node.js, Python e Java.

Nota

Per uno stato di rilascio delle funzionalità per funzionalità, vedere le domande frequenti.

Operazioni preliminari

Seguire la procedura descritta in questa sezione per instrumentare l'applicazione con OpenTelemetry.

Prerequisiti

Installare la libreria client

Installare il pacchetto NuGet Azure.Monitor.OpenTelemetry.AspNetCore più recente:

dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore 

Abilitare Application Insights per Monitoraggio di Azure

Per abilitare Application Insights di Monitoraggio di Azure, apportare una modifica secondaria all'applicazione e impostare "Connessione ion String". La stringa di Connessione ion indica all'applicazione dove inviare i dati di telemetria raccolti dalla distribuzione ed è univoco per l'utente.

Modificare l'applicazione

Aggiungere UseAzureMonitor() all'avvio dell'applicazione, che si trova nella program.cs classe .

// Import the Azure.Monitor.OpenTelemetry.AspNetCore namespace.
using Azure.Monitor.OpenTelemetry.AspNetCore;

// Create a new WebApplicationBuilder instance.
var builder = WebApplication.CreateBuilder(args);

// Add OpenTelemetry and configure it to use Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

// Build the application.
var app = builder.Build();

// Run the application.
app.Run();

Copiare la stringa di Connessione ion dalla risorsa di Application Insights

Suggerimento

Se non è già disponibile, è ora consigliabile creare una risorsa di Application Insights. Ecco quando è consigliabile creare una nuova risorsa di Application Insights rispetto a quella esistente.

Per copiare la stringa di Connessione ion univoca:

Screenshot che mostra la panoramica e l'stringa di connessione di Application Insights.

  1. Passare al riquadro Panoramica della risorsa di Application Insights.
  2. Trovare la stringa di Connessione.
  3. Passare il puntatore del mouse sul stringa di connessione e selezionare l'icona Copia negli Appunti.

Incollare la stringa di Connessione ion nell'ambiente

Per incollare la stringa di Connessione ion, selezionare tra le opzioni seguenti:

R. Impostare tramite variabile di ambiente (scelta consigliata)

Sostituire <Your Connection String> nel comando seguente con il stringa di connessione univoco.

APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>

B. Impostare tramite file di configurazione - Solo Java (scelta consigliata)

Creare un file di configurazione denominato applicationinsights.jsone inserirlo nella stessa directory di applicationinsights-agent-3.5.1.jar con il contenuto seguente:

{
  "connectionString": "<Your Connection String>"
}

Sostituire <Your Connection String> nel codice JSON precedente con l'stringa di connessione univoco.

C. Impostare tramite codice : ASP.NET Core, Node.js e Solo Python (non consigliato)

Per un esempio di impostazione Connessione ion String tramite codice, vedere configurazione della stringa di Connessione ion.

Nota

Se si imposta il stringa di connessione in più posizioni, si rispetta la precedenza seguente:

  1. Codice
  2. Variabile di ambiente
  3. File di configurazione

Verificare che i dati vengano trasmessi

Eseguire l'applicazione e aprire la scheda Risorsa di Application Insights nella portale di Azure. La visualizzazione dei dati nel portale potrebbe richiedere alcuni minuti.

Screenshot della scheda Panoramica di Application Insights con le richieste del server e il tempo di risposta del server evidenziato.

Application Insights è ora abilitato per l'applicazione. Tutti i passaggi seguenti sono facoltativi e consentono ulteriori personalizzazioni.

Importante

Se si dispone di due o più servizi che generano dati di telemetria nella stessa risorsa di Application Insights, è necessario impostare i nomi dei ruoli cloud per rappresentarli correttamente nella mappa delle applicazioni.

Nell'ambito dell'uso della strumentazione di Application Insights, vengono raccolti e inviati dati di diagnostica a Microsoft. Questi dati consentono di eseguire e migliorare Application Insights. Per altre informazioni, vedere Statsbeat in app Azure lication Insights.

Esempi

Le applicazioni di esempio OpenTelemetry di Monitoraggio di Azure sono disponibili per tutte le lingue supportate.

Passaggi successivi

  • Per informazioni dettagliate sull'aggiunta e la modifica di OpenTelemetry di Monitoraggio di Azure, vedere Aggiungere e modificare OpenTelemetry di Monitoraggio di Azure.
  • Per configurare ulteriormente la distribuzione di OpenTelemetry, vedere Configurazione di OpenTelemetry di Monitoraggio di Azure.
  • Per esaminare il codice sorgente, vedere il repository GitHub aspNetCore di Monitoraggio di Azure.
  • Per installare il pacchetto NuGet, verificare la disponibilità di aggiornamenti o visualizzare le note sulla versione, vedere la pagina Del pacchetto NuGet AspNetCore di Monitoraggio di Azure.
  • Per acquisire familiarità con Monitoraggio di Azure e OpenTelemetry, vedere l'applicazione di esempio di Monitoraggio di Azure.
  • Per altre informazioni su OpenTelemetry e sulla relativa community, vedere il repository GitHub OpenTelemetry .NET.
  • Per abilitare le esperienze di utilizzo, abilitare il monitoraggio degli utenti del Web o del browser.

Domande frequenti

Questa sezione fornisce le risposte alle domande comuni.

Che cos'è OpenTelemetry?

Si tratta di un nuovo standard open source per l'osservabilità. Per altre informazioni, vedere OpenTelemetry.

Perché Monitoraggio di Microsoft Azure investe in OpenTelemetry?

Microsoft è tra i maggiori collaboratori a OpenTelemetry.

Le proposte chiave di valore di OpenTelemetry sono che sono indipendenti dal fornitore e forniscono API/SDK coerenti in tutte le lingue.

Nel corso del tempo, Si ritiene che OpenTelemetry consentirà ai clienti di Monitoraggio di Azure di osservare le applicazioni scritte in lingue diverse dalle lingue supportate. Espande anche i tipi di dati che è possibile raccogliere tramite un set completo di librerie di strumentazione. Inoltre, gli SDK OpenTelemetry tendono ad essere più efficienti su larga scala rispetto ai predecessori, gli SDK di Application Insights.

Infine, OpenTelemetry si allinea alla strategia di Microsoft per adottare l'open source.

Qual è lo stato di OpenTelemetry?

Vedere Stato OpenTelemetry.

Che cos'è la distribuzione di OpenTelemetry di Monitoraggio di Azure?

È possibile considerarlo come un wrapper sottile che aggrega tutti i componenti OpenTelemetry per un'esperienza di prima classe in Azure. Questo wrapper è detto anche distribuzione in OpenTelemetry.

Perché è consigliabile usare la distribuzione di OpenTelemetry di Monitoraggio di Azure?

L'uso della distribuzione OpenTelemetry di Monitoraggio di Azure tramite OpenTelemetry nativo dalla community offre diversi vantaggi:

Nello spirito di OpenTelemetry, abbiamo progettato la distribuzione per essere aperta ed estendibile. Ad esempio, è possibile aggiungere:

  • Esportazione del protocollo OTLP (OpenTelemetry Protocol) e invio simultaneamente a una seconda destinazione
  • Altre librerie di strumentazione non incluse nella distribuzione

Poiché la distribuzione fornisce una distribuzione OpenTelemetry, la distribuzione supporta qualsiasi elemento supportato da OpenTelemetry. Ad esempio, è possibile aggiungere altri processori di telemetria, utilità di esportazione o librerie di strumentazione, se OpenTelemetry li supporta.

Nota

La distribuzione imposta il campionatore su un campionatore personalizzato a frequenza fissa per Application Insights. È possibile passare a un campionatore diverso, ma in questo modo è possibile disabilitare alcune delle funzionalità incluse della distribuzione. Per altre informazioni sull'sampler supportato, vedere la sezione Abilitare il campionamento di Configurare OpenTelemetry di Monitoraggio di Azure.

Per le lingue senza un utilità di esportazione OpenTelemetry autonoma supportata, la distribuzione OpenTelemetry di Monitoraggio di Azure è l'unico modo attualmente supportato per usare OpenTelemetry con Monitoraggio di Azure. Per le lingue con un utilità di esportazione OpenTelemetry autonoma supportata, è possibile usare la distribuzione OpenTelemetry di Monitoraggio di Azure o l'utilità di esportazione OpenTelemetry autonoma appropriata a seconda dello scenario di telemetria. Per altre informazioni, vedere Quando usare l'utilità di esportazione OpenTelemetry di Monitoraggio di Azure?

Come è possibile testare la distribuzione di OpenTelemetry di Monitoraggio di Azure?

Vedere la documentazione di abilitazione per .NET, Java, JavaScript (Node.js) e Python.

È consigliabile usare OpenTelemetry o Application Insights SDK?

È consigliabile usare la distribuzione OpenTelemetry, a meno che non sia necessaria una funzionalità disponibile solo con il supporto formale in Application Insights SDK.

L'adozione di OpenTelemetry impedisce ora di eseguire la migrazione in un secondo momento.

Quando è consigliabile usare l'utilità di esportazione OpenTelemetry di Monitoraggio di Azure?

Per ASP.NET Core, Java, Node.js e Python, è consigliabile usare la distribuzione OpenTelemetry di Monitoraggio di Azure. Si tratta di una riga di codice da iniziare.

Per tutti gli altri scenari .NET, inclusi i ASP.NET classici, le app console e così via, è consigliabile usare l'utilità di esportazione OpenTelemetry di Monitoraggio di Azure .NET: Azure.Monitor.OpenTelemetry.Exporter.

Per scenari di telemetria Python più complessi che richiedono una configurazione avanzata, è consigliabile usare Python Monitoraggio di Azure OpenTelemetry Exporter.

Qual è lo stato di rilascio corrente delle funzionalità nella distribuzione OpenTelemetry di Monitoraggio di Azure?

Nel grafico seguente viene visualizzato il supporto delle funzionalità OpenTelemetry per ogni lingua.

Funzionalità .NET Node.js Python Java
Traccia distribuita
Metriche personalizzate
Metriche standard (accuratezza attualmente interessata dal campionamento)
Campionamento a frequenza fissa
Archiviazione offline e tentativi automatici
Segnalazione eccezioni
Raccolta logs ⚠️
Eventi personalizzati ⚠️ ⚠️ ⚠️
Autenticazione Microsoft Entra
Metriche attive
Rilevare il contesto delle risorse per vm/set di scalabilità di macchine virtuali e servizio app
Rilevare il contesto delle risorse per il servizio Azure Kubernetes e le funzioni
Filtro intervallo di test di disponibilità
Popolamento automatico dell'ID utente, ID utente autenticato e IP utente
Eseguire manualmente l'override/impostare il nome dell'operazione, l'ID utente o l'ID utente autenticato
Campionamento adattivo
Profiler ⚠️
Debugger di snapshot

Chiave

  • ✅ Questa funzionalità è disponibile per tutti i clienti con supporto formale.
  • ⚠️ Questa funzionalità è disponibile come anteprima pubblica. Vedere Condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure.
  • ❌ Questa funzionalità non è disponibile o non è applicabile.

È possibile usare OpenTelemetry per i Web browser?

Sì, ma non è consigliabile e Azure non lo supporta. OpenTelemetry JavaScript è fortemente ottimizzato per Node.js. È invece consigliabile usare Application Insights JavaScript SDK.

Quando è possibile prevedere che OpenTelemetry SDK sia disponibile per l'uso nei Web browser?

OpenTelemetry Web SDK non ha una sequenza temporale di disponibilità determinata. Probabilmente ci sono diversi anni di distanza da un SDK del browser che è un'alternativa praticabile all'SDK JavaScript di Application Insights.

È possibile testare OpenTelemetry in un Web browser?

La sandbox Web OpenTelemetry è un fork progettato per consentire il funzionamento di OpenTelemetry in un browser. Non è ancora possibile inviare dati di telemetria ad Application Insights. L'SDK non definisce eventi client generali.

L'esecuzione di Application Insights insieme a agenti concorrenti come AppDynamics, DataDog e NewRelic è supportato?

No. Questa procedura non è un elemento che si prevede di testare o supportare, anche se le distribuzioni consentono di esportare in un endpoint OTLP insieme a Monitoraggio di Azure contemporaneamente.

È possibile usare le funzionalità di anteprima negli ambienti di produzione?

Non è consigliabile. Vedere Condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure.

Qual è la differenza tra strumentazione manuale e automatica?

Vedere La panoramica di OpenTelemetry.

È possibile usare OpenTelemetry Collector?

Alcuni clienti usano OpenTelemetry Collector come alternativa agente, anche se Microsoft non supporta ufficialmente un approccio basato su agente per il monitoraggio delle applicazioni. Nel frattempo, la community open source ha contribuito a un utilità di esportazione di Monitoraggio di Azure dell'agente di raccolta OpenTelemetry che alcuni clienti usano per inviare dati ad Application Insights di Monitoraggio di Azure. Questo non è supportato da Microsoft.

Qual è la differenza tra OpenCensus e OpenTelemetry?

OpenCensus è il precursore di OpenTelemetry. Microsoft ha contribuito a riunire OpenTracing e OpenCensus per creare OpenTelemetry, un unico standard di osservabilità a livello globale. L'SDK Python attualmente consigliato per la produzione per Monitoraggio di Azure si basa su OpenCensus. Microsoft si impegna a rendere Monitoraggio di Azure basato su OpenTelemetry.

Risoluzione dei problemi

Non funziona? Vedere la pagina relativa alla risoluzione dei problemi per ASP.NET Core.

Supporto tecnico

Selezionare una scheda per la lingua scelta per individuare le opzioni di supporto.

  • Per supporto tecnico di Azure problemi, aprire un ticket di supporto tecnico di Azure.
  • Per i problemi di OpenTelemetry, contattare direttamente la community .NET di OpenTelemetry.
  • Per un elenco dei problemi aperti relativi all'utilità di esportazione di Monitoraggio di Azure, vedere la pagina problemi di GitHub.

Commenti e suggerimenti su OpenTelemetry

Per fornire commenti e suggerimenti: