Prosesor telemetri (pratinjau) - Azure Monitor Application Insights for Java
Catatan
Fitur prosesor telemetri ditetapkan sebagai pratinjau karena kami tidak dapat menjamin kompatibilitas mundur dari rilis ke rilis akibat status eksperimental dari konvensi semantik atribut. Namun, fitur ini telah diuji dan didukung dalam produksi.
Application Insights Java 3.x dapat memproses data telemetri sebelum data diekspor.
Beberapa kasus penggunaan:
- 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.
- Filter beberapa metrik untuk mengontrol biaya penyerapan.
Catatan
Jika Anda ingin menghilangkan rentang spesifik (semua) untuk mengontrol biaya penyerapan, lihat pengambilalihan pengambilan sampel.
Terminologi
Sebelum Anda mempelajari tentang prosesor telemetri, Anda harus memahami istilah rentang dan log.
Rentang adalah jenis telemetri yang mewakili salah satu dari:
- Permintaan masuk.
- Dependensi keluar (misalnya, panggilan jarak jauh ke layanan lain).
- Dependensi dalam proses (misalnya, pekerjaan yang sedang dilakukan oleh sub-komponen layanan).
Log adalah tipe telemetri yang mewakili:
- data log yang diambil dari Log4j, Logback, dan java.util.logging
Untuk prosesor telemetri, komponen rentang/log berikut ini penting:
- Nama
- Isi
- Atribut
Nama rentang adalah tampilan utama untuk permintaan dan dependensi di portal Microsoft Azure. Atribut span mewakili properti standar dan kustom dari permintaan atau dependensi tertentu.
Pesan atau isi jejak adalah tampilan utama untuk log di portal Microsoft Azure. Atribut log mewakili properti standar dan kustom dari log tertentu.
Tipe prosesor telemetri
Saat ini, empat jenis prosesor telemetri adalah
- Prosesor atribut
- Prosesor rentang
- Prosesor log
- Filter metrik
Prosesor atribut dapat menyisipkan, memperbarui, menghapus, atau memberikan hash pada atribut item telemetri (span
atau log
).
Atribut juga dapat menggunakan ekspresi reguler untuk mengekstrak satu atau beberapa atribut baru dari atribut yang ada.
Prosesor rentang dapat memperbarui nama telemetri permintaan dan dependensi. Prosesor rentang juga dapat menggunakan ekspresi reguler untuk mengekstrak satu atau beberapa atribut baru dari nama rentang.
Prosesor log dapat memperbarui nama telemetri log. Prosesor log juga dapat menggunakan ekspresi reguler untuk mengekstrak satu atau beberapa atribut baru dari nama log.
Filter metrik dapat memfilter metrik untuk membantu mengontrol biaya penyerapan.
Catatan
Saat ini, prosesor telemetri hanya memproses atribut string tipe. Prosesor-prosesor tersebut tidak memproses atribut tipe Boolean atau angka.
Memulai
Untuk memulai, buat file konfigurasi bernama applicationinsights.json. Simpan di direktori yang sama dengan applicationinsights-agent-*.jar. Gunakan templat berikut ini.
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
...
},
{
"type": "attribute",
...
},
{
"type": "span",
...
},
{
"type": "log",
...
},
{
"type": "metric-filter",
...
}
]
}
}
Prosesor atribut
Prosesor atribut memodifikasi atribut sebuah span
atau sebuah log
. Prosesor ini dapat mendukung kemampuan untuk memasukkan atau mengecualikan span
atau log
. Dibutuhkan daftar tindakan yang dilakukan dalam urutan yang ditentukan file konfigurasi. Prosesor mendukung tindakan berikut ini:
insert
update
delete
hash
extract
mask
insert
Tindakan insert
menyisipkan atribut baru dalam item telemetri tempat key
belum ada.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"value": "value1",
"action": "insert"
}
]
}
]
Tindakan insert
memerlukan pengaturan berikut:
key
- Baik
value
ataufromAttribute
action
:insert
update
Tindakan update
memperbarui atribut dalam item telemetri tempat key
sudah ada.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"value": "newValue",
"action": "update"
}
]
}
]
Tindakan update
memerlukan pengaturan berikut:
key
- Baik
value
ataufromAttribute
action
:update
delete
Tindakan delete
menghapus atribut dari item telemetri.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"action": "delete"
}
]
}
]
Tindakan delete
memerlukan pengaturan berikut:
key
action
:delete
hash
Tindakan hash
memberikan hash (SHA1) pada nilai atribut yang ada.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"action": "hash"
}
]
}
]
Tindakan hash
memerlukan pengaturan berikut:
key
action
:hash
extract
Catatan
Fitur extract
ini hanya tersedia di versi 3.0.2 dan yang lebih baru.
Tindakan extract
mengekstrak nilai menggunakan aturan ekspresi reguler dari kunci input ke kunci target yang ditentukan oleh aturan. Jika kunci target sudah ada, extract
tindakan akan mengambil alih kunci target. Tindakan ini berperilaku seperti pengaturan toAttributes
prosesor rentang, saat atribut yang ada adalah sumbernya.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"pattern": "<regular pattern with named matchers>",
"action": "extract"
}
]
}
]
Tindakan extract
memerlukan pengaturan berikut:
key
pattern
action
:extract
mask
Catatan
Fitur mask
ini hanya tersedia di versi 3.2.5 dan yang lebih baru.
Tindakan menutupi mask
nilai atribut dengan menggunakan aturan ekspresi reguler yang ditentukan dalam pattern
dan replace
.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attributeName",
"pattern": "<regular expression pattern>",
"replace": "<replacement value>",
"action": "mask"
}
]
}
]
Tindakan mask
memerlukan pengaturan berikut:
key
pattern
replace
action
:mask
pattern
dapat berisi grup bernama yang ditempatkan antara ?<
dan >:
. Contoh: (?<userGroupName>[a-zA-Z.:\/]+)\d+
? Grup adalah (?<userGroupName>[a-zA-Z.:\/]+)
dan userGroupName
adalah nama grup. pattern
kemudian dapat berisi grup bernama yang sama yang ditempatkan di antara ${
dan }
diikuti oleh masker. Contoh di mana masker adalah **: ${userGroupName}**
.
Lihat Contoh prosesor telemetri untuk contoh masking.
Menyertakan kriteria dan mengecualikan kriteria
Prosesor atribut mendukung kriteria include
dan exclude
opsional.
Prosesor atribut hanya diterapkan ke telemetri yang cocok dengan kriterianya include
(jika tersedia) dan tidak cocok dengan kriterianya exclude
(jika tersedia).
Untuk mengonfigurasi opsi ini, di bawah include
atau exclude
(atau keduanya), tentukan setidaknya satu matchType
dan pilih spanNames
atau attributes
.
Konfigurasi include
atau exclude
memungkinkan lebih dari satu kondisi yang ditentukan.
Semua kondisi yang ditentukan harus melakan evaluasi true pada hasil dalam sebuah kecocokan.
Bidang yang diperlukan:
matchType
mengontrol bagaimana item dalamspanNames
array danattributes
array ditafsirkan. Nilai yang mungkin adalahregexp
danstrict
. Pencocokan regex dilakukan terhadap seluruh nilai atribut, jadi jika Anda ingin mencocokkan nilai yang berisiabc
di mana pun di dalamnya, maka Anda perlu menggunakan.*abc.*
.
Bidang opsional:
spanNames
harus cocok dengan setidaknya salah satu item.attributes
menentukan daftar atribut yang cocok. Semua atribut ini harus sama persis untuk menghasilkan kecocokan.
Catatan
Jika include
dan exclude
keduanya ditentukan, properti include
diperiksa sebelum properti exclude
diperiksa.
Catatan
Jika konfigurasi include
atau exclude
tidak memiliki spanNames
yang ditentukan, maka kriteria pencocokan diterapkan pada kedua spans
dan logs
.
Penggunaan sampel
"processors": [
{
"type": "attribute",
"include": {
"matchType": "strict",
"spanNames": [
"spanA",
"spanB"
]
},
"exclude": {
"matchType": "strict",
"attributes": [
{
"key": "redact_trace",
"value": "false"
}
]
},
"actions": [
{
"key": "credit_card",
"action": "delete"
},
{
"key": "duplicate_key",
"action": "delete"
}
]
}
]
Untuk informasi selengkapnya, lihat Contoh prosesor telemetri.
Prosesor rentang
Prosesor rentang memodifikasi nama rentang atau atribut rentang berdasarkan nama rentang. Ini dapat mendukung kemampuan untuk memasukkan atau mengecualikan rentang.
Berikan nama pada rentang
Bagian name
ini memerlukan pengaturan fromAttributes
. Nilai dari atribut ini digunakan untuk membuat nama baru, digabungkan dalam urutan yang ditentukan oleh konfigurasi. Prosesor mengubah nama rentang hanya jika semua atribut ini ada pada rentang.
Pengaturan separator
bersifat opsional. Pengaturan ini adalah string, dan Anda dapat menggunakan nilai terpisah.
Catatan
Jika mengganti nama bergantung pada prosesor atribut untuk memodifikasi atribut, pastikan prosesor rentang ditentukan setelah prosesor atribut dalam spesifikasi alur.
"processors": [
{
"type": "span",
"name": {
"fromAttributes": [
"attributeKey1",
"attributeKey2",
],
"separator": "::"
}
}
]
Mengekstrak atribut dari nama rentang
Bagian toAttributes
ini mencantumkan ekspresi reguler agar sesuai dengan nama rentang. Ini mengekstrak atribut berdasarkan subekspresi.
Pengaturan rules
diperlukan. Pengaturan ini mencantumkan aturan yang digunakan untuk mengekstrak nilai atribut dari nama rentang.
Nama atribut yang diekstrak menggantikan nilai dalam nama rentang. Setiap aturan dalam daftar adalah string pola ekspresi reguler (regex).
Berikut adalah cara nama atribut yang diekstrak menggantikan nilai:
- Nama rentang diperiksa terhadap regex.
- Semua subekspresi bernama regex diekstrak sebagai atribut jika regex cocok.
- Atribut yang diekstrak ditambahkan ke rentang.
- Setiap nama subekspresi menjadi nama atribut.
- Bagian subekspresi yang cocok menjadi nilai atribut.
- Nama atribut yang diekstrak menggantikan bagian yang cocok dalam nama rentang. Jika atribut sudah ada dalam rentang, atribut tersebut ditimpa.
Proses ini diulangi untuk semua aturan dalam urutan yang ditentukan. Setiap aturan berikutnya bekerja pada nama rentang yang menjadi output dari aturan sebelumnya.
"processors": [
{
"type": "span",
"name": {
"toAttributes": {
"rules": [
"rule1",
"rule2",
"rule3"
]
}
}
}
]
Atribut rentang umum
Bagian ini mencantumkan beberapa atribut rentang umum yang dapat digunakan oleh prosesor telemetri.
Rentang HTTP
Atribut | Tipe | Deskripsi |
---|---|---|
http.request.method (dulunya http.method ) |
string | Metode permintaan HTTP. |
url.full (rentang klien) atau url.path (rentang server) (dulunya http.url ) |
string | URL permintaan HTTP lengkap dalam formulir scheme://host[:port]/path?query[#fragment] . Fragmen biasanya tidak ditransmisikan melalui HTTP. Tetapi jika diketahui, fragmen itu harus dimasukkan. |
http.response.status_code (dulunya http.status_code ) |
number | kode status respons HTTP. |
network.protocol.version (dulunya http.flavor ) |
string | Jenis protokol HTTP. |
user_agent.original (dulunya http.user_agent ) |
string | Nilai header Agen Pengguna HTTP yang dikirim oleh klien. |
Rentang Konektivitas Database Java
Tabel berikut ini menjelaskan atribut yang bisa Anda gunakan dalam rentang Java Database Connectivity (JDBC):
Atribut | Tipe | Deskripsi |
---|---|---|
db.system |
string | Pengidentifikasi produk sistem pengelolaan database (DBMS) yang digunakan. Lihat Konvensi Semantik untuk operasi database. |
db.connection_string |
string | String koneksi yang digunakan untuk terhubung ke database. Kami menyarankan agar Anda menghapus kredensial yang disematkan. |
db.user |
string | Nama pengguna untuk mengakses database. |
db.name |
string | String yang digunakan untuk melaporkan nama database yang sedang diakses. Untuk perintah yang mengalihkan database, string ini harus diatur ke database target, meski perintah gagal. |
db.statement |
string | Pernyataan database yang sedang dijalankan. |
Menyertakan kriteria dan mengecualikan kriteria
Prosesor rentang mendukung kriteria include
dan exclude
opsional.
Prosesor rentang hanya diterapkan ke telemetri yang cocok dengan kriterianya include
(jika tersedia) dan tidak cocok dengan kriterianya exclude
(jika tersedia).
Untuk mengonfigurasi opsi ini di include
atau exclude
(atau keduanya), tentukan setidaknya satu matchType
dan pilih spanNames
atau attributes
span.
Konfigurasi include
atau exclude
memungkinkan lebih dari satu kondisi yang ditentukan.
Semua kondisi yang ditentukan harus melakan evaluasi true pada hasil dalam sebuah kecocokan.
Bidang yang diperlukan:
matchType
mengontrol bagaimana item dalamspanNames
array danattributes
array ditafsirkan. Nilai yang mungkin adalahregexp
danstrict
. Pencocokan regex dilakukan terhadap seluruh nilai atribut, jadi jika Anda ingin mencocokkan nilai yang berisiabc
di mana pun di dalamnya, maka Anda perlu menggunakan.*abc.*
.
Bidang opsional:
spanNames
harus cocok dengan setidaknya salah satu item.attributes
menentukan daftar atribut yang cocok. Semua atribut ini harus sama persis untuk menghasilkan kecocokan.
Catatan
Jika include
dan exclude
keduanya ditentukan, properti include
diperiksa sebelum properti exclude
diperiksa.
Penggunaan sampel
"processors": [
{
"type": "span",
"include": {
"matchType": "strict",
"spanNames": [
"spanA",
"spanB"
]
},
"exclude": {
"matchType": "strict",
"attributes": [
{
"key": "attribute1",
"value": "attributeValue1"
}
]
},
"name": {
"toAttributes": {
"rules": [
"rule1",
"rule2",
"rule3"
]
}
}
}
]
Untuk informasi selengkapnya, lihat Contoh prosesor telemetri.
Prosesor log
Catatan
Prosesor log tersedia mulai dari versi 3.1.1.
Prosesor log memodifikasi isi pesan log atau atribut log berdasarkan isi pesan log. Ini dapat mendukung kemampuan untuk memasukkan atau mengecualikan log.
Perbarui isi pesan Log
Bagian body
ini memerlukan pengaturan fromAttributes
. Nilai dari atribut ini digunakan untuk membuat isi baru, digabungkan dalam urutan konfigurasi yang ditentukan. Prosesor mengubah isi log hanya jika semua atribut ini ada di log.
Pengaturan separator
bersifat opsional. Pengaturan ini adalah string. Anda dapat menentukannya untuk membagi nilai.
Catatan
Jika mengganti nama bergantung pada prosesor atribut untuk memodifikasi atribut, pastikan prosesor log ditentukan setelah prosesor atribut dalam spesifikasi alur.
"processors": [
{
"type": "log",
"body": {
"fromAttributes": [
"attributeKey1",
"attributeKey2",
],
"separator": "::"
}
}
]
Mengekstrak atribut dari isi pesan log
Bagian toAttributes
ini mencantumkan ekspresi reguler agar sesuai dengan isi pesan log. Ini mengekstrak atribut berdasarkan subekspresi.
Pengaturan rules
diperlukan. Pengaturan ini mencantumkan aturan yang digunakan untuk mengekstrak nilai atribut dari isi.
Nama atribut yang diekstrak menggantikan nilai dalam isi pesan log. Setiap aturan dalam daftar adalah string pola ekspresi reguler (regex).
Berikut adalah cara nama atribut yang diekstrak menggantikan nilai:
- Isi pesan log diperiksa terhadap regex.
- Semua subekspresi bernama regex diekstrak sebagai atribut jika regex cocok.
- Atribut yang diekstrak ditambahkan ke log.
- Setiap nama subekspresi menjadi nama atribut.
- Bagian subekspresi yang cocok menjadi nilai atribut.
- Nama atribut yang diekstrak menggantikan bagian yang cocok dalam nama log. Jika atribut sudah ada di log, atribut akan ditimpa.
Proses ini diulangi untuk semua aturan dalam urutan yang ditentukan. Setiap aturan berikutnya bekerja pada nama log yang menjadi output dari aturan sebelumnya.
"processors": [
{
"type": "log",
"body": {
"toAttributes": {
"rules": [
"rule1",
"rule2",
"rule3"
]
}
}
}
]
Menyertakan kriteria dan mengecualikan kriteria
Prosesor log mendukung kriteria include
dan exclude
opsional.
Prosesor log hanya diterapkan ke telemetri yang cocok dengan kriterianya include
(jika tersedia) dan tidak cocok dengan kriterianya exclude
(jika tersedia).
Untuk mengonfigurasi opsi ini, di bawah include
atau exclude
(atau keduanya), tentukan matchType
dan attributes
.
Konfigurasi include
atau exclude
memungkinkan lebih dari satu kondisi yang ditentukan.
Semua kondisi yang ditentukan harus melakan evaluasi true pada hasil dalam sebuah kecocokan.
- Bidang yang diperlukan:
matchType
mengontrol bagaimana item dalam arrayattributes
ditafsirkan. Nilai yang mungkin adalahregexp
danstrict
. Pencocokan regex dilakukan terhadap seluruh nilai atribut, jadi jika Anda ingin mencocokkan nilai yang berisiabc
di mana pun di dalamnya, maka Anda perlu menggunakan.*abc.*
.attributes
menentukan daftar atribut yang cocok. Semua atribut ini harus sama persis untuk menghasilkan kecocokan.
Catatan
Jika include
dan exclude
keduanya ditentukan, properti include
diperiksa sebelum properti exclude
diperiksa.
Catatan
Prosesor log tidak mendukung spanNames
.
Penggunaan sampel
"processors": [
{
"type": "log",
"include": {
"matchType": "strict",
"attributes": [
{
"key": "attribute1",
"value": "value1"
}
]
},
"exclude": {
"matchType": "strict",
"attributes": [
{
"key": "attribute2",
"value": "value2"
}
]
},
"body": {
"toAttributes": {
"rules": [
"rule1",
"rule2",
"rule3"
]
}
}
}
]
Untuk informasi selengkapnya, lihat Contoh prosesor telemetri.
Filter metrik
Catatan
Filter metrik tersedia mulai dari versi 3.1.1.
Filter metrik digunakan untuk mengecualikan beberapa metrik untuk membantu mengontrol biaya penyerapan.
Filter metrik hanya mendukung kriteria exclude
. Metrik yang cocok dengan kriterianya exclude
tidak diekspor.
Untuk mengonfigurasi opsi ini, di bawah exclude
, tentukan matchType
satu atau beberapa metricNames
.
- Bidang yang diperlukan:
matchType
mengontrol bagaimana item dimetricNames
dicocokkan. Nilai yang mungkin adalahregexp
danstrict
. Pencocokan regex dilakukan terhadap seluruh nilai atribut, jadi jika Anda ingin mencocokkan nilai yang berisiabc
di mana pun di dalamnya, maka Anda perlu menggunakan.*abc.*
.metricNames
harus cocok dengan setidaknya salah satu item.
Penggunaan sampel
Sampel berikut menunjukkan cara mengecualikan metrik dengan nama "metricA" dan "metricB":
"processors": [
{
"type": "metric-filter",
"exclude": {
"matchType": "strict",
"metricNames": [
"metricA",
"metricB"
]
}
}
]
Sampel berikut menunjukkan cara menonaktifkan semua metrik termasuk metrik performa otomatis default seperti cpu dan memori.
"processors": [
{
"type": "metric-filter",
"exclude": {
"matchType": "regexp",
"metricNames": [
".*"
]
}
}
]
Metrik default yang diambil oleh agen Java
Nama metrik | Jenis metrik | Deskripsi | Dapat difilter |
---|---|---|---|
Current Thread Count |
metrik khusus | Lihat ThreadMXBean.getThreadCount(). | yes |
Loaded Class Count |
metrik khusus | Lihat ClassLoadingMXBean.getLoadedClassCount(). | yes |
GC Total Count |
metrik khusus | Jumlah jumlah di semua instans GarbageCollectorMXBean (berbeda sejak terakhir dilaporkan). Lihat GarbageCollectorMXBean.getCollectionCount(). | yes |
GC Total Time |
metrik khusus | Jumlah waktu di semua instans GarbageCollectorMXBean (berbeda sejak terakhir dilaporkan). Lihat GarbageCollectorMXBean.getCollectionTime(). | yes |
Heap Memory Used (MB) |
metrik khusus | Lihat MemoryMXBean.getHeapMemoryUsage().getUsed(). | yes |
% Of Max Heap Memory Used |
metrik khusus | java.lang:type=Memory/jumlah maksimum memori dalam byte. Lihat MemoryUsage | yes |
\Processor(_Total)\% Processor Time |
Metrik default | Perbedaan penghitung centang beban CPU lebar sistem (Hanya Pengguna dan Sistem) yang dibagi dengan jumlah prosesor logis dalam interval waktu tertentu | no |
\Process(??APP_WIN32_PROC??)\% Processor Time |
Metrik default | Lihat OperatingSystemMXBean.getProcessCpuTime() (diff sejak terakhir dilaporkan, dinormalisasi berdasarkan waktu dan jumlah CPU). | no |
\Process(??APP_WIN32_PROC??)\Private Bytes |
Metrik default | Jumlah MemoryMXBean.getHeapMemoryUsage() dan MemoryMXBean.getNonHeapMemoryUsage(). | no |
\Process(??APP_WIN32_PROC??)\IO Data Bytes/sec |
Metrik default | /proc/[pid]/io Jumlah byte yang dibaca dan ditulis oleh proses (diff sejak terakhir dilaporkan). Lihat proc(5). |
no |
\Memory\Available Bytes |
Metrik default | Lihat OperatingSystemMXBean.getFreePhysicalMemorySize(). | no |
Tanya jawab umum
Mengapa prosesor log tidak memproses file log menggunakan TelemetryClient.trackTrace()?
TelemetryClient.trackTrace() adalah bagian dari jembatan Application Insights Classic SDK, dan prosesor log hanya berfungsi dengan instrumentasi berbasis OpenTelemetry baru.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk