Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo offre una panoramica di come configurare Azure SDK per Java per integrare la funzionalità di traccia.
È possibile abilitare il tracciamento nelle librerie client di Azure utilizzando e configurando l'SDK OpenTelemetry oppure utilizzando un agente compatibile con OpenTelemetry. OpenTelemetry è un diffuso framework di osservabilità open source per la generazione, l'acquisizione e la raccolta di dati di telemetria per il software nativo del cloud.
Due concetti chiave correlati alla traccia sono span e trace. Un intervallo rappresenta una singola operazione in una traccia. Un intervallo può rappresentare una richiesta HTTP, una chiamata di procedura remota (RPC), una query di database o anche il percorso che il codice accetta. Una traccia è un albero di segmenti che mostra il percorso di lavoro attraverso un sistema. Una sequenza univoca a 16 byte denominata TraceID distingue una traccia. Per altre informazioni su questi concetti e su come sono correlati a OpenTelemetry, vedere la documentazione di OpenTelemetry.
Tracciamento di Azure SDK con l'agente Java di Monitoraggio di Azure
Usando un agente Java in-process di Monitoraggio di Azure, è possibile abilitare il monitoraggio delle applicazioni senza modifiche al codice. Per ulteriori informazioni, vedere Strumentazione automatica basata su OpenTelemetry di Monitoraggio di Azure per le applicazioni Java. Il supporto di Azure SDK è abilitato per impostazione predefinita a partire dalla versione 3.2 dell'agente.
Tracciamento di Azure SDK con l'agente OpenTelemetry
Se si utilizza OpenTelemetry Java agent, la strumentazione di Azure SDK è abilitata a partire dalla versione 1.12.0.
Per ulteriori dettagli su come configurare gli esportatori, aggiungere strumentazione manuale o arricchire la telemetria, vedere Strumentazione OpenTelemetry per Java.
Nota
L'artefatto dell'agente OpenTelemetry è stabile, ma non offre garanzie di stabilità di telemetria over-the-wire. Questa condizione potrebbe causare la modifica, con il tempo, dei nomi degli span e dei nomi degli attributi prodotti da Azure SDK se si aggiorna l'agente. Per ulteriori informazioni, vedere Requisiti di compatibilità.
Instrumentare manualmente l'applicazione con OpenTelemetry SDK (anteprima)
Se si usa direttamente OpenTelemetry SDK, assicurarsi di configurare l'SDK e l'utilità di esportazione per il back-end preferito. Per altre informazioni, vedere la documentazione di OpenTelemetry.
Per abilitare la traccia di Azure SDK, aggiungi i pacchetti più recenti com.azure:azure-core-tracing-opentelemetry alla tua applicazione. Ad esempio, in Maven aggiungere la voce seguente al file pom.xml :
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-core-tracing-opentelemetry</artifactId>
</dependency>
Se esegui ora l'applicazione, dovresti ottenere gli spans di Azure SDK sul backend. Tuttavia, con chiamate asincrone, la correlazione tra Azure SDK e intervalli di applicazioni potrebbe essere interrotta.
Per impostazione predefinita, Azure SDK utilizza `io.opentelemetry.context.Context.current()`, propagato implicitamente da OpenTelemetry, come elemento padre per i nuovi span. Nelle chiamate asincrone, la propagazione implicita del contesto si interrompe. Gli agenti OpenTelemetry risolveranno questo problema aiutando la propagazione del contesto, ma OpenTelemetry SDK non dispone di tali funzionalità.
Passare il contesto di traccia in modo esplicito
Azure SDK consente di passare esplicitamente il contesto di traccia attraverso com.azure.core.util.Context sotto la chiave trace-context. Quando si specifica un contesto di traccia esplicito, Azure SDK lo usa invece di quello implicito, che abilita la correlazione tra l'applicazione e gli intervalli di Azure SDK.
Nell'esempio seguente, quando una richiesta Web in ingresso viene tracciata manualmente, la libreria client di configurazione dell'applicazione viene chiamata in modo asincrono nell'ambito di questa richiesta.
Span span = TRACER.spanBuilder("incoming request").startSpan();
io.opentelemetry.context.Context traceContext = io.opentelemetry.context.Context.root().with(span);
// Put the incoming-request span (wrapped into the OpenTelemetry Context) into the Azure SDK Context
// and pass it over to the Application Configuration call.
appConfigClient.setConfigurationSettingWithResponse(settings, true, new com.azure.core.util.Context("trace-context", traceContext));
// You could also pass the context using the reactor `contextWrite` method under the same `trace-context` key.
appConfigAsyncClient.setConfigurationSettingWithResponse(settings)
.contextWrite(reactor.util.context.Context.of("trace-context", traceContext))
//...
Convenzioni di monitoraggio di Azure SDK
Per informazioni sugli intervalli e gli attributi generati dall'SDK, vedere la specifica delle convenzioni semantiche di Azure SDK. le convenzioni semantiche di Azure SDK (e OpenTelemetry) non sono stabili e potrebbero cambiare in futuro.
Passaggi successivi
Ora che sei familiare con le funzionalità trasversali di base nell'Azure SDK per Java, consulta Autenticazione di Azure con Java e Identità di Azure per imparare a creare applicazioni sicure.