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 la traccia nelle librerie client di Azure usando e configurando OpenTelemetry SDK o usando 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.
Esistono due concetti chiave correlati alla traccia: 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. È possibile distinguere una traccia autonomamente da una sequenza a 16 byte univoca denominata TraceID. 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 Azure Monitor
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 Azure Monitor per le applicazioni Java. Il supporto di Azure SDK è abilitato per impostazione predefinita a partire dalla versione 3.2 dell'agente.
Traccia delle chiamate di Azure SDK con l'agente OpenTelemetry
Se usi l'agente Java OpenTelemetry, la strumentazione di Azure SDK è abilitata fin 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 fornisce garanzie di stabilità di telemetria over-the-wire, che possono causare nomi di intervalli e nomi di attributi prodotti da Azure SDK che potrebbero cambiare nel tempo 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 gli intervalli di applicazioni può 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.