Condividi tramite


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 supportare 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 funzionalità specifiche di Monitoraggio di Azure. La distribuzione abilita la telemetria automatica includendo librerie di strumentazione OpenTelemetry per raccogliere 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 live. Per altre informazioni sui vantaggi dell'uso della distribuzione OpenTelemetry di Monitoraggio di Azure, vedere Perché usare la distribuzione di OpenTelemetry di Monitoraggio di Azure?

Per altre informazioni sulla raccolta di dati con OpenTelemetry, vedere Informazioni 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 release funzionalità per funzionalità, vedere le domande frequenti.
  • La seconda scheda di questo articolo illustra tutti gli scenari .NET, tra cui ASP.NET classici, app console, Windows Form (WinForms) e così via.

Operazioni preliminari

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

Prerequisiti

Installare la libreria client

Installare il Azure.Monitor.OpenTelemetry.AspNetCorepacchetto NuGet più recente:

dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore 

Abilitare Application Insights di Monitoraggio di Azure

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

Modificare l'applicazione

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

// 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 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 univoca:

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

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

Incollare la stringa di connessione nell'ambiente

Per incollare la stringa di connessione, selezionare una delle opzioni seguenti:

R. Impostare tramite variabile di ambiente (scelta consigliata)

Sostituire <Your Connection String> nel comando seguente con la stringa di connessione univoca.

APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>

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

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

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

Sostituire <Your Connection String> nel codice JSON precedente con la stringa di connessione univoca.

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

Per un esempio di impostazione della stringa di connessione tramite codice, vedere Configurazione della stringa di connessione.

Nota

Se si imposta la stringa di connessione in più posizioni, viene osservato l'ordine di 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 nel 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 Azure Application Insights.

Esempi

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

Passaggi successivi

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 principali proposte di valore di OpenTelemetry sono il fatto che sia indipendente dal fornitore e che offra API/SDK coerenti in tutti i linguaggi.

Riteniamo che nel tempo OpenTelemetry consentirà ai clienti di Monitoraggio di Azure di osservare le applicazioni scritte in altri linguaggi oltre ai linguaggi supportati. Espande anche i tipi di dati che è possibile raccogliere tramite un set completo di librerie di strumentazione. Inoltre, OpenTelemetry Software Development Kit (SDK) tende a essere più efficiente su larga scala rispetto ai predecessori, gli SDK di Application Insights.

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

Qual è lo stato di OpenTelemetry?

Vedere Stato di OpenTelemetry.

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

Può essere considerata un wrapper sottile che aggrega tutti i componenti OpenTelemetry per un'esperienza di prima classe in Azure. In OpenTelemetry questo wrapper è detto anche distribuzione.

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

L'uso della distribuzione OpenTelemetry di Azure Monitor presenta diversi vantaggi rispetto a OpenTelemetry nativo della community:

Nello spirito di OpenTelemetry, abbiamo progettato la distribuzione in modo che sia aperta ed estendibile. Ad esempio, è possibile aggiungere:

  • Esportazione del protocollo OTLP (OpenTelemetry Protocol) e invio simultaneo 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 ciò potrebbe disabilitare alcune delle funzionalità incluse della distribuzione. Per altre informazioni sul campionatore supportato, vedere la sezione Abilitare il campionamento di Configurare OpenTelemetry di Monitoraggio di Azure.

Per i linguaggi privi di 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 i linguaggi 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 OpenTelemetry di Monitoraggio di Azure?

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

È consigliabile usare OpenTelemetry o l'SDK Application Insights?

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

L'adozione di OpenTelemetry ora consente di non dover effettuare 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 con cui iniziare.

Per tutti gli altri scenari .NET, inclusi ASP.NET classico, app console, Windows Forms (WinForms) 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 l'utilità di esportazione OpenTelemetry di Monitoraggio di Azure Python.

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

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

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 di log ⚠️
Eventi personalizzati ⚠️ ⚠️ ⚠️
Autenticazione Microsoft Entra
Metriche attive
Filtro delle metriche attive
Rilevare il contesto delle risorse per macchine virtuali/set di scalabilità di macchine virtuali e servizio app
Rilevare il contesto delle risorse per servizio Azure Kubernetes e Funzioni
Eventi di test della disponibilità generati tramite l'API Traccia disponibilità
Filtrare le richieste, le dipendenze, i log e le eccezioni in base all'ID utente anonimo e all'origine sintetica
Filtrare dipendenze, log ed eccezioni in base al nome dell'operazione
Campionamento adattivo
Profiler ⚠️
Debugger di snapshot

Chiave

È 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 l'SDK JavaScript Application Insights.

Per quando è prevista la disponibilità dell'SDK OpenTelemetry per l'uso nei Web browser?

L'SDK Web OpenTelemetry non ha una timeline di disponibilità determinata. Probabilmente serviranno diversi anni perché un SDK browser sia una valida alternativa all'SDK JavaScript di Application Insights.

Oggi è 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 è supportata?

Non sono previsti il supporto e il test di questa pratica, anche se le distribuzioni consentono di esportare simultaneamente verso un endpoint OTLP e Monitoraggio di Azure.

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

Non è una scelta consigliata. 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.

Che cos'è l'agente di raccolta OpenTelemetry?

Alcuni clienti usano l'agente di raccolta OpenTelemetry come alternativa agente, anche se al momento 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 di ASP.NET Core.

Supporto tecnico

Selezionare la scheda del linguaggio scelto per scoprire le opzioni di supporto.

Feedback su OpenTelemetry

Per inviare un feedback: