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:

Mendapatkan kunci instrumentasi Application Insights

  1. Masuk ke portal Microsoft Azure.

  2. Di portal Azure, buat sumber daya Application Insights. Atur jenis aplikasi ke aplikasi web Java.

  3. Temukan kunci instrumentasi dari sumber daya baru. Anda harus segera menempelkan kunci ini ke dalam proyek kode Anda.

    Cuplikan layar panel Gambaran Umum untuk sumber daya Application Insights di portal Azure dengan kunci instrumentasi disorot.

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-autokomponen , , -webdan -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.

Cuplikan layar yang memperlihatkan gambaran umum data sampel.

Pelajari selengkapnya tentang metrik.

Klik bagan apa pun untuk melihat metrik agregat yang lebih rinci.

Cuplikan layar yang memperlihatkan panel kegagalan Application Insights dengan bagan.

Data instans

Klik jenis permintaan tertentu untuk melihat instans satu per satu.

Cuplikan layar yang memperlihatkan penelusuran ke dalam tampilan sampel tertentu.

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.

Cuplikan layar yang memperlihatkan contoh Analitik Log di portal Azure.

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 dan http.proxyPort.

  • Pada server Windows, instal:

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.

Cuplikan layar yang memperlihatkan panel Metrik untuk sumber daya Application Insights di portal Azure dengan byte privat proses dipilih.

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 format Attribute.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. Jika categoryName adalah Process 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:

Mengirimkan telemetri Anda sendiri

Setelah menginstal SDK, Anda dapat menggunakan API untuk mengirim telemetri Anda sendiri:

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.+'

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 .

Cuplikan layar yang memperlihatkan panel Pencarian untuk sumber daya Application Insights di portal Azure.

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, dan java.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.
  • 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.

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

  1. 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.

  2. 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>"

  3. 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:

  1. Pilih Pengaturan>Pengaturan Aplikasi.

  2. 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.

  3. 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:

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.

Cuplikan layar yang memperlihatkan panel gambaran umum untuk sumber daya Application Insights di portal Azure dengan kunci instrumentasi disorot.

Instal collectd dan plug-in

Di komputer server Linux Anda:

  1. Instal collectd versi 5.4.0 atau yang lebih baru.
  2. Unduh plug-in penulis yang dikumpulkan Application Insights. Perhatikan nomor versi.
  3. Salin jar plug-in ke dalam /usr/share/collectd/java.
  4. 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 dan write dari disk 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.

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:

Ikuti langkah-langkah berikut:

  1. 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>
    
    
  2. Perbarui file application.properties atau YML dengan kunci instrumentasi Application Insights dengan menggunakan properti berikut:

    azure.application-insights.instrumentation-key=<your-instrumentation-key-here>

  3. 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:

  1. 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>
    
  2. Perbarui file application.properties atau YML dengan kunci instrumentasi Application Insights dengan menggunakan properti berikut:

    azure.application-insights.instrumentation-key=<your-instrumentation-key-here>

  3. 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, dan JCache)
    • 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:

Ikuti langkah-langkah berikut:

  1. 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>
    
  2. Jika Anda belum melakukannya, tambahkan file ApplicationInsights.xml di folder sumber daya. Untuk informasi selengkapnya, lihat Menambahkan file ApplicationInsights.xml.

  3. 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");
          }
    
        }
    
    
  4. 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