Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek obsahuje přehled konfigurace sady Azure SDK pro Javu pro integraci funkcí trasování.
Trasování můžete povolit v Azure klientských knihovnách pomocí sady OpenTelemetry SDK nebo pomocí agenta kompatibilního s OpenTelemetry. OpenTelemetry je oblíbená opensourcová architektura pozorovatelnosti pro generování, zachytávání a shromažďování telemetrických dat pro software nativní pro cloud.
Dva klíčové koncepty související s trasováním jsou rozsah a trasování. Úsek představuje jednu operaci ve sledování. Rozsah může představovat požadavek HTTP, vzdálené volání procedur (RPC), databázový dotaz nebo dokonce cestu, kterou váš kód přebírá. Trasování je strom rozpětí zobrazující cestu práce v systému. Jedinečná posloupnost 16 bajtů označovaná jako TraceID rozlišuje trasování. Další informace o těchto konceptech a o tom, jak souvisí s OpenTelemetry, najdete v dokumentaci k OpenTelemetry.
Trasování sady Azure SDK s využitím agenta Java služby Azure Monitor
Pomocí agenta v procesu v Javě služby Azure Monitor můžete povolit monitorování aplikací bez jakýchkoli změn kódu. Další informace najdete v tématu Automatická instrumentace založená na technologii OpenTelemetry v Azure Monitoru pro Java aplikace. Podpora sady Azure SDK je ve výchozím nastavení povolená od agenta verze 3.2.
trasování Azure SDK pomocí agenta OpenTelemetry
Pokud používáte agenta OpenTelemetry Java, Azure SDK instrumentace je povolená od verze 1.12.0.
Další podrobnosti o konfiguraci exportérů, přidání ruční instrumentace nebo obohacení telemetrie najdete v tématu OpenTelemetry Instrumentation for Java.
Poznámka:
Artefakt agenta OpenTelemetry je stabilní, ale nezaručuje stabilitu telemetrie při přenosu. Tato podmínka může způsobit, že se názvy spanů a názvy atributů generované sadou Azure SDK budou v průběhu času měnit, pokud aktualizujete agenta. Další informace najdete v části Kompatibilní požadavky.
Ruční instrumentace aplikace pomocí sady OpenTelemetry SDK (Preview)
Pokud používáte sadu OpenTelemetry SDK přímo, nezapomeňte nakonfigurovat sadu SDK a exportér pro back-end podle vašeho výběru. Další informace najdete v dokumentaci OpenTelemetry.
Pokud chcete povolit trasování sady Azure SDK, přidejte do aplikace aktuální com.azure:azure-core-tracing-opentelemetry balíčky. Například v Mavenu přidejte do souboru pom.xml následující položku:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-core-tracing-opentelemetry</artifactId>
</dependency>
Pokud teď aplikaci spustíte, měli byste na backendu získat segmenty Azure SDK. U asynchronních volání ale může dojít k přerušení korelace mezi Azure SDK a rozsahy aplikací.
Ve výchozím nastavení Azure SDK používá io.opentelemetry.context.Context.current() implicitně propagovaný OpenTelemetry, který slouží jako nadřazený prvek pro nové úseky. V asynchronních voláních se implicitní šíření kontextu přeruší. Agenti OpenTelemetry tento problém řeší tím, že pomáhají rozšířit kontext, ale sada OpenTelemetry SDK takové funkce nemá.
Explicitně předat kontext sledování
Azure SDK umožňuje explicitně předat kontext trasování prostřednictvím com.azure.core.util.Contexttrace-context klíče. Když zadáte explicitní kontext trasování, sada Azure SDK ho použije místo implicitního kontextu, což umožňuje korelaci mezi aplikací a sadou Azure SDK.
V následujícím příkladu se při ručním trasování příchozího webového požadavku volá klientská knihovna konfigurace aplikace asynchronně v oboru tohoto požadavku.
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))
//...
Konvence trasování sady Azure SDK
Abyste zjistili, které rozsahy a atributy SDK emituje, podívejte se na specifikaci sémantických konvencí Azure SDK. Azure SDK (a OpenTelemetry) sémantické konvence nejsou stabilní a můžou se v budoucnu měnit.
Další kroky
Teď, když jste obeznámeni se základní průřezovou funkcionalitou v sadě Azure SDK pro Javu, podívejte se na Ověřování Azure pomocí Javy a Azure Identity, kde zjistíte, jak můžete vytvářet zabezpečené aplikace.