Java için Azure SDK'da izlemeyi yapılandırma

Bu makalede, izleme işlevselliğini tümleştirmek üzere Java için Azure SDK'sını yapılandırmaya yönelik genel bir bakış sağlanır.

OpenTelemetry SDK'sını kullanarak ve yapılandırarak veya OpenTelemetry uyumlu bir aracı kullanarak Azure istemci kitaplıklarında izlemeyi etkinleştirebilirsiniz. OpenTelemetry, bulutta yerel yazılımlar için telemetri verileri oluşturmaya, yakalamaya ve toplamaya yönelik popüler bir açık kaynak gözlemlenebilirlik çerçevesidir.

İzlemeyle ilgili iki temel kavram vardır: span ve izleme. Span, izlemedeki tek bir işlemi temsil eder. Yayılma alanı bir HTTP isteğini, uzaktan yordam çağrısını (RPC), veritabanı sorgusunu ve hatta kodunuzun izlediği yolu temsil edebilir. İzleme, bir sistem üzerinden çalışmanın yolunu gösteren bir yayma ağacıdır. İzlemeyi tek başına TraceID adlı benzersiz bir 16 baytlık diziyle ayırt edebilirsiniz. Bu kavramlar ve Bunların OpenTelemetry ile ilişkisi hakkında daha fazla bilgi için OpenTelemetry belgelerine bakın.

Azure İzleyici Java aracısı ile Azure SDK izleme

Azure İzleyici Java işlem içi aracısını kullanarak, kod değişikliği yapmadan uygulamalarınızın izlenmesini etkinleştirebilirsiniz. Daha fazla bilgi için bkz . Java uygulamaları için Azure İzleyici OpenTelemetry tabanlı otomatik izleme. Azure SDK desteği, aracı sürüm 3.2'den başlayarak varsayılan olarak etkindir.

OpenTelemetry aracısı ile Azure SDK çağrılarını izleme

OpenTelemetry Java aracısını kullanıyorsanız, Azure SDK izlemesi 1.12.0 sürümünden itibaren kullanıma hazır olarak etkinleştirilir.

Dışarı aktarıcıları yapılandırma, el ile izleme ekleme veya telemetriyi zenginleştirme hakkında daha fazla bilgi için bkz . Java için OpenTelemetry Instrumentation.

Dekont

OpenTelemetry aracısı yapıtı kararlıdır, ancak kablo üzerinden telemetri kararlılığı garantileri sağlamaz. Bu garantiler Azure SDK tarafından üretilen ve aracıyı güncelleştirirseniz zaman içinde değişebilecek span adlarına ve öznitelik adlarına neden olabilir. Daha fazla bilgi için bkz . Uyumluluk gereksinimleri.

Uygulamayı OpenTelemetry SDK ile el ile izleme (önizleme)

OpenTelemetry SDK'sını doğrudan kullanıyorsanız SDK ve dışarı aktarmayı tercih ettiğiniz arka uç için yapılandırdığınızdan emin olun. Daha fazla bilgi için OpenTelemetry belgelerine bakın.

Azure SDK izlemeyi etkinleştirmek için uygulamanıza en son com.azure:azure-core-tracing-opentelemetry paketleri ekleyin. Örneğin, Maven'da pom.xml dosyanıza aşağıdaki girdiyi ekleyin:

<dependency>
  <groupId>com.azure</groupId>
  <artifactId>azure-core-tracing-opentelemetry</artifactId>
</dependency>

Uygulamayı şimdi çalıştırıyorsanız arka ucunuzda Azure SDK'sı spans'ı almanız gerekir. Ancak zaman uyumsuz çağrılarda Azure SDK ile uygulama yayılma alanları arasındaki bağıntı kesilebilir.

Varsayılan olarak Azure SDK io.opentelemetry.context.Context.current(), openTelemetry tarafından örtük olarak yeni yayılmalara üst öğe olarak yayılır. Zaman uyumsuz çağrılarda örtük bağlam yayma sonları. OpenTelemetry aracıları bağlamın yayılmasına yardımcı olarak bu sorunu çözer, ancak OpenTelemetry SDK'sı bu özelliklere sahip değildir.

İzleme bağlamı açıkça geçirme

Azure SDK, izleme bağlamını anahtarın altından açıkça geçirmenize com.azure.core.util.Contexttrace-context olanak tanır. Açık izleme bağlamı sağladığınızda Azure SDK, uygulama ile Azure SDK'sı yayılma alanları arasında bağıntıya olanak tanıyan örtük bağlam yerine bunu kullanır.

Aşağıdaki örnekte, gelen bir web isteği el ile izlendiğinde, Uygulama Yapılandırması İstemci Kitaplığı bu isteğin kapsamında zaman uyumsuz olarak çağrılır.

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))

//...

Azure SDK izleme kuralları

SDK'nın hangi yayılma aralıklarını ve öznitelikleri yaydığı öğrenmek için bkz . Azure SDK anlam kuralları belirtimi. Azure SDK (ve OpenTelemetry) semantik kuralları kararlı değildir ve gelecekte değişebilir.

Sonraki adımlar

Java için Azure SDK'daki temel çapraz kesme işlevselliğini öğrendiğinize göre güvenli uygulamalar oluşturmayı öğrenmek için bkz . Java ve Azure Identity ile Azure kimlik doğrulaması.