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_CONTENT
lingkungan .
String koneksi
String koneksi diperlukan. Anda dapat menemukan string koneksi di sumber daya Application Insights Anda.
{
"connectionString": "..."
}
Anda juga dapat mengatur string koneksi dengan menggunakan variabel APPLICATIONINSIGHTS_CONNECTION_STRING
lingkungan . Kemudian lebih diutamakan daripada string koneksi yang ditentukan dalam konfigurasi JSON.
Atau Anda dapat mengatur string koneksi dengan menggunakan properti applicationinsights.connection.string
sistem 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.name
sistem 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_INSTANCE
lingkungan . Kemudian lebih diutamakan daripada instans peran cloud yang ditentukan dalam konfigurasi JSON.
Atau Anda dapat mengatur instans peran cloud dengan menggunakan properti applicationinsights.role.instance
sistem 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_SECOND
lingkungan . 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_PERCENTAGE
lingkungan . 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).objectName
adalah Nama Objek dariJMX MBean
yang ingin Anda kumpulkan. Tanda bintang karakter kartubebas (*) didukung.attribute
adalah nama atribut di dalamJMX 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
/myapp1
jalur 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
/myapp1
jalur 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_LEVEL
lingkungan . 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
, , ClassName
MethodName
, 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:
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>
Gunakan registri global Micrometer untuk membuat meteran seperti yang ditunjukkan dalam contoh berikut.
static final Counter counter = Metrics.counter("test.counter");
Gunakan penghitung untuk merekam metrik dengan menggunakan perintah berikut.
counter.increment();
Metrik diserap ke dalam tabel customMetrics , dengan tag yang diambil di
customDimensions
kolom. Anda juga dapat melihat metrik di penjelajah metrik diLog-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 sebagaitest_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_SECONDS
lingkungan . Kemudian lebih diutamakan daripada yang metricIntervalSeconds
ditentukan dalam konfigurasi JSON.
Pengaturan berlaku untuk metrik berikut:
- Penghitung kinerja default: Misalnya, CPU dan memori
- Metrik kustom default: Misalnya, waktu pengumpulan sampah
- Metrik JMX yang dikonfigurasi: Lihat bagian metrik JMX
- Metrik mikrometer: Lihat bagian Metrik Mikrometer autocollected
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_PROXY
lingkungan , 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 berupaOFF
,ERROR
,WARN
,INFO
,DEBUG
, atauTRACE
.path
dapat berupa jalur mutlak atau relatif. Jalur relatif diatasi terhadap direktori tempatapplicationinsights-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_LEVEL
lingkungan . 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_PATH
lingkungan . 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
}
}
}