Application Insights untuk Java 2.x
Perhatian
Artikel ini berlaku untuk Application Insights Java 2.x, yang tidak lagi direkomendasikan.
Dokumentasi untuk versi yang terbaru dapat ditemukan di Application Insights Java 3.x.
Dalam artikel ini, Anda akan mempelajari cara menggunakan Application Insights Java 2.x. Artikel ini menunjukkan cara:
- Mulai, dan pelajari cara melengkapi permintaan, melacak dependensi, mengumpulkan penghitung kinerja, mendiagnosis masalah dan pengecualian performa, dan menulis kode untuk melacak apa yang dilakukan pengguna dengan aplikasi Anda.
- Kirim log jejak ke Application Insights dan jelajahi dengan menggunakan portal Application Insights.
- Pantau dependensi, menangkap pengecualian, dan waktu eksekusi metode di aplikasi web Java.
- Filter telemetri di aplikasi web Java Anda.
- Jelajahi metrik performa sistem Linux di Application Insights dengan menggunakan
collectd
. - Mengukur metrik untuk kode aplikasi berbasis komputer virtual Java (JVM). Ekspor data ke sistem pemantauan favorit Anda dengan menggunakan pemantauan aplikasi Micrometer.
Catatan
Pada tanggal 31 Maret 2025, dukungan untuk penyerapan kunci instrumentasi akan berakhir. Penyerapan kunci instrumentasi akan berjalan terus, namun kami tidak akan lagi menyediakan pembaruan atau dukungan terhadap fitur tersebut. Transisi ke string koneksi untuk memanfaatkan kemampuan baru.
Memulai dengan Application Insights dalam proyek web Java
Di bagian ini, Anda menggunakan Application Insights SDK untuk melengkapi permintaan, melacak dependensi, mengumpulkan penghitung kinerja, mendiagnosis masalah dan pengecualian performa, dan menulis kode untuk melacak apa yang dilakukan pengguna dengan aplikasi Anda.
Application Insights adalah layanan analitik yang dapat diperluas untuk pengembang web yang membantu Anda memahami performa dan penggunaan aplikasi langsung Anda. Application Insights mendukung aplikasi Java yang berjalan di Linux, Unix, atau Windows.
Prasyarat
Anda memerlukan:
- Akun Azure dengan langganan aktif. Anda dapat membuat akun secara gratis.
- Aplikasi Java yang berfungsi.
Mendapatkan kunci instrumentasi Application Insights
Masuk ke portal Microsoft Azure.
Di portal Azure, buat sumber daya Application Insights. Atur jenis aplikasi ke aplikasi web Java.
Temukan kunci instrumentasi dari sumber daya baru. Anda harus segera menempelkan kunci ini ke dalam proyek kode Anda.
Menambahkan Application Insights SDK untuk Java ke proyek Anda
Pilih jenis proyek Anda.
Jika proyek Anda sudah disiapkan untuk menggunakan Maven untuk pembangunan, gabungkan kode berikut ke file pom.xml Anda. Kemudian refresh dependensi proyek agar biner diunduh.
<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>
Tanya jawab umum
Apa hubungan antara
-web-auto
komponen , ,-web
dan-core
?-
applicationinsights-web-auto
memberi Anda metrik yang melacak jumlah permintaan servlet HTTP dan waktu respons dengan secara otomatis mendaftarkan filter servlet Application Insights saat runtime. -
applicationinsights-web
juga memberi Anda metrik yang melacak jumlah permintaan servlet HTTP dan waktu respons. Tetapi pendaftaran manual filter servlet Application Insights di aplikasi Anda diperlukan. -
applicationinsights-core
memberi Anda API telanjang, misalnya, jika aplikasi Anda tidak berbasis servlet.
-
Bagaimana cara memperbarui SDK ke versi terbaru?
- Mulai November 2020, untuk memantau aplikasi Java, sebaiknya gunakan Application Insights Java 3.x. Untuk informasi selengkapnya tentang cara memulai, lihat Application Insights Java 3.x.
Menambahkan file ApplicationInsights.xml
Tambahkan ApplicationInsights.xml ke folder sumber daya di proyek Anda, atau pastikan folder tersebut ditambahkan ke jalur kelas penyebaran proyek Anda. Salin XML berikut ke dalamnya.
Ganti kunci instrumentasi dengan yang Anda dapatkan dari portal Azure.
<?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>
Secara opsional, file konfigurasi dapat berada di lokasi mana pun yang dapat diakses oleh aplikasi Anda. Properti sistem -Dapplicationinsights.configurationDirectory
menentukan direktori yang berisi ApplicationInsights.xml. Misalnya, file konfigurasi yang terletak di E:\myconfigs\appinsights\ApplicationInsights.xml akan dikonfigurasi dengan properti -Dapplicationinsights.configurationDirectory="E:\myconfigs\appinsights"
.
- Kunci instrumentasi dikirim bersama dengan setiap item telemetri dan memberi tahu Application Insights untuk menampilkannya di sumber daya Anda.
- Komponen Permintaan HTTP bersifat opsional. Komponen tersebut secara otomatis mengirim telemetri tentang permintaan dan waktu respons ke portal.
- Korelasi peristiwa adalah tambahan untuk komponen permintaan HTTP. Korelasi tersebut menetapkan pengidentifikasi untuk setiap permintaan yang diterima oleh server. Kemudian menambahkan pengidentifikasi ini sebagai properti ke setiap item telemetri sebagai properti
Operation.Id
. Ini memungkinkan Anda untuk menghubungkan telemetri yang terkait dengan setiap permintaan dengan mengatur filter dalam Pencarian diagnostik.
Cara alternatif untuk mengatur kunci instrumentasi
Application Insights SDK mencari kunci dalam urutan ini:
- Properti sistem: -DAPPINSIGHTS_INSTRUMENTATIONKEY=your_ikey
- Variabel lingkungan: APPINSIGHTS_INSTRUMENTATIONKEY
- File konfigurasi: ApplicationInsights.xml
Anda juga dapat mengaturnya dalam kode:
String instrumentationKey = "00000000-0000-0000-0000-000000000000";
if (instrumentationKey != null)
{
TelemetryConfiguration.getActive().setInstrumentationKey(instrumentationKey);
}
Menambahkan agen
Instal agen Java untuk menangkap panggilan HTTP keluar, kueri JDBC, pengelogan aplikasi, dan penamaan operasi yang lebih baik.
Menjalankan aplikasi
Jalankan dalam mode debug pada komputer pengembangan Anda atau terbitkan ke server Anda.
Menampilkan telemetri Anda dalam Application Insights
Kembali ke sumber daya Application Insights Anda di portal Azure.
Data permintaan HTTP muncul di panel gambaran umum. Jika tidak ada, tunggu beberapa detik lalu pilih Refresh.
Pelajari selengkapnya tentang metrik.
Klik bagan apa pun untuk melihat metrik agregat yang lebih rinci.
Data instans
Klik jenis permintaan tertentu untuk melihat instans satu per satu.
Analitik Log: Bahasa kueri yang canggih
Saat mengakumulasi lebih banyak data, Anda dapat menjalankan kueri untuk menggabungkan data dan menemukan instans individual. Log Analytics adalah alat yang ampuh untuk memahami performa dan penggunaan, dan untuk tujuan diagnostik.
Menginstal aplikasi Anda di server
Sekarang terbitkan aplikasi Anda ke server, biarkan orang menggunakannya, dan tonton telemetri muncul di portal.
Pastikan firewall Anda mengizinkan aplikasi Anda mengirim telemetri ke port berikut:
- dc.services.visualstudio.com:443
- f5.services.visualstudio.com:443
Jika lalu lintas keluar harus dirutekan melalui firewall, tentukan properti
http.proxyHost
sistem danhttp.proxyPort
.Pada server Windows, instal:
Microsoft Visual C++ Dapat Didistribusikan Ulang
Komponen ini memungkinkan penghitung kinerja.
Azure App Service, Azure Kubernetes Service, konfigurasi VM
Pendekatan terbaik dan term mudah untuk memantau aplikasi Anda yang berjalan di penyedia sumber daya Azure adalah menggunakan Application Insights Java 3.x.
Pengecualian dan kegagalan permintaan
Pengecualian dan kegagalan permintaan yang tidak tertangani secara otomatis dikumpulkan oleh filter web Application Insights.
Untuk mengumpulkan data tentang pengecualian lain, Anda dapat menyisipkan panggilan ke trackException() dalam kode Anda.
Memantau panggilan metode dan dependensi eksternal
Instal agen Java ke metode internal dan panggilan yang ditentukan log yang dilakukan melalui JDBC, dengan data waktu, dan untuk penamaan operasi otomatis.
Pelacakan terdistribusi W3C
Application Insights Java SDK kini mendukung pelacakan terdistribusi W3C.
Konfigurasi SDK yang masuk dijelaskan lebih lanjut dalam Korelasi telemetri di Application Insights.
Konfigurasi SDK keluar ditentukan dalam file AI-Agent.xml.
Penghitung kinerja
Pilih Selidiki>Metrik untuk melihat berbagai penghitung kinerja.
Menyesuaikan pengumpulan penghitung kinerja
Untuk menonaktifkan pengumpulan kumpulan standar penghitung kinerja, tambahkan kode berikut di bawah simpul akar file ApplicationInsights.xml:
<PerformanceCounters>
<UseBuiltIn>False</UseBuiltIn>
</PerformanceCounters>
Mengumpulkan lebih banyak penghitung kinerja
Anda dapat menentukan lebih banyak penghitung kinerja yang akan dikumpulkan.
Penghitung JMX (diekspos oleh komputer virtual Java)
<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
: Nama yang ditampilkan di portal Application Insights. -
objectName
: Nama objek JMX. -
attribute
: Atribut nama objek JMX untuk diambil. -
type
(opsional): Jenis atribut objek JMX:- Default: Jenis sederhana, seperti int atau long.
-
composite
: Data penghitung perf dalam formatAttribute.Data
. -
tabular
: Data penghitung perf dalam format baris tabel.
Penghitung performa Windows
Setiap penghitung kinerja Windows adalah anggota kategori (dengan cara yang sama seperti bidang adalah anggota kelas). Kategori dapat berupa global atau memiliki instans bernomor atau bernama.
<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
: Nama yang ditampilkan di portal Application Insights. -
categoryName
: Kategori penghitung kinerja (objek performa) yang dikaitkan dengan penghitung kinerja ini. -
counterName
: Nama penghitung kinerja. -
instanceName
: Nama instans kategori penghitung kinerja atau string kosong (""), jika kategori berisi satu instans. JikacategoryName
adalahProcess
dan penghitung kinerja yang ingin Anda kumpulkan berasal dari proses JVM saat ini tempat aplikasi Anda berjalan, tentukan"__SELF__"
.
Penghitung kinerja Unix
Instal yang dikumpulkan dengan plug-in Application Insights untuk mendapatkan berbagai sistem dan data jaringan.
Mendapatkan data pengguna dan sesi
Sekarang Anda mengirim telemetri dari server web Anda. Untuk mendapatkan tampilan 360 derajat penuh dari aplikasi Anda, Anda dapat menambahkan lebih banyak pemantauan:
- Tambahkan telemetri ke halaman web Anda untuk memantau tampilan halaman dan metrik pengguna.
- Siapkan pengujian web untuk memastikan aplikasi Anda tetap aktif dan responsif.
Mengirimkan telemetri Anda sendiri
Setelah menginstal SDK, Anda dapat menggunakan API untuk mengirim telemetri Anda sendiri:
- Lacak peristiwa dan metrik kustom untuk mempelajari apa yang dilakukan pengguna dengan aplikasi Anda.
- Telusuri peristiwa dan log untuk membantu mendiagnosis masalah.
Uji ketersediaan web
Application Insights dapat menguji situs web Anda secara berkala untuk memeriksa apakah situs web tersebut sudah siap dan merespons dengan baik.
Pelajari selengkapnya tentang cara menyiapkan pengujian web ketersediaan.
Pemecahan Masalah
Lihat artikel pemecahan masalah khusus.
Menguji konektivitas antara host aplikasi Anda dan layanan penyerapan
Application Insights SDK dan agen mengirim telemetri untuk diserap sebagai panggilan REST ke titik akhir penyerapan kami. Anda dapat menguji konektivitas dari server web atau komputer host aplikasi ke titik akhir layanan penyerapan dengan menggunakan klien REST mentah dari PowerShell atau perintah curl. Lihat Memecahkan masalah telemetri aplikasi yang hilang di Azure Monitor Application Insights.
Menelusuri log jejak Java di Application Insights
Jika Anda menggunakan Logback atau Log4J (v1.2 atau v2.0) untuk menelusuri, Anda dapat mengirim log jejak secara otomatis ke Application Insights di mana Anda dapat menjelajahi dan menelusurinya.
Tip
Anda perlu mengatur kunci instrumentasi Application Insights hanya sekali untuk aplikasi Anda. Jika Anda menggunakan kerangka kerja seperti Java Spring, Anda mungkin telah mendaftarkan kunci di tempat lain dalam konfigurasi aplikasi Anda.
Menggunakan agen Application Insights Java
Secara default, agen Application Insights Java secara otomatis menangkap pengelogan yang dilakukan pada tingkat dan di atasnya WARN
.
Anda dapat mengubah ambang pengelogan yang diambil dengan menggunakan file AI-Agent.xml :
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
<Instrumentation>
<BuiltIn>
<Logging threshold="info"/>
</BuiltIn>
</Instrumentation>
</ApplicationInsightsAgent>
Anda dapat menonaktifkan pengambilan pengelogan agen Java dengan menggunakan file AI-Agent.xml :
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
<Instrumentation>
<BuiltIn>
<Logging enabled="false"/>
</BuiltIn>
</Instrumentation>
</ApplicationInsightsAgent>
Alternatif
Alih-alih menggunakan agen Java, Anda dapat mengikuti instruksi ini.
Menginstal SDK Java
Ikuti petunjuk untuk menginstal Application Insights SDK untuk Java, jika Anda belum melakukannya.
Menambahkan pengelogan pustaka ke proyek Anda
Pilih cara yang sesuai untuk proyek Anda.
Maven
Jika proyek Anda sudah disiapkan untuk menggunakan Maven untuk build, gabungkan salah satu cuplikan kode berikut ke dalam file pom.xml Anda. Kemudian refresh dependensi proyek agar biner diunduh.
Logback
<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
Jika proyek Anda sudah disiapkan untuk menggunakan Gradle untuk build, tambahkan salah satu baris berikut ke dependencies
grup di file build.gradle Anda. Kemudian refresh dependensi proyek agar biner diunduh.
Logback
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.+'
Menggunakan tautan jar
Ikuti panduan untuk menginstal Application Insights Java SDK secara manual dan mengunduh jar. Pada halaman Maven Central, pilih jar
tautan di bagian unduhan untuk appender yang sesuai. Tambahkan jar appender yang diunduh ke proyek.
Pencatat | Unduh | Pustaka |
---|---|---|
Logback | Logback appender Jar | applicationinsights-logging-logback |
Log4J v2.0 | Log4J v2 appender Jar | applicationinsights-logging-log4j2 |
Log4j v1.2 | Log4J v1.2 appender Jar | applicationinsights-logging-log4j1_2 |
Menambahkan appender ke kerangka kerja pengelogan Anda
Untuk mulai mendapatkan jejak, gabungkan cuplikan kode yang relevan ke file konfigurasi Logback atau Log4J.
Logback
<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>
Pelengkap Application Insights dapat direferensikan oleh pencatat apa pun yang dikonfigurasi dan tidak harus oleh pencatat akar, seperti yang ditunjukkan dalam sampel kode sebelumnya.
Menjelajahi jejak Anda di portal Application Insights
Setelah mengonfigurasi proyek untuk mengirim jejak ke Application Insights, Anda dapat melihat dan mencari jejak ini di portal Application Insights di panel Pencarian .
Pengecualian yang dikirimkan melalui pencatat akan ditampilkan di portal sebagai telemetri Pengecualian .
Memantau dependensi, menangkap pengecualian, dan waktu eksekusi metode di aplikasi web Java
Jika Anda telah melengkapi aplikasi web Java dengan Application Insights SDK, Anda dapat menggunakan agen Java untuk mendapatkan wawasan yang lebih dalam, tanpa perubahan kode apa pun:
Dependensi: Data tentang panggilan yang dilakukan aplikasi Anda ke komponen lain, termasuk:
-
Panggilan HTTP keluar: Panggilan yang dilakukan melalui
Apache HttpClient
,OkHttp
, danjava.net.HttpURLConnection
ditangkap. - Panggilan Redis: Panggilan yang dilakukan melalui klien Jedis ditangkap.
- Kueri JDBC: Untuk MySQL dan PostgreSQL, jika panggilan membutuhkan waktu lebih dari 10 detik, agen melaporkan rencana kueri.
-
Panggilan HTTP keluar: Panggilan yang dilakukan melalui
Pengelogan aplikasi: Mengambil dan menghubungkan log aplikasi Anda dengan permintaan HTTP dan telemetri lainnya:
- Log4j 1.2
- Log4j2
- Logback
Penamaan operasi yang lebih baik: Digunakan untuk agregasi permintaan di portal.
-
Spring: Berdasarkan
@RequestMapping
. -
JAX-RS: Berdasarkan
@Path
.
-
Spring: Berdasarkan
Untuk menggunakan agen Java, Anda harus memasangnya di server. Aplikasi web Anda harus diinstrumentasi dengan Java Application Insights SDK.
Memasang agen Application Insights untuk Java
Pada komputer yang menjalankan server Java Anda, unduh agen 2.x. Pastikan versi agen Java 2.x yang Anda gunakan cocok dengan versi 2.x Application Insights Java SDK yang Anda gunakan.
Edit skrip startup server aplikasi, lalu tambahkan argumen JVM berikut:
-javaagent:<full path to the agent JAR file>
Misalnya, di Tomcat pada komputer Linux:
export JAVA_OPTS="$JAVA_OPTS -javaagent:<full path to agent JAR file>"
Mulai ulang server aplikasi Anda.
Mengonfigurasi agen
Buat file bernama AI-Agent.xml dan letakkan di folder yang sama dengan file jar agen.
Atur konten file XML. Edit contoh berikut untuk menyertakan atau menghilangkan fitur yang Anda inginkan.
<?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>
Konfigurasi lainnya (Spring Boot)
java -javaagent:/path/to/agent.jar -jar path/to/TestApp.jar
Untuk Azure App Service, ikuti langkah-langkah berikut:
Pilih Pengaturan>Pengaturan Aplikasi.
Di bawah Pengaturan Aplikasi, tambahkan pasangan nilai kunci baru:
-
Kunci:
JAVA_OPTS
-
Nilai:
-javaagent:D:/home/site/wwwroot/applicationinsights-agent-2.6.4.jar
Agen harus dipaketkan sebagai sumber daya dalam proyek Anda sehingga berakhir di direktori D:/home/site/wwwroot/ . Untuk mengonfirmasi bahwa agen Anda berada di direktori App Service yang benar, bukaKonsol DebugAlat>> PengembanganDanperiksa konten direktori situs.
-
Kunci:
Simpan pengaturan dan mulai ulang aplikasi Anda. Langkah-langkah ini hanya berlaku untuk layanan aplikasi yang berjalan di Windows.
Catatan
AI-Agent.xml dan file jar agen harus berada di folder yang sama. Mereka sering ditempatkan bersama-sama di folder /resources proyek.
Mengaktifkan pelacakan terdistribusi W3C
Tambahkan cuplikan berikut ke AI-Agent.xml:
<Instrumentation>
<BuiltIn enabled="true">
<HTTP enabled="true" W3C="true" enableW3CBackCompat="true"/>
</BuiltIn>
</Instrumentation>
Catatan
Mode kompatibilitas mundur diaktifkan secara default. Parameter enableW3CBackCompat
bersifat opsional dan harus digunakan hanya saat Anda ingin menonaktifkannya.
Idealnya, ini akan terjadi ketika semua layanan Anda telah diperbarui ke versi SDK yang lebih baru yang mendukung protokol W3C. Kami menyarankan agar Anda beralih ke versi SDK yang lebih baru dengan dukungan W3C sesegera mungkin.
Pastikan konfigurasi masuk dan keluar (agen) sama persis.
Menampilkan data
Di sumber daya Application Insights, dependensi jarak jauh yang diagregasi dan waktu eksekusi metode muncul di bagian petak Performa.
Untuk mencari instans laporan dependensi, pengecualian, dan metode, buka Cari.
Pelajari selengkapnya tentang cara mendiagnosis masalah dependensi.
Pertanyaan atau masalah?
Gunakan sumber daya berikut:
- Tidak ada data? Atur pengecualian firewall.
- Memecahkan masalah Java.
Memfilter telemetri di aplikasi web Java Anda
Filter menyediakan cara untuk memilih telemetri yang aplikasi web Java kirim ke Application Insights. Ada beberapa filter siap pakai yang dapat Anda gunakan. Anda juga dapat menulis filter kustom Anda sendiri.
Filter tak biasa tersebut meliputi:
- Melacak tingkat keparahan.
- URL, kata kunci, atau kode respons tertentu.
- Respons cepat. Dengan kata lain, permintaan yang direspons aplikasi Anda dengan cepat.
- Nama peristiwa tertentu.
Catatan
Filter mencondongkan metrik aplikasi Anda. Misalnya, Anda dapat memutuskan bahwa untuk mendiagnosis respons lambat, Anda akan mengatur filter untuk membuang waktu respons yang cepat. Tetapi Anda harus menyadari bahwa waktu respons rata-rata yang dilaporkan oleh Application Insights kemudian akan lebih lambat dari kecepatan sebenarnya. Selain itu, jumlah permintaan akan lebih kecil dari jumlah riil.
Jika hal tersebut menjadi masalah, gunakan Pengambilan sampel sebagai gantinya.
Atur filter
Di ApplicationInsights.xml, tambahkan TelemetryProcessors
bagian seperti contoh ini:
<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>
Periksa set lengkap prosesor bawaan.
Filter bawaan
Bagian ini membahas filter bawaan yang tersedia.
Filter Telemetri Metrik
<Processor type="MetricTelemetryFilter">
<Add name="NotNeeded" value="metric1,metric2"/>
</Processor>
-
NotNeeded
: Daftar nama metrik kustom yang dipisahkan koma
Filter Telemetri Tampilan Halaman
<Processor type="PageViewTelemetryFilter">
<Add name="DurationThresholdInMS" value="500"/>
<Add name="NotNeededNames" value="page1,page2"/>
<Add name="NotNeededUrls" value="url1,url2"/>
</Processor>
-
DurationThresholdInMS
: Durasi mengacu pada waktu yang diperlukan untuk memuat halaman. Jika parameter ini diatur, halaman yang dimuat lebih cepat dari waktu ini tidak dilaporkan. -
NotNeededNames
: Daftar nama halaman yang dipisahkan koma. -
NotNeededUrls
: Daftar fragmen URL yang dipisahkan koma. Misalnya,"home"
memfilter semua halaman yang memiliki "home" di URL.
Filter Telemetri Permintaan
<Processor type="RequestTelemetryFilter">
<Add name="MinimumDurationInMS" value="500"/>
<Add name="NotNeededResponseCodes" value="page1,page2"/>
<Add name="NotNeededUrls" value="url1,url2"/>
</Processor>
Filter Sumber Sintetis
Memfilter semua telemetri yang memiliki nilai dalam SyntheticSource
properti . Permintaan dari bot, laba-laba, dan tes ketersediaan disertakan.
Memfilter telemetri untuk semua permintaan sintetis:
<Processor type="SyntheticSourceFilter" />
Memfilter telemetri untuk sumber sintetis tertentu:
<Processor type="SyntheticSourceFilter" >
<Add name="NotNeeded" value="source1,source2"/>
</Processor>
-
NotNeeded
: Daftar nama sumber sintetis yang dipisahkan koma
Filter Peristiwa Telemetri
Memfilter peristiwa kustom yang dicatat dengan menggunakan TrackEvent():
<Processor type="TelemetryEventFilter" >
<Add name="NotNeededNames" value="event1, event2"/>
</Processor>
-
NotNeededNames
: Daftar nama peristiwa yang dipisahkan koma
Filter Telemetri Pelacakan
Memfilter jejak log yang dicatat dengan menggunakan TrackTrace() atau pengumpul kerangka kerja pengelogan:
<Processor type="TraceTelemetryFilter">
<Add name="FromSeverityLevel" value="ERROR"/>
</Processor>
Nilai
FromSeverityLevel
yang valid adalah:- OFF: Memfilter semua jejak.
- TRACE: Tidak ada pemfilteran. Sama dengan tingkat TRACE.
- INFO: Memfilter tingkat PELACAKAN.
- PERINGATAN: Memfilter JEJAK dan INFO.
- KESALAHAN: Memfilter WARN, INFO, dan TRACE.
- KRITIS: Memfilter semua kecuali CRITICAL.
Filter kustom
Bagian berikut ini memperlihatkan kepada Anda langkah-langkah untuk membuat filter kustom Anda sendiri.
Kode filter Anda
Dalam kode Anda, buat kelas yang mengimplementasikan TelemetryProcessor
:
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;
}
}
Memanggil filter Anda dalam file konfigurasi
Sekarang, dalam ApplicationInsights.xml:
<ApplicationInsights>
<TelemetryProcessors>
<CustomProcessors>
<Processor type="com.fabrikam.SuccessFilter">
<Add name="Successful" value="false"/>
</Processor>
</CustomProcessors>
</TelemetryProcessors>
</ApplicationInsights>
Memanggil filter Anda (Java Spring)
Untuk aplikasi berbasis kerangka kerja Spring, prosesor telemetri kustom harus didaftarkan di kelas aplikasi utama Anda sebagai bean. Mereka kemudian akan diwiwidian otomatis ketika aplikasi dimulai.
@Bean
public TelemetryProcessor successFilter() {
return new SuccessFilter();
}
Anda membuat parameter filter Anda sendiri di application.properties
. Kemudian Anda menggunakan kerangka kerja konfigurasi eksternal Spring Boot untuk meneruskan parameter tersebut ke filter kustom Anda.
Pemecahan Masalah
Bagian ini menawarkan tip pemecahan masalah.
Filter saya tidak berfungsi
Periksa apakah Anda telah memberikan nilai parameter yang valid. Misalnya, durasi harus berupa bilangan bulat. Nilai yang tidak valid akan menyebabkan filter diabaikan. Jika filter kustom Anda memberikan pengecualian dari konstruktor atau metode yang diatur, filter tersebut akan diabaikan.
collectd: Metrik performa Linux di Application Insights (tidak digunakan lagi)
Untuk menjelajahi metrik performa sistem Linux di Application Insights, instal yang dikumpulkan bersama dengan plug-in Application Insights-nya. Solusi sumber terbuka ini mengumpulkan berbagai statistik sistem dan jaringan.
Biasanya, Anda akan menggunakan collectd
jika Anda telah melengkapi layanan web Java Anda dengan Application Insights. Ini memberi Anda lebih banyak data untuk membantu Anda meningkatkan performa aplikasi atau mendiagnosis masalah.
Dapatkan kunci instrumentasi Anda
Di portal Azure, buka sumber daya Application Insights tempat Anda ingin data muncul. Atau, Anda dapat membuat sumber daya baru.
Ambil salinan Kunci Instrumentasi, yang mengidentifikasi sumber daya.
Instal collectd dan plug-in
Di komputer server Linux Anda:
- Instal collectd versi 5.4.0 atau yang lebih baru.
- Unduh plug-in penulis yang dikumpulkan Application Insights. Perhatikan nomor versi.
- Salin jar plug-in ke dalam
/usr/share/collectd/java
. - Edit
/etc/collectd/collectd.conf
:Pastikan plug-in Java diaktifkan.
Perbarui JVMArg untuk
java.class.path
menyertakan jar berikut. Perbarui nomor versi agar sesuai dengan nomor yang Anda unduh:/usr/share/collectd/java/applicationinsights-collectd-1.0.5.jar
Tambahkan cuplikan ini dengan menggunakan kunci instrumentasi dari sumber daya Anda:
LoadPlugin "com.microsoft.applicationinsights.collectd.ApplicationInsightsWriter" <Plugin ApplicationInsightsWriter> InstrumentationKey "Your key" </Plugin>
Berikut adalah bagian dari file konfigurasi sampel:
... # 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> ...
Konfigurasikan plug-in lain yang dikumpulkan, yang dapat mengumpulkan berbagai data dari sumber yang berbeda.
Mulai ulang collectd
sesuai dengan manualnya.
Menampilkan data di Application Insights
Di sumber daya Application Insights Anda, buka Metrik dan tambahkan bagan. Pilih metrik yang ingin Anda lihat dari kategori Kustom .
Secara default, metrik diagregasi di semua komputer host tempat metrik dikumpulkan. Untuk menampilkan metrik per host, di panel Detail bagan , aktifkan Pengelompokan, lalu pilih untuk mengelompokkan menurut CollectD-Host.
Mengecualikan unggahan statistik tertentu
Secara default, plug-in Application Insights mengirimkan semua data yang dikumpulkan oleh semua plug-in yang diaktifkan collectd read
.
Untuk mengecualikan data dari plug-in atau sumber data tertentu:
Edit file konfigurasi.
Di
<Plugin ApplicationInsightsWriter>
, tambahkan garis direktif seperti yang ada dalam tabel berikut:Direktif Efek Exclude disk
Kecualikan semua data yang disk
dikumpulkan oleh plug-in.Exclude disk:read,write
Kecualikan sumber read
bernama danwrite
daridisk
plug-in.
Pisahkan direktif dengan baris baru.
Masalah?
Bagian ini menawarkan tips pemecahan masalah.
Saya tidak melihat data di portal
Coba opsi ini:
- Buka Pencarian untuk melihat apakah aktivitas mentah telah tiba. Terkadang mereka membutuhkan waktu lebih lama untuk muncul di penjelajah metrik.
- Anda mungkin perlu mengatur pengecualian firewall untuk data keluar.
- Aktifkan pelacakan di plug-in Application Insights. Tambahkan baris ini dalam
<Plugin ApplicationInsightsWriter>
:SDKLogger true
- Buka terminal dan mulai
collectd
dalam mode verbose untuk melihat masalah apa pun yang dilaporkannya:sudo collectd -f
Masalah yang diketahui
Plug-in tulis Application Insights tidak kompatibel dengan plug-in baca tertentu. Beberapa plug-in terkadang mengirim NaN
, tetapi plug-in Application Insights mengharapkan nomor floating-point.
-
Gejala: Log
collectd
menunjukkan kesalahan yang mencakup "AI: ... SintaksError: Token tak terduga N." - Solusi sementara: Kecualikan data yang dikumpulkan oleh plug-in tulis masalah.
Gunakan Micrometer dengan Application Insights Java SDK (tidak disarankan)
Pemantauan aplikasi Micrometer mengukur metrik untuk kode aplikasi berbasis JVM dan memungkinkan Anda mengekspor data ke sistem pemantauan favorit Anda. Bagian ini mengajarkan Anda cara menggunakan Micrometer dengan Application Insights untuk aplikasi Spring Boot dan non-Spring Boot.
Gunakan Spring Boot 1.5x
Tambahkan dependensi berikut ke file pom.xml atau build.gradle Anda:
- Application Insights spring-boot-starter 2.5.0 atau yang lebih baru.
- Micrometer Azure Registry 1.1.0 atau lebih tinggi.
- Micrometer Spring Legacy 1.1.0 atau lebih tinggi. Ini mendukung kode konfigurasi otomatis dalam kerangka kerja Spring.
- Sumber daya ApplicationInsights.
Ikuti langkah-langkah berikut:
Perbarui file pom.xml aplikasi Spring Boot Anda dan tambahkan dependensi berikut di dalamnya:
<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>
Perbarui file application.properties atau YML dengan kunci instrumentasi Application Insights dengan menggunakan properti berikut:
azure.application-insights.instrumentation-key=<your-instrumentation-key-here>
Bangun aplikasi Anda dan jalankan.
Langkah-langkah sebelumnya akan membuat Anda siap dan berjalan dengan metrik pra-agregat yang dikumpulkan secara otomatis ke Azure Monitor.
Gunakan Spring 2.x
Tambahkan dependensi berikut ke file pom.xml atau build.gradle Anda:
- Application Insights Spring-boot-starter 2.1.2 atau yang lebih tinggi
- Azure-spring-boot-metrics-starters 2.0.7 atau yang lebih baru
- Sumber daya Application Insights
Ikuti langkah-langkah berikut:
Perbarui file pom.xml aplikasi Spring Boot Anda dan tambahkan dependensi berikut di dalamnya:
<dependency> <groupId>com.microsoft.azure</groupId> <artifactId>azure-spring-boot-metrics-starter</artifactId> <version>2.0.7</version> </dependency>
Perbarui file application.properties atau YML dengan kunci instrumentasi Application Insights dengan menggunakan properti berikut:
azure.application-insights.instrumentation-key=<your-instrumentation-key-here>
Bangun aplikasi Anda dan jalankan.
Langkah-langkah sebelumnya akan membuat Anda berjalan dengan metrik pra-agregat yang dikumpulkan secara otomatis ke Azure Monitor. Untuk informasi selengkapnya tentang cara menyempurnakan starter Spring Boot Application Insights, lihat readme di GitHub.
Metrik default:
- Metrik yang dikonfigurasi secara otomatis untuk Tomcat, JVM, Logback Metrics, Log4J Metrics, Uptime Metrics, Processor Metrics, dan FileDescriptorMetrics.
- Misalnya, jika Netflix Hystrix ada di jalur kelas, kita juga mendapatkan metrik tersebut.
- Metrik berikut dapat tersedia dengan menambahkan masing-masing kacang:
-
CacheMetrics
(CaffeineCache
,EhCache2
,GuavaCache
,HazelcastCache
, danJCache
) DataBaseTableMetrics
HibernateMetrics
JettyMetrics
-
OkHttp3
Metrik -
Kafka
Metrik
-
Nonaktifkan pengumpulan metrik otomatis:
- Metrik JVM:
management.metrics.binders.jvm.enabled=false
- Metrik Logback:
management.metrics.binders.logback.enabled=false
- Metrik Uptime:
management.metrics.binders.uptime.enabled=false
- Metrik Prosesor:
management.metrics.binders.processor.enabled=false
- FileDescriptorMetrics:
management.metrics.binders.files.enabled=false
- Metrik Hystrix jika pustaka pada
classpath
:management.metrics.binders.hystrix.enabled=false
- Metrik AspectJ jika pustaka pada
classpath
:spring.aop.enabled=false
Catatan
Tentukan properti sebelumnya dalam file application.properties atau application.yml dari aplikasi Spring Boot Anda.
Gunakan Micrometer dengan aplikasi web non-Spring Boot
Tambahkan dependensi berikut ke file pom.xml atau build.gradle Anda:
- Application Insights Web Auto 2.5.0 atau yang lebih baru
- Micrometer Azure Registry 1.1.0 atau yang lebih tinggi
- Sumber daya Application Insights
Ikuti langkah-langkah berikut:
Tambahkan dependensi berikut di file pom.xml atau build.gradle Anda:
<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>
Jika Anda belum melakukannya, tambahkan file ApplicationInsights.xml di folder sumber daya. Untuk informasi selengkapnya, lihat Menambahkan file ApplicationInsights.xml.
Contoh kelas Servlet Sampel (memancarkan timer metrik):
@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"); } }
File konfigurasi sampel:
@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) { } }
Untuk mempelajari selengkapnya tentang metrik, lihat dokumentasi Micrometer.
Kode sampel lain tentang cara membuat berbagai jenis metrik dapat ditemukan di repositori Micrometer GitHub resmi.
Mengikat lebih banyak koleksi metrik
Bagian berikut ini memperlihatkan kepada Anda cara mengumpulkan lebih banyak metrik.
SpringBoot/Spring
Buat bean dari kategori metrik masing-masing. Misalnya, Anda memerlukan metrik Guava Cache:
@Bean
GuavaCacheMetrics guavaCacheMetrics() {
Return new GuavaCacheMetrics();
}
Beberapa metrik tidak diaktifkan secara default tetapi dapat terikat dengan cara sebelumnya. Untuk daftar lengkapnya, lihat repositori Micrometer GitHub.
Aplikasi Non-Spring
Tambahkan kode pengikatan berikut ke file konfigurasi:
New GuavaCacheMetrics().bind(registry);
Langkah berikutnya
- Tambahkan pemantauan ke halaman web Anda untuk memantau waktu pemuatan halaman, panggilan AJAX, dan pengecualian browser.
- Tulis telemetri kustom untuk melacak penggunaan di browser atau di server.
- Gunakan Analitik Log untuk kueri canggih melalui telemetri dari aplikasi Anda.
- Gunakan Pencarian diagnostik.
- Pertimbangkan pengambilan sampel sebagai alternatif untuk pemfilteran yang tidak mengubah metrik Anda.
- Untuk mempelajari lebih lanjut tentang Micrometer, lihat dokumentasi Micrometer.
- Untuk mempelajari tentang Spring di Azure, lihat dokumentasi Spring on Azure.
- Untuk informasi selengkapnya, lihat Azure untuk pengembang Java.