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
- Sottoscrizione di Azure: creare una sottoscrizione di Azure gratuita
- Risorsa di Application Insights: creare una risorsa di Application Insights
- Applicazione ASP.NET Core usando una versione ufficialmente supportata di .NET
Suggerimento
Se si esegue la migrazione dall'API classica di Application Insights, vedere la documentazione sulla migrazione.
Installare la libreria client
Installare il pacchetto NuGet Azure.Monitor.OpenTelemetry.AspNetCore
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:
- Passare al riquadro Panoramica della risorsa di Application Insights.
- Trovare la stringa di connessione.
- 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.4.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:
- Codice
- Variabile di ambiente
- 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.
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
- 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 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 .NET OpenTelemetry.
- Per abilitare le esperienze di utilizzo, abilitare il monitoraggio degli utenti Web o 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 Azure Microsoft investe in OpenTelemetry?
Microsoft investe in OpenTelemetry per i motivi seguenti:
- È indipendente dal fornitore e offre API/SDK coerenti tra 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 i tipi di dati che è possibile raccogliere tramite un set completo di librerie di strumentazione.
- Gli SDK (Software Development Kit) OpenTelemetry tendono ad essere più efficienti su larga scala rispetto ai predecessori, gli SDK di Application Insights.
- OpenTelemetry si allinea alla strategia di Microsoft per 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:
- Riduce il lavoro di abilitazione
- È supportato da Microsoft
- Include funzionalità specifiche di Azure, ad esempio:
- Campionamento compatibile con gli SDK classici di Application Insights
- Autenticazione Microsoft Entra
- Archiviazione offline e tentativi automatici
- Statistiche
- Metriche standard di Application Insights
- Rilevare i metadati delle risorse per il popolamento automatico del nome del ruolo cloud e dell'istanza del ruolo cloud in vari ambienti di Azure
- Metriche attive
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 | ✅ | ✅ | ✅ | ✅ |
Campionamento a frequenza fissa | ✅ | ✅ | ✅ | ✅ |
Archiviazione offline e retry 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
- ✅ 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 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.
In Grafana, perché vedo Status: 500. Can't visualize trace events using the trace visualizer
?
È possibile provare a visualizzare i log di testo non elaborati anziché le tracce OpenTelemetry.
In Application Insights la tabella 'Traces' archivia i log di testo non elaborati a scopo diagnostico. Consentono di identificare e correlare le tracce associate alle richieste degli utenti, ad altri eventi e ai report delle eccezioni. Tuttavia, la tabella 'Traces' non contribuisce direttamente alla visualizzazione delle transazioni end-to-end (grafico a cascata) negli strumenti di visualizzazione come Grafana.
Con l'adozione crescente delle procedure native del cloud, esiste un'evoluzione nella raccolta e nella terminologia dei dati di telemetria. OpenTelemetry è diventato uno standard per la raccolta e la strumentazione dei dati di telemetria. In questo contesto, il termine 'Traces' ha assunto un nuovo significato. Anziché ai log non elaborati, 'Traces' in OpenTelemetry fa riferimento a una forma più completa e strutturata di dati di telemetria che include intervalli, che rappresentano singole unità di lavoro. Questi intervalli sono fondamentali per la creazione di viste di transazioni dettagliate, consentendo un monitoraggio e una diagnostica migliori delle applicazioni native del cloud.
Risoluzione dei problemi
Passaggio 1: abilitare la registrazione diagnostica
L'utilità di esportazione del Monitoraggio di Azure utilizza EventSource per la registrazione interna. I log dell'utilità di esportazione sono disponibili per qualsiasi EventListener mediante il consenso esplicito all'origine denominata OpenTelemetry-AzureMonitor-Exporter
. Per conoscere i passaggi per la risoluzione dei problemi, vedere Risoluzione dei problemi OpenTelemetry su GitHub.
Passaggio 2: testare la connettività tra l'host dell'applicazione e il servizio di inserimento dati
Gli SDK e gli agenti di Application Insights inviano dati di telemetria per l'inserimento, ad esempio chiamate REST, agli endpoint di inserimento dati. Per testare la connettività dal server Web o dal computer host dell'applicazione con gli endpoint del servizio di inserimento dati, usare i comandi cURL o le richieste REST non elaborate da PowerShell. Per altre informazioni, vedere Risolvere i problemi di dati di telemetria mancanti delle applicazioni in Application Insights per Monitoraggio di Azure.
Problemi noti
Gli elementi seguenti sono problemi noti per le utilità di esportazione OpenTelemetry di Monitoraggio di Azure:
Nome dell'operazione mancante nei dati di telemetria delle dipendenze. La mancanza del nome dell'operazione causa errori e influisce negativamente sull'esperienza della scheda prestazioni.
Modello dispositivo mancante nei dati di telemetria delle richieste e delle dipendenze. La mancanza del modello dispositivo influisce negativamente sull'analisi della coorte del dispositivo.
Supporto tecnico
Selezionare la scheda del linguaggio scelto per scoprire le opzioni di supporto.
- Per i problemi relativi al supporto di Azure, aprire un ticket di supporto tecnico di Azure.
- Per i problemi relativi a 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.
Feedback su OpenTelemetry
Per inviare un feedback:
- Compilare il questionario feedback clienti della community OpenTelemetry.
- Raccontare di sé a Microsoft unendosi alla Community Early Adopter di OpenTelemetry.
- Interagire con altri utenti di Monitoraggio di Azure nella Microsoft Tech Community.
- Inviare una richiesta relativa alle funzionalità nel forum feedback di Azure.