Java 2.x için Application Insights
Dikkat
Bu makale, artık önerilmemiş olan Application Insights Java 2.x için geçerlidir.
En son sürüme ilişkin belgeler Application Insights Java 3.x'te bulunabilir.
Bu makalede Application Insights Java 2.x'i kullanmayı öğreneceksiniz. Bu makale, şunları nasıl yapacağınızı gösterir:
- Başlarken istekleri izlemeyi, bağımlılıkları izlemeyi, performans sayaçlarını toplamayı, performans sorunlarını ve özel durumlarını tanılamayı ve kullanıcıların uygulamanızla ne yaptığını izlemek için kod yazmayı öğrenin.
- İzleme günlüklerini Application Insights'a gönderin ve Application Insights portalını kullanarak bunları keşfedin.
- Java web uygulamalarında bağımlılıkları, yakalanan özel durumları ve yöntem yürütme sürelerini izleyin.
- Java web uygulamanızda telemetriyi filtreleyin.
- kullanarak
collectd
Application Insights'ta Linux sistem performansı ölçümlerini keşfedin. - Java sanal makinesi (JVM) tabanlı uygulama kodu için ölçümleri ölçün. Mikrometre uygulama izlemesini kullanarak verileri sık kullandığınız izleme sistemlerine aktarın.
Not
31 Mart 2025’te izleme anahtarı alımı desteği sona erecektir. İzleme anahtarı alımı çalışmaya devam edecek, ancak artık özellik için güncelleştirmeler veya destek sağlamayacağız. Yeni özelliklerden yararlanmak için bağlantı dizelerine geçiş.
Java web projesinde Application Insights ile başlarken
Bu bölümde Application Insights SDK'sını istekleri izlemek, bağımlılıkları izlemek, performans sayaçlarını toplamak, performans sorunlarını ve özel durumlarını tanılamak ve kullanıcıların uygulamanızla ne yaptığını izlemek için kod yazmak için kullanırsınız.
Application Insights, web geliştiricileri için canlı uygulamanızın performansını ve kullanımını anlamanıza yardımcı olan genişletilebilir bir analiz hizmetidir. Application Insights; Linux, Unix veya Windows üzerinde çalışan Java uygulamalarını destekler.
Ön koşullar
Gerekenler:
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz bir hesap oluşturabilirsiniz.
- İşlevli bir Java uygulaması.
Application Insights izleme anahtarı edinme
Azure Portal’ında oturum açın.
Azure portalındabir Application Insights kaynağı oluşturun. Uygulama türünü Java web uygulaması olarak ayarlayın.
Yeni kaynağın izleme anahtarını bulun. Bu anahtarı hemen kod projenize yapıştırmalısınız.
Projenize Java için Application Insights SDK’sı ekleme
Proje türünüzü seçin.
Projeniz derleme için Maven kullanacak şekilde ayarlanmışsa aşağıdaki kodu pom.xml dosyanızla birleştirin. Daha sonra, proje bağımlılıklarını ikili dosyaları indirmek için yenileyin.
<dependencies>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-web-auto</artifactId>
<!-- or applicationinsights-web for manual web filter registration -->
<!-- or applicationinsights-core for bare API -->
<version>2.6.4</version>
</dependency>
</dependencies>
Sık sorulan sorular
,
-web
ve-core
bileşenleri arasındaki-web-auto
ilişki nedir?-
applicationinsights-web-auto
, Application Insights servlet filtresini çalışma zamanında otomatik olarak kaydederek HTTP servlet istek sayılarını ve yanıt sürelerini izleyen ölçümler sağlar. -
applicationinsights-web
ayrıca HTTP servlet istek sayılarını ve yanıt sürelerini izleyen ölçümler sağlar. Ancak uygulamanızda Application Insights servlet filtresinin el ile kaydedilmesi gerekir. -
applicationinsights-core
, örneğin uygulamanız servlet tabanlı değilse size çıplak API'yi verir.
-
SDK’yı en son sürüme nasıl güncelleştirmeliyim?
- Kasım 2020 itibarıyla Java uygulamalarını izlemek için Application Insights Java 3.x kullanmanızı öneririz. Kullanmaya başlama hakkında daha fazla bilgi için bkz. Application Insights Java 3.x.
ApplicationInsights.xml dosyası ekleme
projenizdeki resources klasörüneApplicationInsights.xmlekleyin veya projenizin dağıtım sınıfı yoluna eklendiğinden emin olun. Aşağıdaki XML dosyasını buraya kopyalayın.
ölçümlü izleme anahtarını, Azure portal alınanla değiştirin.
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings" schemaVersion="2014-05-30">
<!-- The key from the portal: -->
<InstrumentationKey>** Your instrumentation key **</InstrumentationKey>
<!-- HTTP request component (not required for bare API) -->
<TelemetryModules>
<Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebRequestTrackingTelemetryModule"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebSessionTrackingTelemetryModule"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebUserTrackingTelemetryModule"/>
</TelemetryModules>
<!-- Events correlation (not required for bare API) -->
<!-- These initializers add context data to each event -->
<TelemetryInitializers>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebOperationIdTelemetryInitializer"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebOperationNameTelemetryInitializer"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebSessionTelemetryInitializer"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebUserTelemetryInitializer"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebUserAgentTelemetryInitializer"/>
</TelemetryInitializers>
</ApplicationInsights>
İsteğe bağlı olarak, yapılandırma dosyası uygulamanızın erişebileceği herhangi bir konumda olabilir. sistem özelliği -Dapplicationinsights.configurationDirectory
,ApplicationInsights.xmliçeren dizini belirtir. Örneğin, E:\myconfigs\appinsights\ApplicationInsights.xml konumunda bulunan bir yapılandırma dosyası özelliğiyle -Dapplicationinsights.configurationDirectory="E:\myconfigs\appinsights"
yapılandırılabilir.
- İzleme anahtarı telemetrinin her öğesiyle birlikte gönderilir ve Application Insights’ın bunu kaynağınızda görüntülemesini isteyin.
- HTTP isteği bileşeni isteğe bağlıdır. İstek ve yanıt süreleri hakkında telemetriyi otomatik olarak portala gönderir.
- Olay bağıntısı, HTTP isteği bileşenine bir ektir. Sunucu tarafından alınan her isteğe bir tanımlayıcı atar. Ardından bu tanımlayıcıyı telemetrinin her öğesine özelliği
Operation.Id
olarak ekler. Tanılama aramasında bir filtre ayarlayarak her istekle ilişkili telemetriyi ilişkilendirmenizi sağlar.
İzleme anahtarını ayarlamak için alternatif yollar
Application Insights SDK’sı anahtarı şu sırayla arar:
- Sistem özelliği: -DAPPINSIGHTS_INSTRUMENTATIONKEY=your_ikey
- Ortam değişkeni: APPINSIGHTS_INSTRUMENTATIONKEY
- Yapılandırma dosyası: ApplicationInsights.xml
Ayrıca kod içinde ayarlayabilirsiniz:
String instrumentationKey = "00000000-0000-0000-0000-000000000000";
if (instrumentationKey != null)
{
TelemetryConfiguration.getActive().setInstrumentationKey(instrumentationKey);
}
Aracı ekleme
Giden HTTP çağrılarını, JDBC sorgularını, uygulama günlüğünü ve daha iyi işlem adlandırmasını yakalamak için Java aracısını yükleyin.
Uygulamanızı çalıştırma
Geliştirme makinenizde hata ayıklama modunda çalıştırın veya sunucunuzda yayımlayın.
Application Insights'da telemetrinizi görüntüleme
Azure portal Application Insights kaynağınıza dönün.
HTTP istekleri verileri genel bakış bölmesinde görüntülenir. Orada değilse, birkaç saniye bekleyin ve yenile'yi seçin.
Ölçümler hakkında daha fazla bilgi edinin.
Daha ayrıntılı derlenmiş ölçümler görmek için herhangi bir grafiğe tıklayın.
Örnek veriler
Ayrı ayrı örnekleri görmek için belirli bir istek türüne tıklayın.
Log Analytics: Güçlü sorgu dili
Daha fazla veri biriktirdikçe, verileri toplamak ve tek tek örnekleri bulmak için sorgular çalıştırabilirsiniz. Log Analytics , performansı ve kullanımı anlamak ve tanılama amacıyla kullanmak için güçlü bir araçtır.
Uygulamanızı sunucuya yükleme
Şimdi uygulamanızı sunucuda yayımlayın, kullanıcıların bunu kullanmasına izin verin ve telemetrinin portalda gösterilmesini izleyin.
Güvenlik duvarınızın, uygulamanıza şu bağlantı noktalarına telemetri göndermesine izin verdiğinden emin olun:
- dc.services.visualstudio.com:443
- f5.services.visualstudio.com:443
Giden trafiğin bir güvenlik duvarı üzerinden yönlendirilmesi gerekiyorsa ve sistem özelliklerini
http.proxyHost
http.proxyPort
tanımlayın.Windows sunucularda yüklenecekler:
Microsoft Visual C++ Redistributable
Bu bileşen performans sayaçlarını etkinleştirir.
Azure App Service, Azure Kubernetes Service, VM yapılandırması
Herhangi bir Azure kaynak sağlayıcısında çalışan uygulamalarınızı izlemek için en iyi ve en kolay yaklaşım Application Insights Java 3.x'i kullanmaktır.
Özel durumlar ve istek hataları
İşlenmeyen özel durumlar ve istek hataları Application Insights web filtresi tarafından otomatik olarak toplanır.
Diğer özel durumlarla ilgili veri toplamak için, kodunuzda trackException() çağrısı ekleyebilirsiniz.
Yöntem çağrılarını ve dış bağımlılıkları izleme
Java aracısını yükleyip belirtilen iç yöntemleri ve JDBC aracılığıyla yapılan çağrıları zamanlama verileriyle ve otomatik işlem adlandırma için günlüğe yükleyin.
W3C dağıtılmış izleme
Application Insights Java SDK'sı artık W3C dağıtılmış izlemeyi destekliyor.
Gelen SDK yapılandırması , Application Insights'ta Telemetri bağıntısında daha ayrıntılı olarak açıklanmıştır.
Giden SDK yapılandırması AI-Agent.xml dosyasında tanımlanır.
Performans sayaçları
Çeşitli performans sayaçlarını görmek için Ölçümleri Araştır'ı> seçin.
Performans sayacı koleksiyonunu özelleştirme
Standart performans sayaçları kümesinin toplanmasını devre dışı bırakmak için, ApplicationInsights.xml dosyasının kök düğümü altına aşağıdaki kodu ekleyin:
<PerformanceCounters>
<UseBuiltIn>False</UseBuiltIn>
</PerformanceCounters>
Daha fazla performans sayacı toplama
Toplanacak daha fazla performans sayacı belirtebilirsiniz.
JMX sayaçları (Java sanal makinesi tarafından kullanıma sunulur)
<PerformanceCounters>
<Jmx>
<Add objectName="java.lang:type=ClassLoading" attribute="TotalLoadedClassCount" displayName="Loaded Class Count"/>
<Add objectName="java.lang:type=Memory" attribute="HeapMemoryUsage.used" displayName="Heap Memory Usage-used" type="composite"/>
</Jmx>
</PerformanceCounters>
-
displayName
: Application Insights portalında görüntülenen ad. -
objectName
: JMX nesne adı. -
attribute
: Getirilecek JMX nesne adının özniteliği. -
type
(isteğe bağlı): JMX nesnesinin özniteliğinin türü:- Varsayılan: Int veya long gibi basit bir tür.
-
composite
: Performans sayacı verileri biçimindedirAttribute.Data
. -
tabular
: Performans sayacı verileri tablo satırı biçimindedir.
Windows performans sayaçları
Her Windows performans sayacı bir kategorinin üyesidir (alanın bir sınıf üyesi olması gibi). Kategoriler genel olabilir veya numaralandırılmış veya adlandırılmış örneklere sahip olabilir.
<PerformanceCounters>
<Windows>
<Add displayName="Process User Time" categoryName="Process" counterName="%User Time" instanceName="__SELF__" />
<Add displayName="Bytes Printed per Second" categoryName="Print Queue" counterName="Bytes Printed/sec" instanceName="Fax" />
</Windows>
</PerformanceCounters>
-
displayName
: Application Insights portalında görüntülenen ad. -
categoryName
: Bu performans sayacının ilişkilendirildiği performans sayacı kategorisi (performans nesnesi). -
counterName
: Performans sayacının adı. -
instanceName
: Kategori tek bir örnek içeriyorsa performans sayacı kategorisi örneğinin adı veya boş bir dize (""). isecategoryName
Process
ve toplamak istediğiniz performans sayacı uygulamanızın üzerinde çalıştığı geçerli JVM işlemindense belirtin"__SELF__"
.
Unix Performans sayaçları
Çok çeşitli sistem ve ağ verilerini almak için Application Insights eklentisiyle birlikte toplanan'ı yükleyin.
Kullanıcı ve oturum verilerini alma
Şimdi web sunucunuzdan telemetri gönderiyorsunuz. Uygulamanızın 360 derecelik tam görünümünü elde etmek için daha fazla izleme ekleyebilirsiniz:
- Sayfa görünümlerini ve kullanıcı ölçümlerini izlemek için web sayfalarınıza telemetri ekleyin.
- Uygulamanızın canlı ve duyarlı kaldığından emin olmak için web testleri oluşturun.
Kendi telemetrinizi gönderme
SDK'yı yüklediğinize göre api'yi kullanarak kendi telemetrinizi gönderebilirsiniz:
- Uygulamanızla kullanıcıların ne yaptıklarını öğrenmek için Özel olayları ve ölçümleri izleyin.
- Sorunların tanımlanması için Olayları ve günlükleri arayın.
Kullanılabilirlik web testleri
Kullanıma hazır ve düzgün yanıt verdiğini denetlemek için Application Insights belirli aralıklarla web sitenizi test edebilir.
Kullanılabilirlik web testlerini ayarlama hakkında daha fazla bilgi edinin.
Sorun giderme
Özel sorun giderme makalesine bakın.
Uygulama konağınızla alma hizmeti arasındaki bağlantıyı test etme
Application Insights SDK'ları ve aracıları, alma uç noktalarımıza REST çağrıları olarak almak için telemetri gönderir. PowerShell veya curl komutlarından ham REST istemcilerini kullanarak web sunucunuzdan veya uygulama konak makinenizden alım hizmeti uç noktalarına bağlantıyı test edebilirsiniz. Bkz . Azure İzleyici Application Insights'ta eksik uygulama telemetrisi sorunlarını giderme.
Application Insights'ta Java izleme günlüklerini keşfetme
İzleme için Logback veya Log4J (v1.2 veya v2.0) kullanıyorsanız, izleme günlüklerinizin otomatik olarak Application Insights'a gönderilmesini sağlayabilir ve burada bunları inceleyebilir ve arayabilirsiniz.
İpucu
Application Insights izleme anahtarınızı uygulamanız için yalnızca bir kez ayarlamanız gerekir. Java Spring gibi bir çerçeve kullanıyorsanız anahtarı uygulamanızın yapılandırmasının başka bir yerine zaten kaydetmiş olabilirsiniz.
Application Insights Java aracısını kullanma
Varsayılan olarak, Application Insights Java aracısı, gerçekleştirilen WARN
günlüğü otomatik olarak düzeyinde ve üstünde yakalar.
AI-Agent.xml dosyasını kullanarak yakalanan günlük kaydının eşiğini değiştirebilirsiniz:
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
<Instrumentation>
<BuiltIn>
<Logging threshold="info"/>
</BuiltIn>
</Instrumentation>
</ApplicationInsightsAgent>
AI-Agent.xml dosyasını kullanarak Java aracısının günlük yakalamasını devre dışı bırakabilirsiniz:
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
<Instrumentation>
<BuiltIn>
<Logging enabled="false"/>
</BuiltIn>
</Instrumentation>
</ApplicationInsightsAgent>
Alternatifler
Java aracısını kullanmak yerine bu yönergeleri izleyebilirsiniz.
Java SDK'sını yükleme
Henüz yapmadıysanız Java için Application Insights SDK'sını yüklemek için yönergeleri izleyin.
Projenize günlük kitaplıkları ekleme
Projeniz için uygun yolu seçin.
Maven
Projeniz derleme için Maven kullanacak şekilde ayarlanmışsa, aşağıdaki kod parçacıklarından birini pom.xml dosyanızla birleştirin. Daha sonra, proje bağımlılıklarını ikili dosyaları indirmek için yenileyin.
Geri Kaydetme
<dependencies>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-logging-logback</artifactId>
<version>[2.0,)</version>
</dependency>
</dependencies>
Log4J v2.0
<dependencies>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-logging-log4j2</artifactId>
<version>[2.0,)</version>
</dependency>
</dependencies>
Log4J v1.2
<dependencies>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-logging-log4j1_2</artifactId>
<version>[2.0,)</version>
</dependency>
</dependencies>
Gradle
Projeniz derleme için Gradle kullanacak şekilde ayarlanmışsa, build.gradle dosyanızdaki gruba aşağıdaki satırlardan dependencies
birini ekleyin. Daha sonra, proje bağımlılıklarını ikili dosyaları indirmek için yenileyin.
Geri Kaydetme
compile group: 'com.microsoft.azure', name: 'applicationinsights-logging-logback', version: '2.0.+'
Log4J v2.0
compile group: 'com.microsoft.azure', name: 'applicationinsights-logging-log4j2', version: '2.0.+'
Log4J v1.2
compile group: 'com.microsoft.azure', name: 'applicationinsights-logging-log4j1_2', version: '2.0.+'
Jar bağlantısını kullanma
Application Insights Java SDK'sını el ile yüklemek ve jar dosyasını indirmek için yönergeleri izleyin. Maven Central sayfasında, uygun ekleyicinin jar
indirme bölümündeki bağlantıyı seçin. İndirilen ekleyici jar dosyasını projeye ekleyin.
Günlükçü | İndir | Kitaplık |
---|---|---|
Geri Kaydetme | Günlük geri ekleme Jar | applicationinsights-logging-logback |
Log4J v2.0 | Log4J v2 ekleyici Jar | applicationinsights-logging-log4j2 |
Log4j v1.2 | Log4J v1.2 ekleyici Jar | applicationinsights-logging-log4j1_2 |
Ekleyiciyi günlük çerçevenize ekleme
İzlemeleri almaya başlamak için ilgili kod parçacığını Logback veya Log4J yapılandırma dosyasıyla birleştirin.
Geri Kaydetme
<appender name="aiAppender"
class="com.microsoft.applicationinsights.logback.ApplicationInsightsAppender">
<instrumentationKey>[APPLICATION_INSIGHTS_KEY]</instrumentationKey>
</appender>
<root level="trace">
<appender-ref ref="aiAppender" />
</root>
Log4J v2.0
<Configuration packages="com.microsoft.applicationinsights.log4j.v2">
<Appenders>
<ApplicationInsightsAppender name="aiAppender" instrumentationKey="[APPLICATION_INSIGHTS_KEY]" />
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="aiAppender"/>
</Root>
</Loggers>
</Configuration>
Log4J v1.2
<appender name="aiAppender"
class="com.microsoft.applicationinsights.log4j.v1_2.ApplicationInsightsAppender">
<param name="instrumentationKey" value="[APPLICATION_INSIGHTS_KEY]" />
</appender>
<root>
<priority value ="trace" />
<appender-ref ref="aiAppender" />
</root>
Application Insights ekleyicilerine, yukarıdaki kod örneklerinde gösterildiği gibi yapılandırılmış günlükçüler tarafından başvurulabilir ve kök günlükçü tarafından başvurulamamalıdır.
Application Insights portalında izlemelerinizi keşfetme
Projenizi Application Insights'a izleme gönderecek şekilde yapılandırdığınıza göre, bu izlemeleri Arama bölmesindeki Application Insights portalında görüntüleyebilir ve arayabilirsiniz.
Günlükçüler aracılığıyla gönderilen özel durumlar portalda Özel durum telemetrisi olarak görüntülenir.
Java web uygulamalarında bağımlılıkları, yakalanan özel durumları ve yöntem yürütme sürelerini izleme
Java web uygulamanızı Application Insights SDK'sı ile izlemeniz durumunda kod değişikliği yapmadan daha ayrıntılı içgörüler elde etmek için Java aracısını kullanabilirsiniz:
Bağımlılıklar: Uygulamanızın diğer bileşenlere yaptığı çağrılar hakkında veriler, örneğin:
-
Giden HTTP çağrıları: ,
OkHttp
vejava.net.HttpURLConnection
aracılığıylaApache HttpClient
yapılan çağrılar yakalanır. - Redis çağrıları: Jedis istemcisi aracılığıyla yapılan çağrılar yakalanır.
- JDBC sorguları: MySQL ve PostgreSQL için çağrı 10 saniyeden uzun sürerse aracı sorgu planını bildirir.
-
Giden HTTP çağrıları: ,
Uygulama günlüğü: Uygulama günlüklerinizi yakalayın ve HTTP istekleri ve diğer telemetri verileriyle ilişkilendirin:
- Log4j 1.2
- Log4j2
- Geri Dönme
Daha iyi işlem adlandırma: Portalda isteklerin toplanması için kullanılır.
-
İlkbahar: temel alınmaktadır
@RequestMapping
. -
JAX-RS: tabanlı
@Path
.
-
İlkbahar: temel alınmaktadır
Java aracısını kullanmak için sunucunuza yüklersiniz. Web uygulamalarınız Application Insights Java SDK'sı ile izlenmelidir.
Java için Application Insights aracısını yükleme
Java sunucunuzu çalıştıran makinede 2.x aracısını indirin. Kullandığınız 2.x Java aracısının sürümünün, kullandığınız 2.x Application Insights Java SDK'sının sürümüyle eşleştiğinden emin olun.
Uygulama sunucusu başlangıç betiğini düzenleyin ve aşağıdaki JVM bağımsız değişkenini ekleyin:
-javaagent:<full path to the agent JAR file>
Örneğin, Linux makinesindeki Tomcat'te:
export JAVA_OPTS="$JAVA_OPTS -javaagent:<full path to agent JAR file>"
Uygulama sunucunuzu yeniden başlatın.
Configure the agent
AI-Agent.xml adlı bir dosya oluşturun ve aracı jar dosyasıyla aynı klasöre yerleştirin.
XML dosyasının içeriğini ayarlayın. aşağıdaki örneği düzenleyerek istediğiniz özellikleri ekleyin veya atlayın.
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
<Instrumentation>
<BuiltIn enabled="true">
<!-- capture logging via Log4j 1.2, Log4j2, and Logback, default is true -->
<Logging enabled="true" />
<!-- capture outgoing HTTP calls performed through Apache HttpClient, OkHttp,
and java.net.HttpURLConnection, default is true -->
<HTTP enabled="true" />
<!-- capture JDBC queries, default is true -->
<JDBC enabled="true" />
<!-- capture Redis calls, default is true -->
<Jedis enabled="true" />
<!-- capture query plans for JDBC queries that exceed this value (MySQL, PostgreSQL),
default is 10000 milliseconds -->
<MaxStatementQueryLimitInMS>1000</MaxStatementQueryLimitInMS>
</BuiltIn>
</Instrumentation>
</ApplicationInsightsAgent>
Daha fazla yapılandırma (Spring Boot)
java -javaagent:/path/to/agent.jar -jar path/to/TestApp.jar
Azure App Service için şu adımları izleyin:
Ayarlar>Uygulama Ayarları'nı seçin.
Uygulama Ayarları'nın altında yeni bir anahtar değer çifti ekleyin:
-
Anahtar:
JAVA_OPTS
-
Değer:
-javaagent:D:/home/site/wwwroot/applicationinsights-agent-2.6.4.jar
Aracının D:/home/site/wwwroot/ dizininde bitmesi için projenizde bir kaynak olarak paketlenmiş olması gerekir. Aracınızın doğru App Service dizininde olduğunu doğrulamak için Geliştirme Araçları>Gelişmiş Araçlar>Hata Ayıklama Konsolu'na gidin ve site dizininin içeriğini inceleyin.
-
Anahtar:
Ayarları kaydedin ve uygulamanızı yeniden başlatın. Bu adımlar yalnızca Windows üzerinde çalışan uygulama hizmetleri için geçerlidir.
Not
AI-Agent.xml ve aracı jar dosyası aynı klasörde olmalıdır. Bunlar genellikle projenin /resources klasöründe bir araya getirilir.
W3C dağıtılmış izlemeyi etkinleştirme
aşağıdaki kod parçacığını AI-Agent.xmlekleyin:
<Instrumentation>
<BuiltIn enabled="true">
<HTTP enabled="true" W3C="true" enableW3CBackCompat="true"/>
</BuiltIn>
</Instrumentation>
Not
Geriye dönük uyumluluk modu varsayılan olarak etkindir.
enableW3CBackCompat
parametresi isteğe bağlıdır ve yalnızca kapatmak istediğinizde kullanılmalıdır.
İdeal olan, tüm hizmetlerinizin W3C protokolünü destekleyen SDK'ların daha yeni sürümlerine güncelleştirilmiş olmasıdır. W3C desteğine sahip SDK'ların en yeni sürümlerine en kısa sürede geçmenizi öneririz.
Hem gelen hem de giden (aracı) yapılandırmalarının tam olarak aynı olduğundan emin olun.
Verileri görüntüleme
Application Insights kaynağında, toplanan uzak bağımlılık ve yöntem yürütme süreleri Performans kutucuğu altında görünür.
Bağımlılık, özel durum ve yöntem raporlarının tek tek örneklerini aramak için Arama'yı açın.
Bağımlılık sorunlarını tanılama hakkında daha fazla bilgi edinin.
Sorularınız veya sorunlarınız mı var?
Aşağıdaki kaynakları kullanın:
Java web uygulamanızda telemetriyi filtreleme
Filtreler , Java web uygulamanızın Application Insights'a gönderdiği telemetriyi seçmek için bir yol sağlar. Kullanabileceğiniz bazı kullanıma dışı filtreler vardır. Kendi özel filtrelerinizi de yazabilirsiniz.
Kullanıma açılan filtreler şunlardır:
- İzleme önem düzeyi.
- Belirli URL'ler, anahtar sözcükler veya yanıt kodları.
- Hızlı yanıtlar. Başka bir deyişle, uygulamanızın hızla yanıt verdiği istekler.
- Belirli olay adları.
Not
Filtreler uygulamanızın ölçümlerini çarpıtır. Örneğin, yavaş yanıtları tanılamak için hızlı yanıt sürelerini atacak bir filtre ayarlayabilirsiniz. Ancak Application Insights tarafından bildirilen ortalama yanıt sürelerinin gerçek hızdan daha yavaş olacağını bilmeniz gerekir. Ayrıca, isteklerin sayısı gerçek sayıdan daha küçük olacaktır.
Sorun buysa, bunun yerine Örnekleme'yi kullanın.
Filtreleri ayarlama
ApplicationInsights.xmliçinde, aşağıdaki örneğe benzer bir TelemetryProcessors
bölüm ekleyin:
<ApplicationInsights>
<TelemetryProcessors>
<BuiltInProcessors>
<Processor type="TraceTelemetryFilter">
<Add name="FromSeverityLevel" value="ERROR"/>
</Processor>
<Processor type="RequestTelemetryFilter">
<Add name="MinimumDurationInMS" value="100"/>
<Add name="NotNeededResponseCodes" value="200-400"/>
</Processor>
<Processor type="PageViewTelemetryFilter">
<Add name="DurationThresholdInMS" value="100"/>
<Add name="NotNeededNames" value="home,index"/>
<Add name="NotNeededUrls" value=".jpg,.css"/>
</Processor>
<Processor type="TelemetryEventFilter">
<!-- Names of events we don't want to see -->
<Add name="NotNeededNames" value="Start,Stop,Pause"/>
</Processor>
<!-- Exclude telemetry from availability tests and bots -->
<Processor type="SyntheticSourceFilter">
<!-- Optional: specify which synthetic sources,
comma-separated
- default is all synthetics -->
<Add name="NotNeededSources" value="Application Insights Availability Monitoring,BingPreview"
</Processor>
</BuiltInProcessors>
<CustomProcessors>
<Processor type="com.fabrikam.MyFilter">
<Add name="Successful" value="false"/>
</Processor>
</CustomProcessors>
</TelemetryProcessors>
</ApplicationInsights>
Yerleşik işlemcilerin tam kümesini inceleyin.
Yerleşik filtreler
Bu bölümde, kullanılabilen yerleşik filtreler ele alınmaktadır.
Ölçüm Telemetri filtresi
<Processor type="MetricTelemetryFilter">
<Add name="NotNeeded" value="metric1,metric2"/>
</Processor>
-
NotNeeded
: Özel ölçüm adlarının virgülle ayrılmış listesi
Sayfa Görünümü Telemetri filtresi
<Processor type="PageViewTelemetryFilter">
<Add name="DurationThresholdInMS" value="500"/>
<Add name="NotNeededNames" value="page1,page2"/>
<Add name="NotNeededUrls" value="url1,url2"/>
</Processor>
-
DurationThresholdInMS
: Süre, sayfayı yüklemek için geçen süreyi ifade eder. Bu parametre ayarlanırsa, bu süreden daha hızlı yüklenen sayfalar bildirilir. -
NotNeededNames
: Sayfa adlarının virgülle ayrılmış listesi. -
NotNeededUrls
: URL parçalarının virgülle ayrılmış listesi. Örneğin,"home"
URL'de "home" bulunan tüm sayfaları filtreler.
telemetri filtresi isteme
<Processor type="RequestTelemetryFilter">
<Add name="MinimumDurationInMS" value="500"/>
<Add name="NotNeededResponseCodes" value="page1,page2"/>
<Add name="NotNeededUrls" value="url1,url2"/>
</Processor>
Yapay Kaynak filtresi
özelliğinde değerleri olan tüm telemetri verilerini SyntheticSource
filtreler. Botlardan, örümceklerden ve kullanılabilirlik testlerinden gelen istekler dahildir.
Tüm yapay istekler için telemetri verilerini filtreler:
<Processor type="SyntheticSourceFilter" />
Belirli yapay kaynaklar için telemetri verilerini filtreler:
<Processor type="SyntheticSourceFilter" >
<Add name="NotNeeded" value="source1,source2"/>
</Processor>
-
NotNeeded
: Yapay kaynak adlarının virgülle ayrılmış listesi
Telemetri Olay filtresi
TrackEvent() kullanılarak günlüğe kaydedilen özel olayları filtreler:
<Processor type="TelemetryEventFilter" >
<Add name="NotNeededNames" value="event1, event2"/>
</Processor>
-
NotNeededNames
: Olay adlarının virgülle ayrılmış listesi
Telemetri filtrelerini izleme
TrackTrace() veya günlük çerçevesi toplayıcısı kullanılarak günlüğe kaydedilen günlük izlemelerini filtreler:
<Processor type="TraceTelemetryFilter">
<Add name="FromSeverityLevel" value="ERROR"/>
</Processor>
Geçerli
FromSeverityLevel
değerler şunlardır:- KAPALI: Tüm izlemeleri filtreler.
- İzleme: Filtreleme yok. trace düzeyine eşittir.
- BİlGİ: İzleme düzeyini filtreler.
- UYARI: İZLEME ve BİlGİlerİ filtreler.
- HATA: UYARI, BİlGİ ve İzleme filtrelerini çıkarır.
- KRİtİk: KRİtİk dışında tümünü filtreler.
Özel filtreler
Aşağıdaki bölümlerde kendi özel filtrelerinizi oluşturma adımları gösterilmektedir.
Filtrenizi kodlayın
Kodunuzda uygulayan TelemetryProcessor
bir sınıf oluşturun:
package com.fabrikam.MyFilter;
import com.microsoft.applicationinsights.extensibility.TelemetryProcessor;
import com.microsoft.applicationinsights.telemetry.Telemetry;
public class SuccessFilter implements TelemetryProcessor {
/* Any parameters that are required to support the filter.*/
private final String successful;
/* Initializers for the parameters, named "setParameterName" */
public void setNotNeeded(String successful)
{
this.successful = successful;
}
/* This method is called for each item of telemetry to be sent.
Return false to discard it.
Return true to allow other processors to inspect it. */
@Override
public boolean process(Telemetry telemetry) {
if (telemetry == null) { return true; }
if (telemetry instanceof RequestTelemetry)
{
RequestTelemetry requestTelemetry = (RequestTelemetry) telemetry;
return request.getSuccess() == successful;
}
return true;
}
}
Yapılandırma dosyasında filtrenizi çağırma
Şimdi ApplicationInsights.xml:
<ApplicationInsights>
<TelemetryProcessors>
<CustomProcessors>
<Processor type="com.fabrikam.SuccessFilter">
<Add name="Successful" value="false"/>
</Processor>
</CustomProcessors>
</TelemetryProcessors>
</ApplicationInsights>
Filtrenizi çağırma (Java Spring)
Spring çerçevesini temel alan uygulamalar için özel telemetri işlemcilerinin ana uygulama sınıfınızda fasulye olarak kaydedilmesi gerekir. Daha sonra uygulama başlatıldığında otomatik olarak kablolanacaklar.
@Bean
public TelemetryProcessor successFilter() {
return new SuccessFilter();
}
içinde application.properties
kendi filtre parametrelerinizi oluşturursunuz. Ardından, bu parametreleri özel filtrenize geçirmek için Spring Boot'un dışlaştırılmış yapılandırma çerçevesini kullanırsınız.
Sorun giderme
Bu bölümde bir sorun giderme ipucu sunulmaktadır.
Filtrem çalışmıyor
Geçerli parametre değerleri sağladığınızı denetleyin. Örneğin, süreler tamsayılar olmalıdır. Geçersiz değerler filtrenin yoksayılmasına neden olur. Özel filtreniz bir oluşturucudan veya küme yönteminden bir özel durum oluşturursa, yoksayılır.
toplanan: Application Insights'ta Linux performans ölçümleri (kullanım dışı)
Application Insights'ta Linux sistem performansı ölçümlerini keşfetmek için, Application Insights eklentisiyle birlikte toplanmış yükleyin. Bu açık kaynak çözüm, çeşitli sistem ve ağ istatistiklerini toplar.
Genellikle, Java web hizmetinizi Application Insights ile önceden izlemediyseniz kullanırsınızcollectd
. Uygulamanızın performansını artırmanıza veya sorunları tanılamanıza yardımcı olacak daha fazla veri sağlar.
İzleme anahtarınızı alma
Azure portal, verilerin görünmesini istediğiniz Application Insights kaynağını açın. İsterseniz yeni bir kaynak da oluşturabilirsiniz.
Kaynağı tanımlayan İzleme Anahtarının bir kopyasını alın.
Toplanan ve eklentiyi yükleme
Linux sunucu makinelerinizde:
- Toplanan sürüm 5.4.0 veya üzerini yükleyin.
- Application Insights tarafından toplanan yazar eklentisini indirin. Sürüm numarasını not edin.
- Eklenti jar dosyasını içine
/usr/share/collectd/java
kopyalayın. - Düzenle
/etc/collectd/collectd.conf
:Java eklentisinin etkinleştirildiğinden emin olun.
için JVMArg'yi
java.class.path
aşağıdaki jar dosyasını içerecek şekilde güncelleştirin. Sürüm numarasını indirdiğiniz sürümle eşleşecek şekilde güncelleştirin:/usr/share/collectd/java/applicationinsights-collectd-1.0.5.jar
Kaynağınızdaki izleme anahtarını kullanarak bu kod parçacığını ekleyin:
LoadPlugin "com.microsoft.applicationinsights.collectd.ApplicationInsightsWriter" <Plugin ApplicationInsightsWriter> InstrumentationKey "Your key" </Plugin>
Örnek yapılandırma dosyasının bir bölümü aşağıda verilmişti:
... # collectd plugins LoadPlugin cpu LoadPlugin disk LoadPlugin load ... # Enable Java Plugin LoadPlugin "java" # Configure Java Plugin <Plugin "java"> JVMArg "-verbose:jni" JVMArg "-Djava.class.path=/usr/share/collectd/java/applicationinsights-collectd-1.0.5.jar:/usr/share/collectd/java/collectd-api.jar" # Enabling Application Insights plugin LoadPlugin "com.microsoft.applicationinsights.collectd.ApplicationInsightsWriter" # Configuring Application Insights plugin <Plugin ApplicationInsightsWriter> InstrumentationKey "12345678-1234-1234-1234-123456781234" </Plugin> # Other plugin configurations ... ... </Plugin> ...
Farklı kaynaklardan çeşitli veriler toplayan diğer toplanan eklentileri yapılandırın.
El kitabına göre yeniden başlatıncollectd
.
Application Insights'ta verileri görüntüleme
Application Insights kaynağınızda Ölçümler'i açın ve grafikler ekleyin. Özel kategorisinden görmek istediğiniz ölçümleri seçin.
Varsayılan olarak ölçümler, ölçümlerin toplandığı tüm konak makinelerinde toplanır. Konak başına ölçümleri görüntülemek için , Grafik ayrıntıları bölmesinde Gruplandırma'yı açın ve ardından CollectD-Host'a göre gruplandırmayı seçin.
Belirli istatistiklerin karşıya yüklenmesini dışlama
Varsayılan olarak, Application Insights eklentisi tüm etkin collectd read
eklentiler tarafından toplanan tüm verileri gönderir.
Verileri belirli eklentilerden veya veri kaynaklarından dışlamak için:
Yapılandırma dosyasını düzenleyin.
içinde
<Plugin ApplicationInsightsWriter>
, aşağıdaki tabloda yer alanlara benzer yönerge satırları ekleyin:Yönergesi Etki Exclude disk
Eklenti tarafından disk
toplanan tüm verileri hariç tutun.Exclude disk:read,write
ve write
adlıread
kaynakları eklentinindisk
dışında tutun.
Yönergeleri yeni satırla ayırın.
Sorunlarınız mı var?
Bu bölümde sorun giderme ipuçları sunulmaktadır.
Portalda veri görmüyorum
Şu seçenekleri deneyin:
- Ham olayların ulaşılıp ulaşmadığını görmek için Arama'yı açın. Bazen ölçüm gezgininde görünmeleri daha uzun sürebilir.
- Giden veriler için güvenlik duvarı özel durumları ayarlamanız gerekebilir.
- Application Insights eklentisinde izlemeyi etkinleştirin. Bu satırı içine
<Plugin ApplicationInsightsWriter>
ekleyin:SDKLogger true
- Bildirdiğini görmek için bir terminal açın ve ayrıntılı modda başlayın
collectd
:sudo collectd -f
Bilinen sorun
Application Insights yazma eklentisi belirli okuma eklentileriyle uyumsuzdur. Bazı eklentiler bazen gönderir NaN
, ancak Application Insights eklentisi kayan noktalı bir sayı bekler.
-
Belirti: Günlükte
collectd
"AI: ... SyntaxError: Beklenmeyen belirteç N." - Geçici çözüm: Sorun yazma eklentileri tarafından toplanan verileri hariç tutun.
Application Insights Java SDK'sı ile Mikrometre kullanma (önerilmez)
Mikrometre uygulaması izleme, JVM tabanlı uygulama kodu için ölçümleri ölçer ve verileri sık kullandığınız izleme sistemlerine dışarı aktarmanıza olanak tanır. Bu bölümde hem Spring Boot hem de Spring Boot dışı uygulamalar için Application Insights ile Micrometer'ın nasıl kullanılacağı öğretildi.
Spring Boot 1.5x kullanma
pom.xml veya build.gradle dosyanıza aşağıdaki bağımlılıkları ekleyin:
- Application Insights spring-boot-starter 2.5.0 veya üzeri.
- Micrometer Azure Registry 1.1.0 veya üzeri.
- Micrometer Spring Legacy 1.1.0 veya üzeri. Spring çerçevesindeki otomatik yapılandırma kodunu geri gönderir.
- ApplicationInsights kaynağı.
Şu adımları izleyin:
Spring Boot uygulamanızın pom.xml dosyasını güncelleştirin ve içine aşağıdaki bağımlılıkları ekleyin:
<dependency> <groupId>com.microsoft.azure</groupId> <artifactId>applicationinsights-spring-boot-starter</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-spring-legacy</artifactId> <version>1.1.0</version> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-azure-monitor</artifactId> <version>1.1.0</version> </dependency>
Aşağıdaki özelliği kullanarak application.properties veya YML dosyasını Application Insights izleme anahtarıyla güncelleştirin:
azure.application-insights.instrumentation-key=<your-instrumentation-key-here>
Uygulamanızı derleyin ve çalıştırın.
Önceki adımlar, Azure İzleyici'de otomatik olarak toplanmış önceden toplanmış ölçümlerle çalışmaya başlamanızı sağlamalıdır.
Spring 2.x kullanma
pom.xml veya build.gradle dosyanıza aşağıdaki bağımlılıkları ekleyin:
- Application Insights Spring-boot-starter 2.1.2 veya üzeri
- Azure-spring-boot-metrics-starters 2.0.7 veya üzeri
- Application Insights kaynağı
Şu adımları izleyin:
Spring Boot uygulamanızın pom.xml dosyasını güncelleştirin ve içine aşağıdaki bağımlılığı ekleyin:
<dependency> <groupId>com.microsoft.azure</groupId> <artifactId>azure-spring-boot-metrics-starter</artifactId> <version>2.0.7</version> </dependency>
Aşağıdaki özelliği kullanarak application.properties veya YML dosyasını Application Insights izleme anahtarıyla güncelleştirin:
azure.application-insights.instrumentation-key=<your-instrumentation-key-here>
Uygulamanızı derleyin ve çalıştırın.
Yukarıdaki adımlar, Azure İzleyici'de otomatik olarak toplanmış önceden toplanmış ölçümlerle çalışmanızı sağlamalıdır. Application Insights Spring Boot starter'da ince ayar yapma hakkında daha fazla bilgi için GitHub'da benioku dosyasına bakın.
Varsayılan ölçümler:
- Tomcat, JVM, Logback Ölçümleri, Log4J Ölçümleri, Çalışma Süresi Ölçümleri, İşlemci Ölçümleri ve FileDescriptorMetrics için otomatik olarak yapılandırılan ölçümler.
- Örneğin, sınıf yolunda Netflix Hystrix varsa bu ölçümleri de alacağız.
- İlgili çekirdekler eklenerek aşağıdaki ölçümler kullanılabilir:
-
CacheMetrics
(CaffeineCache
,EhCache2
,GuavaCache
,HazelcastCache
veJCache
) DataBaseTableMetrics
HibernateMetrics
JettyMetrics
-
OkHttp3
Ölçümleri -
Kafka
Ölçümleri
-
Otomatik ölçüm toplamayı kapatın:
- JVM Ölçümleri:
management.metrics.binders.jvm.enabled=false
- Geri Kayıt Ölçümleri:
management.metrics.binders.logback.enabled=false
- Çalışma Süresi Ölçümleri:
management.metrics.binders.uptime.enabled=false
- İşlemci Ölçümleri:
management.metrics.binders.processor.enabled=false
- FileDescriptorMetrics:
management.metrics.binders.files.enabled=false
- Üzerinde kitaplık
classpath
varsa Hystrix Ölçümleri:management.metrics.binders.hystrix.enabled=false
- üzerinde
classpath
kitaplık varsa AspectJ Ölçümleri:spring.aop.enabled=false
Not
Spring Boot uygulamanızın application.properties veya application.yml dosyasındaki önceki özellikleri belirtin.
Spring Boot olmayan web uygulamalarıyla Mikrometre kullanma
pom.xml veya build.gradle dosyanıza aşağıdaki bağımlılıkları ekleyin:
- Application Insights Web Auto 2.5.0 veya üzeri
- Micrometer Azure Registry 1.1.0 veya üzeri
- Application Insights kaynağı
Şu adımları izleyin:
pom.xml veya build.gradle dosyanıza aşağıdaki bağımlılıkları ekleyin:
<dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-azure-monitor</artifactId> <version>1.1.0</version> </dependency> <dependency> <groupId>com.microsoft.azure</groupId> <artifactId>applicationinsights-web-auto</artifactId> <version>2.5.0</version> </dependency>
Henüz yapmadıysanız ,ApplicationInsights.xml dosyasını resources klasörüne ekleyin. Daha fazla bilgi için bkz. ApplicationInsights.xml dosyası ekleme.
Örnek Servlet sınıfı (zamanlayıcı ölçümü yayar):
@WebServlet("/hello") public class TimedDemo extends HttpServlet { private static final long serialVersionUID = -4751096228274971485L; @Override @Timed(value = "hello.world") protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.getWriter().println("Hello World!"); MeterRegistry registry = (MeterRegistry) getServletContext().getAttribute("AzureMonitorMeterRegistry"); //create new Timer metric Timer sampleTimer = registry.timer("timer"); Stream<Integer> infiniteStream = Stream.iterate(0, i -> i+1); infiniteStream.limit(10).forEach(integer -> { try { Thread.sleep(1000); sampleTimer.record(integer, TimeUnit.MILLISECONDS); } catch (Exception e) {} }); } @Override public void init() throws ServletException { System.out.println("Servlet " + this.getServletName() + " has started"); } @Override public void destroy() { System.out.println("Servlet " + this.getServletName() + " has stopped"); } }
Örnek yapılandırma sınıfı:
@WebListener public class MeterRegistryConfiguration implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent servletContextEvent) { // Create AzureMonitorMeterRegistry private final AzureMonitorConfig config = new AzureMonitorConfig() { @Override public String get(String key) { return null; } @Override public Duration step() { return Duration.ofSeconds(60);} @Override public boolean enabled() { return false; } }; MeterRegistry azureMeterRegistry = AzureMonitorMeterRegistry.builder(config); //set the config to be used elsewhere servletContextEvent.getServletContext().setAttribute("AzureMonitorMeterRegistry", azureMeterRegistry); } @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { } }
Ölçümler hakkında daha fazla bilgi edinmek için Mikrometre belgelerine bakın.
Farklı ölçüm türlerinin nasıl oluşturulacağını gösteren diğer örnek kodlar resmi Micrometer GitHub deposunda bulunabilir.
Daha fazla ölçüm koleksiyonu bağlama
Aşağıdaki bölümlerde daha fazla ölçümü nasıl toplayacağınız gösterilir.
SpringBoot/Spring
İlgili ölçüm kategorisinden bir fasulye oluşturun. Örneğin, Guava Önbelleği ölçümlerine ihtiyacınız olduğunu varsayalım:
@Bean
GuavaCacheMetrics guavaCacheMetrics() {
Return new GuavaCacheMetrics();
}
Bazı ölçümler varsayılan olarak etkin değildir, ancak önceki şekilde bağlanabilir. Tam liste için bkz. Micrometer GitHub deposu.
Spring dışı uygulamalar
Yapılandırma dosyasına aşağıdaki bağlama kodunu ekleyin:
New GuavaCacheMetrics().bind(registry);
Sonraki adımlar
- Sayfa yükleme sürelerini, AJAX çağrılarını ve tarayıcı özel durumlarını izlemek için web sayfalarınıza izleme ekleyin.
- Tarayıcıda veya sunucuda kullanımı izlemek için özel telemetri yazın.
- Uygulamanızdan telemetri üzerinden güçlü sorgular için Log Analytics'i kullanın.
- Tanılama arama özelliğini kullanın.
- Ölçümlerinizi çarpıtmayan filtrelemeye alternatif olarak örneklemeyi göz önünde bulundurun.
- Mikrometre hakkında daha fazla bilgi edinmek için Mikrometre belgelerine bakın.
- Azure'da Spring hakkında bilgi edinmek için Azure'da Spring belgelerine bakın.
- Daha fazla bilgi için bkz. Java geliştiricileri için Azure.