Bagikan melalui


Opsi konfigurasi: Azure Monitor Application Insights untuk Java

Artikel ini memperlihatkan kepada Anda cara mengonfigurasi Azure Monitor Application Insights untuk Java.

String koneksi dan nama peran

String koneksi dan nama peran adalah pengaturan paling umum yang Anda butuhkan untuk memulai:

{
  "connectionString": "...",
  "role": {
    "name": "my cloud role name"
  }
}

String koneksi diperlukan. Nama peran penting kapan saja Anda mengirim data dari aplikasi yang berbeda ke sumber daya Application Insights yang sama.

Informasi selengkapnya dan opsi konfigurasi disediakan di bagian berikut.

Jalur file konfigurasi

Secara default, Application Insights Java 3.x mengharapkan file konfigurasi diberi nama applicationinsights.json, dan berada di direktori yang sama dengan applicationinsights-agent-3.6.2.jar.

Anda dapat menentukan jalur file konfigurasi Anda sendiri dengan menggunakan salah satu dari dua opsi ini:

  • APPLICATIONINSIGHTS_CONFIGURATION_FILE Variabel lingkungan
  • properti sistem Java applicationinsights.configuration.file

Jika Anda menentukan jalur relatif, jalur tersebut akan diselesaikan relatif terhadap direktori tempat applicationinsights-agent-3.6.2.jar berada.

Atau, alih-alih menggunakan file konfigurasi, Anda dapat menentukan seluruh konten konfigurasi JSON melalui variabel APPLICATIONINSIGHTS_CONFIGURATION_CONTENTlingkungan .

String koneksi

String koneksi diperlukan. Anda dapat menemukan string koneksi di sumber daya Application Insights Anda.

Cuplikan layar yang memperlihatkan string koneksi Application Insights.

{
  "connectionString": "..."
}

Anda juga dapat mengatur string koneksi dengan menggunakan variabel APPLICATIONINSIGHTS_CONNECTION_STRINGlingkungan . Kemudian lebih diutamakan daripada string koneksi yang ditentukan dalam konfigurasi JSON.

Atau Anda dapat mengatur string koneksi dengan menggunakan properti applicationinsights.connection.stringsistem Java . Ini juga lebih diutamakan daripada string koneksi yang ditentukan dalam konfigurasi JSON.

Anda juga dapat mengatur string koneksi dengan menentukan file untuk memuat string koneksi.

Jika Anda menentukan jalur relatif, jalur tersebut akan diselesaikan relatif terhadap direktori tempat applicationinsights-agent-3.6.2.jar berada.

{
  "connectionString": "${file:connection-string-file.txt}"
}

File hanya boleh berisi string koneksi dan tidak ada yang lain.

Tidak mengatur string koneksi menonaktifkan agen Java.

Jika Anda memiliki beberapa aplikasi yang disebarkan di Java Virtual Machine (JVM) yang sama dan ingin mereka mengirim telemetri ke string koneksi yang berbeda, lihat Penggantian string koneksi (pratinjau).

Nama peran cloud

Nama peran cloud digunakan untuk memberi label komponen pada peta aplikasi.

Jika Anda ingin mengatur nama peran cloud:

{
  "role": {   
    "name": "my cloud role name"
  }
}

Jika nama peran cloud tidak diatur, nama sumber daya Application Insights digunakan untuk memberi label komponen pada peta aplikasi.

Anda juga dapat mengatur nama peran cloud menggunakan variabel lingkungan APPLICATIONINSIGHTS_ROLE_NAME. Kemudian lebih diutamakan daripada nama peran cloud yang ditentukan dalam konfigurasi JSON.

Atau Anda dapat mengatur nama peran cloud dengan menggunakan properti applicationinsights.role.namesistem Java . Ini juga lebih diutamakan daripada nama peran cloud yang ditentukan dalam konfigurasi JSON.

Jika Anda memiliki beberapa aplikasi yang disebarkan di JVM yang sama dan ingin mereka mengirim telemetri ke nama peran cloud yang berbeda, lihat Ambil alih nama peran cloud (pratinjau).

Instans peran cloud

Instans peran cloud default ke nama komputer.

Jika Anda ingin mengatur instans peran cloud menjadi sesuatu yang berbeda dari nama komputer:

{
  "role": {
    "name": "my cloud role name",
    "instance": "my cloud role instance"
  }
}

Anda juga dapat mengatur instans peran cloud dengan menggunakan variabel APPLICATIONINSIGHTS_ROLE_INSTANCElingkungan . Kemudian lebih diutamakan daripada instans peran cloud yang ditentukan dalam konfigurasi JSON.

Atau Anda dapat mengatur instans peran cloud dengan menggunakan properti applicationinsights.role.instancesistem Java . Ini juga lebih diutamakan daripada instans peran cloud yang ditentukan dalam konfigurasi JSON.

Pengambilan sampel

Catatan

Pengambilan sampel dapat menjadi cara yang bagus untuk mengurangi biaya Application Insights. Pastikan untuk menyiapkan konfigurasi pengambilan sampel dengan tepat untuk kasus penggunaan Anda.

Pengambilan sampel didasarkan pada permintaan, yang berarti bahwa jika permintaan diambil (diambil sampelnya), begitu juga dependensi, log, dan pengecualiannya.

Pengambilan sampel juga didasarkan pada ID pelacakan untuk membantu memastikan keputusan pengambilan sampel yang konsisten di berbagai layanan.

Pengambilan sampel hanya berlaku untuk log di dalam permintaan. Log yang tidak berada di dalam permintaan (misalnya, log startup) selalu dikumpulkan secara default. Jika Anda ingin mengambil sampel log tersebut, Anda dapat menggunakan penggantian Pengambilan Sampel.

Pengambilan sampel terbatas laju

Mulai dari 3.4.0, pengambilan sampel terbatas tarif tersedia dan sekarang menjadi default.

Jika tidak ada pengambilan sampel yang dikonfigurasi, defaultnya sekarang adalah pengambilan sampel terbatas laju yang dikonfigurasi untuk menangkap paling banyak (sekitar) lima permintaan per detik, bersama dengan semua dependensi dan log pada permintaan tersebut.

Konfigurasi ini menggantikan default sebelumnya, yaitu menangkap semua permintaan. Jika Anda masih ingin mengambil semua permintaan, gunakan pengambilan sampel persentase tetap dan atur persentase pengambilan sampel menjadi 100.

Catatan

Pengambilan sampel terbatas laju adalah perkiraan karena secara internal harus menyesuaikan persentase pengambilan sampel "tetap" dari waktu ke waktu untuk memancarkan jumlah item yang akurat pada setiap rekaman telemetri. Secara internal, pengambilan sampel terbatas laju disetel untuk beradaptasi dengan cepat (0,1 detik) ke beban aplikasi baru. Untuk alasan ini, Anda tidak boleh melihatnya melebihi tingkat yang dikonfigurasi sebanyak itu, atau untuk waktu yang sangat lama.

Contoh ini menunjukkan cara mengatur pengambilan sampel untuk menangkap paling banyak (sekitar) satu permintaan per detik:

{
  "sampling": {
    "requestsPerSecond": 1.0
  }
}

requestsPerSecond bisa berupa desimal, sehingga Anda dapat mengonfigurasinya untuk menangkap kurang dari satu permintaan per detik jika Anda mau. Misalnya, nilai 0.5 berarti menangkap paling banyak satu permintaan setiap 2 detik.

Anda juga dapat mengatur persentase pengambilan sampel dengan menggunakan variabel APPLICATIONINSIGHTS_SAMPLING_REQUESTS_PER_SECONDlingkungan . Kemudian lebih diutamakan daripada batas tarif yang ditentukan dalam konfigurasi JSON.

Pengambilan sampel persentase tetap

Contoh ini menunjukkan cara mengatur pengambilan sampel untuk mengambil sekitar sepertiga dari semua permintaan:

{
  "sampling": {
    "percentage": 33.333
  }
}

Anda juga dapat mengatur persentase pengambilan sampel dengan menggunakan variabel APPLICATIONINSIGHTS_SAMPLING_PERCENTAGElingkungan . Kemudian lebih diutamakan daripada persentase pengambilan sampel yang ditentukan dalam konfigurasi JSON.

Catatan

Untuk persentase pengambilan sampel, pilih persentase yang mendekati 100/N, di mana N adalah bilangan bulat. Saat ini, pengambilan sampel tidak mendukung nilai lain.

Sampel pengambil alihan

Pengalihan pengambilan sampel memungkinkan Anda mengambil alih persentase pengambilan sampel default. Misalnya, Anda dapat:

  • Atur persentase pengambilan sampel ke 0, atau beberapa nilai kecil, untuk pemeriksaan kesehatan yang bising.
  • Atur persentase pengambilan sampel ke 0, atau beberapa nilai kecil, untuk panggilan dependensi yang bising.
  • Atur persentase pengambilan sampel ke 100 untuk jenis permintaan penting. Misalnya, Anda dapat menggunakan /login meskipun Anda memiliki pengambilan sampel default yang dikonfigurasi ke sesuatu yang lebih rendah.

Untuk informasi selengkapnya, lihat dokumentasi Pengalihan pengambilan sampel.

Metrik Ekstensi Manajemen Java

Jika Anda ingin mengumpulkan beberapa metrik Java Management Extensions (JMX) lainnya:

{
  "jmxMetrics": [
    {
      "name": "JVM uptime (millis)",
      "objectName": "java.lang:type=Runtime",
      "attribute": "Uptime"
    },
    {
      "name": "MetaSpace Used",
      "objectName": "java.lang:type=MemoryPool,name=Metaspace",
      "attribute": "Usage.used"
    }
  ]
}

Dalam contoh konfigurasi sebelumnya:

  • name adalah nama metrik yang ditetapkan ke metrik JMX ini (bisa apa saja).
  • objectNameadalah Nama Objek dari JMX MBean yang ingin Anda kumpulkan. Tanda bintang karakter kartubebas (*) didukung.
  • attribute adalah nama atribut di dalam JMX MBean yang ingin Anda kumpulkan.

Nilai metrik JMX Numerik dan Boolean didukung. Metrik Boolean JMX dipetakan ke 0 untuk false dan 1 untuk true.

Untuk informasi selengkapnya, lihat dokumentasi metrik JMX.

Dimensi kustom

Jika Anda ingin menambahkan dimensi kustom ke semua telemetri Anda:

{
  "customDimensions": {
    "mytag": "my value",
    "anothertag": "${ANOTHER_VALUE}"
  }
}

Anda dapat menggunakan ${...} untuk membaca nilai dari variabel lingkungan yang ditentukan saat startup.

Catatan

Mulai dari versi 3.0.2, jika Anda menambahkan dimensi kustom bernama service.version, nilai disimpan di application_Version kolom dalam tabel Log Application Insights alih-alih sebagai dimensi kustom.

Atribut yang diwariskan (pratinjau)

Dimulai dengan versi 3.2.0, Anda dapat mengatur dimensi kustom secara terprogram pada telemetri permintaan Anda. Ini memastikan pewarisan berdasarkan dependensi dan telemetri log. Semua diambil dalam konteks permintaan tersebut.

{
  "preview": {
    "inheritedAttributes": [
      {
        "key": "mycustomer",
        "type": "string"
      }
    ]
  }
}

Dan kemudian di awal setiap permintaan, panggil:

Span.current().setAttribute("mycustomer", "xyz");

Lihat juga: Menambahkan properti kustom ke Rentang.

Pengambilalihan string koneksi (pratinjau)

Fitur ini berada dalam pratinjau, mulai dari 3.4.0.

Penimpaan string koneksi memungkinkan Anda mengambil alih string koneksi default. Misalnya, Anda dapat:

  • Atur satu string koneksi untuk satu awalan /myapp1jalur HTTP .
  • Atur string koneksi lain untuk awalan /myapp2/jalur HTTP lain .
{
  "preview": {
    "connectionStringOverrides": [
      {
        "httpPathPrefix": "/myapp1",
        "connectionString": "..."
      },
      {
        "httpPathPrefix": "/myapp2",
        "connectionString": "..."
      }
    ]
  }
}

Pengambilalihan nama peran cloud (pratinjau)

Fitur ini berada dalam pratinjau, mulai dari 3.3.0.

Penimpaan nama peran cloud memungkinkan Anda mengambil alih nama peran cloud default. Misalnya, Anda dapat:

  • Atur satu nama peran cloud untuk satu awalan /myapp1jalur HTTP .
  • Atur nama peran cloud lain untuk awalan /myapp2/jalur HTTP lain .
{
  "preview": {
    "roleNameOverrides": [
      {
        "httpPathPrefix": "/myapp1",
        "roleName": "Role A"
      },
      {
        "httpPathPrefix": "/myapp2",
        "roleName": "Role B"
      }
    ]
  }
}

String koneksi dikonfigurasi saat runtime

Mulai dari versi 3.4.8, jika Anda memerlukan kemampuan untuk mengonfigurasi string koneksi saat runtime, tambahkan properti ini ke konfigurasi json Anda:

{
  "connectionStringConfiguredAtRuntime": true
}

Tambahkan applicationinsights-core ke aplikasi Anda:

<dependency>
  <groupId>com.microsoft.azure</groupId>
  <artifactId>applicationinsights-core</artifactId>
  <version></version>
</dependency>

Gunakan metode statis configure(String) di kelas com.microsoft.applicationinsights.connectionstring.ConnectionString.

Catatan

Telemetri apa pun yang diambil sebelum mengonfigurasi string koneksi akan dihilangkan, jadi yang terbaik adalah mengonfigurasinya sedini mungkin dalam startup aplikasi Anda.

Dependensi InProc Autocollect (pratinjau)

Mulai dari versi 3.2.0, jika Anda ingin mengambil dependensi "InProc" pengontrol, gunakan konfigurasi berikut:

{
  "preview": {
    "captureControllerSpans": true
  }
}

Browser SDK Loader (pratinjau)

Fitur ini secara otomatis menyuntikkan Browser SDK Loader ke halaman HTML aplikasi Anda, termasuk mengonfigurasi String Koneksi yang sesuai.

Misalnya, saat aplikasi java Anda mengembalikan respons seperti:

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Title</title>
  </head>
  <body>
  </body>
</html>

Ini secara otomatis memodifikasi untuk mengembalikan:

<!DOCTYPE html>
<html lang="en">
  <head>
    <script type="text/javascript">
    !function(v,y,T){var S=v.location,k="script"
    <!-- Removed for brevity -->
    connectionString: "YOUR_CONNECTION_STRING"
    <!-- Removed for brevity --> }});
    </script>
    <title>Title</title>
  </head>
  <body>
  </body>
</html>

Skrip ini bertujuan untuk membantu pelanggan melacak data pengguna web, dan mengirim telemetri sisi server pengumpulan kembali ke portal Azure pengguna. Detail dapat ditemukan di ApplicationInsights-JS.

Jika Anda ingin mengaktifkan fitur ini, tambahkan opsi konfigurasi di bawah ini:

{
  "preview": {
    "browserSdkLoader": {
      "enabled": true
    }
  }
}

Prosesor telemetri (pratinjau)

Anda dapat menggunakan prosesor telemetri untuk mengonfigurasi aturan yang diterapkan pada telemetri permintaan, dependensi, dan pelacakan. Misalnya, Anda dapat:

  • Melakukan masking data sensitif.
  • Secara kondisional menambahkan dimensi kustom.
  • Memperbarui nama rentang, yang digunakan untuk menggabungkan telemetri serupa di portal Microsoft Azure.
  • Jatuhkan atribut rentang tertentu untuk mengontrol biaya penyerapan.

Untuk informasi selengkapnya, lihat dokumentasi prosesor Telemetri.

Catatan

Jika Anda ingin menghilangkan rentang tertentu (seluruh) untuk mengontrol biaya penyerapan, lihat Penggantian pengambilan sampel.

Instrumentasi kustom (pratinjau)

Mulai dari verion 3.3.1, Anda dapat mengambil rentang untuk metode dalam aplikasi Anda:

{
  "preview": {
    "customInstrumentation": [
      {
        "className": "my.package.MyClass",
        "methodName": "myMethod"
      }
    ]
  }
}

Menonaktifkan pengambilan sampel penyerapan secara lokal (pratinjau)

Secara default, ketika persentase pengambilan sampel yang efektif di agen Java adalah 100% dan pengambilan sampel penyerapan telah dikonfigurasi pada sumber daya Application Insights Anda, persentase pengambilan sampel penyerapan akan diterapkan.

Perhatikan bahwa perilaku ini berlaku untuk pengambilan sampel laju tetap sebesar 100% dan juga berlaku untuk pengambilan sampel terbatas tarif ketika tingkat permintaan tidak melebihi batas tarif (secara efektif menangkap 100% selama jendela waktu geser terus-menerus).

Mulai dari 3.5.3, Anda dapat menonaktifkan perilaku ini (dan menyimpan 100% telemetri dalam kasus ini bahkan ketika pengambilan sampel penyerapan telah dikonfigurasi pada sumber daya Application Insights Anda):

{
  "preview": {
    "sampling": {
      "ingestionSamplingEnabled": false
    }
  }
}

Pengelogan yang dikumpulkan secara otomatis

Log4j, Logback, JBoss Logging, dan java.util.logging diinstrumentasi secara otomatis. Pengelogan yang dilakukan melalui kerangka kerja pengelogan ini dipilih secara otomatis.

Pengelogan hanya diambil jika:

  • Memenuhi tingkat yang dikonfigurasi untuk kerangka kerja pengelogan.
  • Juga memenuhi tingkat yang dikonfigurasi untuk Application Insights.

Misalnya, jika kerangka kerja pengelogan Anda dikonfigurasi untuk mencatat WARN (dan Anda mengonfigurasinya seperti yang dijelaskan sebelumnya) dari paket com.example, dan Application Insights dikonfigurasi untuk menangkap INFO (dan Anda mengonfigurasi seperti yang dijelaskan), Application Insights hanya mengambil WARN (dan lebih parah) dari paket com.example.

Tingkat default yang dikonfigurasi untuk Application Insights adalah INFO. Jika Anda ingin mengubah tingkat ini:

{
  "instrumentation": {
    "logging": {
      "level": "WARN"
    }
  }
}

Anda juga dapat mengatur tingkat dengan menggunakan variabel APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVELlingkungan . Kemudian lebih diutamakan daripada tingkat yang ditentukan dalam konfigurasi JSON.

Anda dapat menggunakan nilai yang valid level ini untuk menentukan dalam applicationinsights.json file. Tabel menunjukkan bagaimana mereka sesuai dengan tingkat pengelogan dalam kerangka kerja pengelogan yang berbeda.

Tingkat Log4j Logback JBoss JUL
TIDAK AKTIF TIDAK AKTIF TIDAK AKTIF TIDAK AKTIF TIDAK AKTIF
FATAL FATAL KESALAHAN FATAL PARAH
KESALAHAN (atau PARAH) KESALAHAN KESALAHAN KESALAHAN PARAH
PERINGATKAN (atau PERINGATAN) PERINGATKAN PERINGATKAN PERINGATKAN PERINGATAN
INFO INFO INFO INFO INFO
KONFIGURASI DEBUG DEBUG DEBUG KONFIGURASI
DEBUG (atau BAIK) DEBUG DEBUG DEBUG BAIK
LEBIH BAIK DEBUG DEBUG DEBUG LEBIH BAIK
JEJAK (atau TERBAIK) TRACE TRACE TRACE TERBAIK
SEMUA SEMUA SEMUA SEMUA SEMUA

Catatan

Jika objek pengecualian diteruskan ke pencatat, pesan log (dan detail objek pengecualian) akan muncul di portal Azure di bawah exceptions tabel alih-alih traces tabel. Jika Anda ingin melihat pesan log di seluruh traces tabel dan exceptions , Anda dapat menulis kueri Log (Kusto) untuk disatukan di seluruh tabel. Contohnya:

union traces, (exceptions | extend message = outerMessage)
| project timestamp, message, itemType

Penanda log (pratinjau)

Mulai dari 3.4.2, Anda dapat mengambil penanda log untuk Logback dan Log4j 2:

{
  "preview": {
    "captureLogbackMarker":  true,
    "captureLog4jMarker":  true
  }
}

Atribut log lainnya untuk Logback (pratinjau)

Mulai dari 3.4.3, Anda dapat menangkap FileName, , ClassNameMethodName, dan LineNumber, untuk Logback:

{
  "preview": {
    "captureLogbackCodeAttributes": true
  }
}

Peringatan

Menangkap atribut kode mungkin menambahkan overhead performa.

Tingkat pengelogan sebagai dimensi kustom

Mulai dari versi 3.3.0, LoggingLevel tidak diambil secara default sebagai bagian dari dimensi kustom Jejak karena data tersebut SeverityLevel sudah diambil di bidang .

Jika diperlukan, Anda dapat mengaktifkan kembali perilaku sebelumnya untuk sementara waktu:

{
  "preview": {
    "captureLoggingLevelAsCustomDimension": true
  }
}

Metrik Mikrometer yang Dipilih Otomatis (termasuk metrik Spring Boot Actuator)

Jika aplikasi Anda menggunakan Micrometer, metrik yang dikirim ke registri global Micrometer akan dipilih secara otomatis.

Selain itu, jika aplikasi Anda menggunakan Spring Boot Actuator, metrik yang dikonfigurasi oleh Spring Boot Actuator juga dipilih secara otomatis.

Untuk mengirim metrik kustom menggunakan mikrometer:

  1. Tambahkan Micrometer ke aplikasi Anda seperti yang ditunjukkan dalam contoh berikut.

    <dependency>
      <groupId>io.micrometer</groupId>
      <artifactId>micrometer-core</artifactId>
      <version>1.6.1</version>
    </dependency>
    
  2. Gunakan registri global Micrometer untuk membuat meteran seperti yang ditunjukkan dalam contoh berikut.

    static final Counter counter = Metrics.counter("test.counter");
    
  3. Gunakan penghitung untuk merekam metrik dengan menggunakan perintah berikut.

    counter.increment();
    
  4. Metrik diserap ke dalam tabel customMetrics , dengan tag yang diambil di customDimensions kolom. Anda juga dapat melihat metrik di penjelajah metrik di Log-based metrics bawah namespace metrik.

    Catatan

    Application Insights Java mengganti semua karakter non-alfanumerik (kecuali tanda hubung) dalam nama metrik Mikrometer dengan garis bawah. Akibatnya, metrik sebelumnya test.counter akan muncul sebagai test_counter.

Untuk menonaktifkan autocollection metrik Micrometer dan metrik Spring Boot Actuator:

Catatan

Metrik kustom ditagih secara terpisah dan dapat menghasilkan biaya tambahan. Pastikan untuk memeriksa informasi Harga. Untuk menonaktifkan metrik Micrometer dan Spring Boot Actuator, tambahkan konfigurasi berikut ke file konfigurasi Anda.

{
  "instrumentation": {
    "micrometer": {
      "enabled": false
    }
  }
}

Masking kueri Konektivitas Database Java

Nilai harfiah dalam kueri Java Database Connectivity (JDBC) diselubungi secara default untuk menghindari pengambilan data sensitif secara tidak sengaja.

Mulai dari 3.4.0, perilaku ini dapat dinonaktifkan. Contohnya:

{
  "instrumentation": {
    "jdbc": {
      "masking": {
        "enabled": false
      }
    }
  }
}

Penyembunyian kueri Mongo

Nilai harfiah dalam kueri Mongo diselubungi secara default untuk menghindari penangkapan data sensitif secara tidak sengaja.

Mulai dari 3.4.0, perilaku ini dapat dinonaktifkan. Contohnya:

{
  "instrumentation": {
    "mongo": {
      "masking": {
        "enabled": false
      }
    }
  }
}

Header HTTP

Mulai dari versi 3.3.0, Anda dapat mengambil header permintaan dan respons di telemetri server (permintaan):

{
  "preview": {
    "captureHttpServerHeaders": {
      "requestHeaders": [
        "My-Header-A"
      ],
      "responseHeaders": [
        "My-Header-B"
      ]
    }
  }
}

Nama header tidak peka huruf besar/kecil.

Contoh sebelumnya diambil dengan nama http.request.header.my_header_a properti dan http.response.header.my_header_b.

Demikian pula, Anda dapat menangkap header permintaan dan respons pada telemetri klien (dependensi) Anda:

{
  "preview": {
    "captureHttpClientHeaders": {
      "requestHeaders": [
        "My-Header-C"
      ],
      "responseHeaders": [
        "My-Header-D"
      ]
    }
  }
}

Sekali lagi, nama header tidak peka huruf besar/kecil. Contoh sebelumnya diambil dengan nama http.request.header.my_header_c properti dan http.response.header.my_header_d.

Kode respons http server 4xx

Secara default, permintaan server HTTP yang mengakibatkan kode respons 4xx ditangkap sebagai kesalahan.

Mulai dari versi 3.3.0, Anda dapat mengubah perilaku ini untuk menangkapnya sebagai sukses:

{
  "preview": {
    "captureHttpServer4xxAsError": false
  }
}

Menekan telemetri autocollected tertentu

Mulai dari versi 3.0.3, telemetri autocollected tertentu dapat ditekan dengan menggunakan opsi konfigurasi ini:

{
  "instrumentation": {
    "azureSdk": {
      "enabled": false
    },
    "cassandra": {
      "enabled": false
    },
    "jdbc": {
      "enabled": false
    },
    "jms": {
      "enabled": false
    },
    "kafka": {
      "enabled": false
    },
    "logging": {
      "enabled": false
    },
    "micrometer": {
      "enabled": false
    },
    "mongo": {
      "enabled": false
    },
    "quartz": {
      "enabled": false
    },
    "rabbitmq": {
      "enabled": false
    },
    "redis": {
      "enabled": false
    },
    "springScheduling": {
      "enabled": false
    }
  }
}

Anda juga dapat menekan instrumentasi ini dengan mengatur variabel lingkungan ini menjadi false:

  • APPLICATIONINSIGHTS_INSTRUMENTATION_AZURE_SDK_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_CASSANDRA_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_JDBC_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_JMS_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_KAFKA_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_MICROMETER_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_MONGO_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_RABBITMQ_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_REDIS_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_SPRING_SCHEDULING_ENABLED

Variabel ini kemudian lebih diutamakan daripada variabel yang diaktifkan yang ditentukan dalam konfigurasi JSON.

Catatan

Jika Anda mencari kontrol yang lebih halus, misalnya, untuk menekan beberapa panggilan redis tetapi tidak semua panggilan redis, lihat Pengambilan sampel.

Instrumentasi pratinjau

Mulai dari versi 3.2.0, Anda dapat mengaktifkan instrumentasi pratinjau berikut:

{
  "preview": {
    "instrumentation": {
      "akka": {
        "enabled": true
      },
      "apacheCamel": {
        "enabled": true
      },
      "grizzly": {
        "enabled": true
      },
      "ktor": {
        "enabled": true
      },
      "play": {
        "enabled": true
      },
      "r2dbc": {
        "enabled": true
      },
      "springIntegration": {
        "enabled": true
      },
      "vertx": {
        "enabled": true
      }
    }
  }
}

Catatan

Instrumentasi Akka tersedia mulai dari versi 3.2.2. Instrumentasi Pustaka HTTP Vertx tersedia mulai dari versi 3.3.0.

Interval metrik

Secara default, metrik diambil setiap 60 detik.

Mulai dari versi 3.0.3, Anda dapat mengubah interval ini:

{
  "metricIntervalSeconds": 300
}

Mulai dari 3.4.9 GA, Anda juga dapat mengatur metricIntervalSeconds dengan menggunakan variabel APPLICATIONINSIGHTS_METRIC_INTERVAL_SECONDSlingkungan . Kemudian lebih diutamakan daripada yang metricIntervalSeconds ditentukan dalam konfigurasi JSON.

Pengaturan berlaku untuk metrik berikut:

Heartbeat

Secara default, Application Insights Java 3.x mengirimkan metrik heartbeat setiap 15 menit sekali. Jika Anda menggunakan metrik heartbeat untuk memicu pemberitahuan, Anda dapat meningkatkan frekuensi heartbeat ini:

{
  "heartbeat": {
    "intervalSeconds": 60
  }
}

Catatan

Anda tidak dapat meningkatkan interval menjadi lebih dari 15 menit karena data heartbeat juga digunakan untuk melacak penggunaan Application Insights.

Autentikasi

Catatan

Fitur autentikasi adalah GA sejak versi 3.4.17.

Anda dapat menggunakan autentikasi untuk mengonfigurasi agen untuk menghasilkan kredensial token yang diperlukan untuk autentikasi Microsoft Entra. Untuk informasi selengkapnya, lihat dokumentasi Autentikasi .

Proksi HTTP

Jika aplikasi Anda berada di belakang firewall dan tidak dapat terhubung langsung ke Application Insights, lihat alamat IP yang digunakan oleh Application Insights.

Untuk mengatasi masalah ini, Anda dapat mengonfigurasi Application Insights Java 3.x untuk menggunakan proksi HTTP.

{
  "proxy": {
    "host": "myproxy",
    "port": 8080
  }
}

Anda juga dapat mengatur proksi http menggunakan variabel APPLICATIONINSIGHTS_PROXYlingkungan , yang mengambil format https://<host>:<port>. Kemudian lebih diutamakan daripada proksi yang ditentukan dalam konfigurasi JSON.

Anda dapat memberikan pengguna dan kata sandi untuk proksi Anda dengan APPLICATIONINSIGHTS_PROXY variabel lingkungan: https://<user>:<password>@<host>:<port>.

Application Insights Java 3.x juga menghormati properti global https.proxyHost dan https.proxyPort sistem jika diatur, dan http.nonProxyHosts, jika diperlukan.

Pemulihan dari kegagalan penyerapan

Saat mengirim telemetri ke layanan Application Insights gagal, Application Insights Java 3.x menyimpan telemetri ke disk dan terus mencoba kembali dari disk.

Batas default untuk persistensi disk adalah 50 Mb. Jika Anda memiliki volume telemetri yang tinggi atau harus dapat pulih dari jaringan yang lebih lama atau pemadaman layanan penyerapan, Anda dapat meningkatkan batas ini mulai dari versi 3.3.0:

{
  "preview": {
    "diskPersistenceMaxSizeMb": 50
  }
}

Diagnostik mandiri

"Diagnostik mandiri" mengacu pada pengelogan internal dari Application Insights Java 3.x. Fungsionalitas ini dapat membantu menemukan dan mendiagnosis masalah dengan Application Insights itu sendiri.

Secara default, Application Insights Java 3.x mencatat di tingkat INFO pada file applicationinsights.log dan konsol, sesuai dengan konfigurasi ini:

{
  "selfDiagnostics": {
    "destination": "file+console",
    "level": "INFO",
    "file": {
      "path": "applicationinsights.log",
      "maxSizeMb": 5,
      "maxHistory": 1
    }
  }
}

Dalam contoh konfigurasi sebelumnya:

  • level dapat berupa OFF, ERROR, WARN, INFO, DEBUG, atau TRACE.
  • path dapat berupa jalur mutlak atau relatif. Jalur relatif diatasi terhadap direktori tempat applicationinsights-agent-3.6.2.jar berada.

Mulai dari versi 3.0.2, Anda juga dapat mengatur diagnostik level mandiri dengan menggunakan variabel APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVELlingkungan . Kemudian lebih diutamakan daripada tingkat diagnostik mandiri yang ditentukan dalam konfigurasi JSON.

Mulai dari versi 3.0.3, Anda juga dapat mengatur lokasi file diagnostik mandiri dengan menggunakan variabel APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_FILE_PATHlingkungan . Kemudian lebih diutamakan daripada jalur file diagnostik mandiri yang ditentukan dalam konfigurasi JSON.

Korelasi telemetri

Korelasi telemetri diaktifkan secara default, tetapi Anda dapat menonaktifkannya dalam konfigurasi.

{
  "preview": {
    "disablePropagation": true
  }
}

Contoh

Contoh ini menunjukkan seperti apa file konfigurasi dengan beberapa komponen. Konfigurasikan opsi tertentu berdasarkan kebutuhan Anda.

{
  "connectionString": "...",
  "role": {
    "name": "my cloud role name"
  },
  "sampling": {
    "percentage": 100
  },
  "jmxMetrics": [
  ],
  "customDimensions": {
  },
  "instrumentation": {
    "logging": {
      "level": "INFO"
    },
    "micrometer": {
      "enabled": true
    }
  },
  "proxy": {
  },
  "preview": {
    "processors": [
    ]
  },
  "selfDiagnostics": {
    "destination": "file+console",
    "level": "INFO",
    "file": {
      "path": "applicationinsights.log",
      "maxSizeMb": 5,
      "maxHistory": 1
    }
  }
}