Azure Izleyici Java uygulamaları için Opentelemetri tabanlı otomatik izleme
Bu makalede, Opentelemetri tabanlı Azure Izleyici Java teklifini etkinleştirme ve yapılandırma açıklanmaktadır. bu makaledeki yönergeleri tamamladıktan sonra, uygulamanızı izlemek için Azure izleyici Application Insights kullanabilirsiniz.
başlarken
Java otomatik izleme, herhangi bir kod değişikliği yapılmadan etkinleştirilebilir.
Önkoşullar
- Java 8 + kullanan Java uygulaması
- Azure aboneliği: ücretsiz bir Azure aboneliği oluşturun
- kaynak Application Insights: Application Insights kaynak oluşturma
Azure izleyici Application Insights etkinleştirme
Bu bölümde, otomatik izleme jar dosyasının nasıl indirileceği gösterilmektedir.
Jar dosyasını indirin
Applicationinsights-Agent-3.2.3. jar dosyasını indirin.
Uyarı
3,0 Preview sürümünden yükseltme yapıyorsanız:
- Tüm yapılandırma seçeneklerini dikkatle gözden geçirin. JSON yapısı tamamen değişti. Dosya adı artık tümü küçük harfle yazılmalıdır.
3.0. x sürümünden yükseltme yapıyorsanız:
- İşlem adlarına ve istek telemetri adlarına artık, ve gibi HTTP yöntemi ön eki eklenir
GETPOST. Bu değişiklik, önceki değerlere güveniyorsa özel panoları veya uyarıları etkileyebilir. Ayrıntılar için bkz. 3.1.0 sürüm notları.
3.1. x sürümünden yükseltme yapıyorsanız:
- Veritabanı bağımlılığı adları artık alanında hala mevcut olan tam (ayıklanmış) sorgu ile daha kısa
data. HTTP bağımlılığı adları artık daha açıklayıcı. Bu değişiklik, önceki değerlere güveniyorsa özel panoları veya uyarıları etkileyebilir. Ayrıntılar için bkz. 3.2.0 sürüm notları.
JVM 'yi jar dosyasına işaret edin
-javaagent:path/to/applicationinsights-agent-3.2.3.jarUygulamanızın JVM args öğesine ekleyin.
İpucu
uygulamanızın jvm bağımsız değişkenlerini yapılandırmayla ilgili yardım için bkz. jvm bağımsız değişkenlerini güncelleştirmek için İpuçları.
Application Insights bağlantı dizesini ayarla
jar dosyasını Application Insights kaynağına iki şekilde işaret edebilirsiniz:
Bir ortam değişkeni ayarlayabilirsiniz:
APPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentationKey=...İsterseniz adlı bir yapılandırma dosyası da oluşturabilirsiniz
applicationinsights.json. Aşağıdaki içerikle aynı dizine yerleştirinapplicationinsights-agent-3.2.3.jar:{ "connectionString": "InstrumentationKey=..." }
Application Insights kaynağınızın bağlantı dizesini bulun.
Verilerin akışını Onayla
uygulamanızı çalıştırın ve Azure portal Application Insights kaynak sekmelerinizi açın. Verilerin portalda gösterilmesi birkaç dakika sürebilir.
Not
Uygulamayı çalıştıramıyorum veya verileri beklenen şekilde alamıyorsanız, sorun giderme bölümüne bakın.
Önemli
aynı Application Insights kaynağına telemetri sunan iki veya daha fazla hizmet varsa, bulut rolü adlarını uygulama eşlemesinde doğru şekilde temsil edecek şekilde ayarlamanız gerekir.
Application Insights izleme kullanmanın bir parçası olarak, tanılama verilerini toplayıp Microsoft 'a göndereceğiz. bu veriler Application Insights çalıştırıp iyileştirmemize yardımcı olur. Gereksiz veri toplamayı devre dışı bırakma seçeneğiniz vardır. daha fazla bilgi için bkz. Azure Application Insights 'de hazırlama.
Yapılandırma seçenekleri
applicationinsights.jsonDosyasında, bu ayarları da yapılandırabilirsiniz:
- Bulut rolü adı
- Bulut rolü örneği
- Örnekleme
- JMX ölçümleri
- Özel boyutlar
- Telemetri işlemcileri (Önizleme)
- Oto toplanan günlüğe kaydetme
- Spring Boot çalıştırıcı ölçümlerini içeren, oto toplanmış mikro ölçüm ölçümleri
- Sinyal
- HTTP proxy 'si
- Kendi kendine tanılama
Daha fazla bilgi için bkz. yapılandırma seçenekleri.
İzleme kitaplıkları
Java 3. x, aşağıdaki izleme kitaplıklarını içerir.
Oto toplanan istekler
- JMS tüketicileri
- Kafka tüketicileri
- Netty/Webflox
- Servi sağlar
- Yay zamanlaması
Oto toplanan bağımlılıklar
Oto toplanan bağımlılıklar ve aşağı akış dağıtılmış izleme yayma:
- Apache HttpClient
- Apache HttpAsyncClient
- AsyncHttpClient
- Google HttpClient
- gRPC
- Java. net. HttpURLConnection
- Java 11 HttpClient
- JAX-RS istemcisi
- Jetty HttpClient
- JMS
- Kafka
- Netty istemcisi
- OkHttp
Yukarı akış dağıtılmış izleme yayma olmadan oto toplanan Bağımlılıklar:
- Cassandra
- JDBC
- MongoDB (Async ve Sync)
- Redsıs (Lettuce ve Jedsıs)
Oto toplanan Günlükler
- Java. util. Logging
- Log4J, MDC özelliklerini içerir
- MDC özelliklerini içeren DOLAYıSıYLA SLF4J/Logback
Oto toplanan ölçümler
- Spring Boot çalıştırıcı ölçümlerini içeren mikro ölçüm
- JMX ölçümleri
Azure SDK’ları
Bu Azure SDK 'Ları tarafından yayılan telemetri varsayılan olarak tekrar toplanır:
- Azure Uygulama yapılandırması 1.1.10 +
- Azure bilişsel arama 11.3.0 +
- Azure Iletişim sohbeti 1.0.0 +
- Azure Communication ortak 1.0.0 +
- Azure Iletişim kimliği 1.0.0 +
- Azure iletişim Telefon numaraları 1.0.0 +
- Azure ILETIŞIM SMS 1.0.0 +
- Azure Cosmos DB 4.13.0 +
- Azure dijital TWINS-çekirdek 1.1.0 +
- Azure Event Grid 4.0.0 +
- Azure Event Hubs 5.6.0 +
- azure Event Hubs-azure Blob Depolama kontrol noktası deposu 1.5.1 +
- Azure form tanıyıcı 3.0.6 +
- Azure Identity 1.2.4 +
- Azure Key Vault-sertifikalar 4.1.6 +
- Azure Key Vault-Keys 4.2.6 +
- Azure Key Vault-gizlilikler 4.2.6 +
- Azure Service Bus 7.1.0 +
- Azure Depolama-bloblar 12.11.0 +
- Azure Depolama-bloblar Batch 12.9.0 +
- Azure Depolama-bloblar şifreleme 12.11.0 +
- Azure Depolama-ortak 12.11.0 +
- Azure Depolama-dosyalar Data Lake 12.5.0 +
- Azure Depolama-dosya paylaşımları 12.9.0 +
- Azure Depolama-kuyruklar 12.9.0 +
- Azure metin analizi 5.0.4 +
Telemetriyi değiştirme
Bu bölümde telemetri değiştirme açıklanmaktadır.
Span öznitelikleri ekleme
opentelemetry-apiYayılmaları öznitelikleri eklemek için ' i kullanabilirsiniz. Bu öznitelikler, telemetrinize özel bir iş boyutu eklemeyi içerebilir. ayrıca, Application Insights şemasında, kullanıcı kimliği veya istemci ıp 'si gibi isteğe bağlı alanlar ayarlamak için özniteliklerini de kullanabilirsiniz.
Özel boyut ekleyin
Bir veya daha fazla özel boyut eklendiğinde, istekler, bağımlılıklar veya özel durumlar tablosundaki Customdimensions alanı doldurulur.
Not
Bu özellik yalnızca 3.2.0 ve üzeri sürümlerde bulunur.
opentelemetry-api-1.6.0.jarUygulamanıza ekleyin:<dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-api</artifactId> <version>1.6.0</version> </dependency>Kodunuzda özel boyutlar ekleyin:
import io.opentelemetry.api.trace.Span; Span.current().setAttribute("mycustomdimension", "myvalue1");
Kullanıcı KIMLIĞINI ayarlama
İstek, bağımlılıklar veya özel durumlar tablosundaki Kullanıcı kimliği alanını doldurun.
Önemli
Kimliği doğrulanmış kullanıcı KIMLIĞINI ayarlamadan önce ilgili gizlilik yasaları 'na başvurun.
Not
Bu özellik yalnızca 3.2.0 ve üzeri sürümlerde bulunur.
opentelemetry-api-1.6.0.jarUygulamanıza ekleyin:<dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-api</artifactId> <version>1.6.0</version> </dependency>user_IdKodunuzda ayarlayın:import io.opentelemetry.api.trace.Span; Span.current().setAttribute("enduser.id", "myuser");
İzleme KIMLIĞINI veya yayılma KIMLIĞINI al
opentelemetry-apiIzleme kimliğini veya YAYıLMA kimliğini almak için kullanabilirsiniz. Bu işlem, sorunları ayıklarken ve tanılamak için bu tanımlayıcıları mevcut günlüğe kaydetme telemetrisine eklemek üzere yapılabilir.
Not
Bu özellik yalnızca 3.2.0 ve üzeri sürümlerde bulunur.
opentelemetry-api-1.6.0.jarUygulamanıza ekleyin:<dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-api</artifactId> <version>1.6.0</version> </dependency>Kodunuzda istek izleme KIMLIĞINI ve yayılma KIMLIĞINI alın:
import io.opentelemetry.api.trace.Span; String traceId = Span.current().getSpanContext().getTraceId(); String spanId = Span.current().getSpanContext().getSpanId();
Özel telemetri
Application Insights Java 3. x içindeki amacınız, standart apı 'leri kullanarak özel telemetrinizi göndermenizi sağlamaktır.
şu anda mikro ölçer, popüler günlük çerçeveleri ve Java 2. x SDK Application Insights destekliyoruz. Application Insights Java 3. x, bu apı 'ler aracılığıyla gönderilen telemetriyi otomatik olarak yakalar ve otomatik toplanan telemetriyle ilişkilendirir.
Desteklenen özel telemetri
Aşağıdaki tablo, Java 3. x aracısını tamamlamak için etkinleştirebileceğiniz, şu anda desteklenen özel telemetri türlerini temsil eder. Özetlemek gerekirse:
- Özel ölçümler mikro ölçüm aracılığıyla desteklenir.
- Özel özel durumlar ve izlemeler günlüğe kaydetme çerçeveleri aracılığıyla desteklenir.
- Özel İstekler, bağımlılıklar ve özel durumlar aracılığıyla desteklenir
opentelemetry-api. - herhangi bir özel telemetri türü, Java 2. x SDK Application Insightsaracılığıyla desteklenir.
| Özel telemetri türü | Micrometer | Log4J, logback, Tem | 2. x SDK | opentelemetri-API |
|---|---|---|---|---|
| Özel olaylar | Yes | |||
| Özel ölçümler | Yes | Yes | ||
| Bağımlılıklar | Yes | Yes | ||
| Özel durumlar | Yes | Yes | Yes | |
| Sayfa görünümleri | Yes | |||
| İstekler | Yes | Yes | ||
| İzlemeler | Yes | Yes |
şu anda bir SDK 'yı Application Insights 3. x ile yayınlama planlanıyoruz.
Application Insights java 3. x, Application Insights java 2. x SDK 'sına gönderilen telemetriyi zaten dinliyor. Bu işlevsellik, var olan 2. x kullanıcıları için yükseltme hikayesinin önemli bir parçasıdır. Ayrıca, Opentelemetri API 'SI genel kullanıma sunulduğunda özel telemetri desteğimizde önemli bir boşluğu doldurur.
Mikro ölçüm kullanarak özel ölçümleri gönderme
Uygulamanıza mikro ölçüm ekleyin:
<dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-core</artifactId> <version>1.6.1</version> </dependency>Bir ölçüm oluşturmak için mikro ölçüm genel kayıt defteri 'ni kullanın:
static final Counter counter = Metrics.counter("test_counter");Ölçümleri kaydetmek için sayacı kullanın:
counter.increment();
En sevdiğiniz günlük çerçevesini kullanarak özel izlemeler ve özel durumlar gönderin
Log4J, Logback ve Java. util. Logging otomatik olarak işaretlenir. Bu günlüğe kaydetme çerçeveleri aracılığıyla gerçekleştirilen günlüğe kaydetme, izleme ve özel durum telemetrisi olarak toplanır.
Varsayılan olarak günlük kaydı yalnızca BILGI düzeyinde veya yukarıdaki günlüğe kaydetme gerçekleştirildiğinde toplanır. Bu düzeyi değiştirmek için yapılandırma seçeneklerinebakın.
Günlükleriniz için özel boyutlar eklemek istiyorsanız, Log4j 1,2 MDC, Log4J 2 MDCveya logback MDCkullanın. Application Insights Java 3. x, bu mdc özelliklerini, izleme ve özel durum telemetrinizde özel boyutlar olarak otomatik olarak yakalar.
2. x SDK kullanarak özel telemetri gönderme
applicationinsights-core-2.6.3.jarUygulamanıza ekleyin. tüm 2. x sürümleri Application Insights Java 3. x tarafından desteklenir. Seçeneğiniz varsa. en son sürümü kullanmaya değer:<dependency> <groupId>com.microsoft.azure</groupId> <artifactId>applicationinsights-core</artifactId> <version>2.6.3</version> </dependency>TelemetryClient oluşturun:
static final TelemetryClient telemetryClient = new TelemetryClient();Özel telemetri göndermek için istemcisini kullanın:
Ekinlikler
telemetryClient.trackEvent("WinGame");Ölçümler
telemetryClient.trackMetric("queueLength", 42.0);Bağımlılıklar
boolean success = false; long startTime = System.currentTimeMillis(); try { success = dependency.call(); } finally { long endTime = System.currentTimeMillis(); RemoteDependencyTelemetry telemetry = new RemoteDependencyTelemetry(); telemetry.setSuccess(success); telemetry.setTimestamp(new Date(startTime)); telemetry.setDuration(new Duration(endTime - startTime)); telemetryClient.trackDependency(telemetry); }Günlükler
telemetryClient.trackTrace(message, SeverityLevel.Warning, properties);Özel durumlar
try { ... } catch (Exception e) { telemetryClient.trackException(e); }
Sorun giderme
Sorun giderme konusunda yardım için bkz. sorun giderme.
Destek
Destek almak için:
- Sorun gidermeye yönelik yardım için sorun giderme adımlarınıgözden geçirin.
- Azure destek sorunları için bir Azure destek biletiaçın.
- Opentelemetri sorunları için doğrudan opentelemetri topluluğuyla iletişim kurun.
Opentelemetri geri bildirimi
Geri bildirim sağlamak için:
- Opentelemetri topluluğunun müşteri geri bildirim anketinidoldurun.
- Opentelemetri erken benimseyen Communitykatılarak Microsoft 'un kendinize bilgi verin.
- Microsoft Tech Communitydiğer Azure izleyici kullanıcılarıyla birlikte katılın.
- Azure geri bildirim forumundanbir özellik isteği yapın.
Sonraki adımlar
- kaynak kodu gözden geçirmek için bkz. Azure izleyici Java otomatik izleme GitHub deposu.
- opentelemetri ve topluluğu hakkında daha fazla bilgi edinmek için opentelemetri Java GitHub deposunabakın.
- Kullanım deneyimlerini etkinleştirmek için bkz. Web veya tarayıcı Kullanıcı Izlemeyi etkinleştirme.