Apa itu konvergensi?
Agen Application Real-Time Monitoring Service (ARMS) mengumpulkan berbagai jenis data metrik, seperti jumlah permintaan, jumlah kesalahan, dan waktu respons. Untuk meningkatkan keragaman dan akurasi data pemantauan, dimensi seperti alamat IP, Pernyataan SQL, dan URL disediakan bersama dengan metrik. Namun, beberapa dimensi mungkin menunjukkan kardinalitas tinggi. Contohnya, API RESTful menyediakan template URL /api/v1/users/{ID}/info untuk menanyakan informasi pengguna. Banyak URL permintaan dari berbagai ID pengguna ditampilkan dalam data metrik, yang menyebabkan kardinalitas tinggi dan mempersulit tampilan data metrik. Kardinalitas tinggi memberikan tekanan besar pada penyimpanan, menyebabkan kehilangan penulisan dan kueri lambat, serta menimbulkan biaya besar. Untuk menyelesaikan masalah kardinalitas tinggi dan meningkatkan observabilitas, ARMS menggunakan berbagai kebijakan konvergensi. Topik ini menjelaskan kebijakan konvergensi, skenario, dan format.
Format dan skenario konvergensi
Tabel berikut menjelaskan format dan skenario konvergensi.
Format | Skenario |
{ARMS_IP}:80 | Jumlah alamat IP yang mengakses port yang sama melebihi ambang batas, yaitu 50 secara default. |
{ARMS_STATIC_REQ} atau {ARMS_S_XXX} | URL berkaitan dengan sumber daya statis. |
{ARMS_ATTACK_REQ} | URL berisi string yang dapat dieksploitasi oleh penyerang. |
{ARMS_PARAMED_REQ} | URL berisi parameter. |
{ARMS_OTHERS} | Nilai dimensi yang direkam dalam periode waktu tertentu melebihi ambang batas. Catatan Untuk informasi tentang nilai ambang batas default, lihat Konvergensi ruang kardinalitas. |
{ARMS_NUMBER} | Istilah yang dipisahkan oleh |
{ARMS_WORD} | Istilah yang dipisahkan oleh |
{ARMS_ANY} | Istilah yang dipisahkan oleh |
{XXX} | URL menggunakan anotasi Controller Spring. |
String yang mengandung * Catatan Format ini hanya berlaku untuk agen ARMS sebelum versi V4.x. | Konvergensi berdasarkan statistik memori agen ARMS digunakan. |
Kebijakan konvergensi
Semua kebijakan konvergensi diaktifkan secara default dan dapat dinonaktifkan secara manual, kecuali untuk konvergensi ruang kardinalitas.
Karena kebijakan yang berbeda mendukung tipe data yang berbeda, tipe data yang didukung oleh setiap kebijakan ditentukan dengan jelas.
Konvergensi berbasis anotasi Spring
Untuk API web selain API RESTful, menggunakan URL permintaan sebagai nilai dimensi adalah layak. Namun, untuk API RESTful dengan variabel, pencatatan langsung URL permintaan menyebabkan divergensi dimensi. Oleh karena itu, ARMS mengekstrak informasi dari anotasi (seperti @RequestMapping) sebagai nilai dimensi untuk aplikasi yang menggunakan kerangka kerja Spring Web.
Logika
Membaca informasi jalur dari anotasi routing URL Spring.
Format
Nilai yang dikonfigurasi dalam anotasi routing digunakan.
Tipe data yang didukung
URL: Hanya URL yang menyediakan layanan ke sistem eksternal yang didukung. URL eksternal tidak didukung.
Lokasi
Agen ARMS
Versi agen yang didukung
2.9.1.2 dan yang lebih baru
Contoh
Berikut ini APIController mendefinisikan antarmuka RESTful untuk mengambil informasi pengguna, menggunakan variabel jalur. Jalur antarmuka didefinisikan oleh anotasi @RequestMapping("/api/v1/user/{userId}/info"), yang menentukan pola URL untuk menerima permintaan dengan ID pengguna. Saat mengumpulkan data dari antarmuka, URL aktualnya adalah /api/v1/user/{userId}/info, di mana {userId} diganti dengan ID pengguna spesifik.
@RestController
@RequestMapping("/api/v1")
public class APIController {
@RequestMapping("/user/{userId}/info")
public String getUserInfo(@PathVariable("userId") String userId) {
return "hello " + userId;
}
}Hasil:
/api/v1/user/1234/info dikonvergensi menjadi /api/v1/user/{userId}/info.
Konvergensi berbasis statistik memori
Untuk aplikasi yang tidak menggunakan kerangka kerja Spring Web atau skenario di mana anotasi gagal, konvergensi berbasis statistik memori digunakan.
Kebijakan ini hanya berlaku untuk agen ARMS sebelum versi V4.x.
Logika
Memisahkan setiap input menggunakan pemisah yang telah ditentukan (seperti "/" atau "=") untuk mengidentifikasi satu set kata N.
Menghitung jumlah kemunculan unik untuk setiap posisi kata, yaitu kardinalitas. Jika kardinalitas melebihi ambang batas yang telah ditentukan, kata pada posisi tersebut diganti dengan
*.
Format
String yang mengandung *
Tipe data yang didukung
Semua
Lokasi
Agen ARMS
Versi agen yang didukung
2.x, dan versi setelah 2.x dan sebelum 4.x
Contoh
Aplikasi A menyediakan template URL /api/v1/user/${userId}/info untuk menanyakan informasi pengguna, di mana $userId menentukan ID pengguna spesifik. Modul statistik memori mendeteksi divergensi dalam ID pengguna. Untuk menangani ini, URL tersebut dikonvergensi menjadi
/api/v1/user/*/info.
Konvergensi kustom
Kebijakan ini memungkinkan Anda mendefinisikan aturan konvergensi kustom untuk memenuhi kebutuhan spesifik.
Logika
Memadankan aturan konvergensi kustom satu per satu. Aturan yang cocok diterapkan.
Format
Format bergantung pada konfigurasi spesifik.
Tipe data yang didukung
URL
Lokasi
Agen ARMS V4.x dan yang lebih baru: agen
Agen ARMS sebelum V4.x: server
Versi agen yang didukung
Semua
Contoh
Aturan kustom: Konvergensi semua URL yang cocok dengan /api/v1/user/[\d]+/info menjadi /api/v1/getUserInfo.
Semua URL yang cocok dengan ekspresi reguler /api/v1/user/[\d]+/info dikonvergensi menjadi /api/v1/getUserInfo.
Konvergensi untuk sumber daya statis
Beberapa versi lama agen ARMS memantau metrik tentang sumber daya statis. Konvergensi diaktifkan secara default untuk metrik ini karena URL sering berubah.
Logika
Memeriksa apakah akhiran URL cocok dengan ekstensi sumber daya statis default. Jika ya, URL tersebut dikonvergensi.
Ekstensi sumber daya statis default: .log .7z .tgz .jpg .jpeg .png .gif .css .js .ico .woff2 .xml .svg .pdf .txt .text .ppt .word .xlsx .tar.gz .tar.bz2 .sh .yml .yaml .zip .log .gz .ttf .woff .eot .rar .properties
Format
Format defaultnya adalah {ARMS_STATIC_REQ}. Jika Anda telah mengirimkan tiket untuk mengaktifkan konfigurasi lanjutan, formatnya mencakup akhiran sumber daya.
Tipe data yang didukung
URL
Lokasi
Agen ARMS V4.x dan yang lebih baru: agen
Agen ARMS sebelum V4.x: server
Versi agen yang didukung
Semua
Contoh
Secara default, /api/v1/hello.jpg dikonvergensi menjadi {ARMS_STATIC_REQ}. Jika konfigurasi lanjutan diaktifkan, maka dikonvergensi menjadi{ARMS_S_JPG}.
Konvergensi untuk permintaan serangan siber
Layanan Anda mungkin menghadapi permintaan serangan siber (seperti upaya membaca file /etc/passwd). Permintaan ini dirancang oleh penyerang dan sering berubah. Mencatat semuanya memberikan beban besar pada sumber daya penyimpanan.
Logika
Memeriksa apakah URL berisi karakter yang dapat dieksploitasi untuk serangan siber. Jika ya, URL tersebut dikonvergensi.
Karakter default: ' $ \ ' !
Format
{ARMS_ATTACK_REQ}
Tipe data yang didukung
URL
Lokasi
Agen ARMS V4.x dan yang lebih baru: agen
Agen ARMS sebelum V4.x: server
Versi agen yang didukung
Semua
Contoh
/app/v1/user/info?cmd='more /etc/passwd' dikonvergensi menjadi {ARMS_ATTACK_REQ}.
Konvergensi parameter kueri
Secara default, agen ARMS tidak mendapatkan informasi parameter saat mengumpulkan URL. Namun, dalam beberapa skenario, URL berisi parameter kueri yang dapat menyebabkan divergensi dimensi.
Logika
Memeriksa apakah URL berisi parameter kueri. Jika ya, URL tersebut dikonvergensi.
Pemisah parameter kueri default:; ? &
Format
Hasil defaultnya adalah {ARMS_PARAMED_REQ}. Jika Anda telah mengirimkan tiket untuk mengaktifkan konfigurasi lanjutan, hasil konvergensinya mempertahankan URL dan mengganti parameter dengan {ARMS_REQ_PARAMS}.
Tipe data yang didukung
URL
Lokasi
Agen ARMS V4.x dan yang lebih baru: agen
Agen ARMS sebelum V4.x: server
Versi agen yang didukung
Semua
Contoh
Secara default, /api/v1/user/info?userId=12345 dikonvergensi menjadi {ARMS_PARAMED_REQ}. Jika konfigurasi lanjutan diaktifkan, maka dikonvergensi menjadi /api/v1/user/info?{ARMS_REQ_PARAMS}.
Konvergensi kata tanpa makna
URL dengan kata atau digit yang terlalu panjang kemungkinan besar akan menyimpang. Secara default, ARMS mengganti kata atau digit yang terlalu panjang.
Logika
Memisahkan URL menjadi larik istilah dengan garis miring (/) dan memeriksa setiap istilah dalam larik untuk melihat apakah ada istilah yang melebihi ambang batas panjang yang ditentukan. Jika ya, istilah tersebut diganti.
Panjang maksimum sebuah kata: 64
Panjang maksimum digit: 10
Panjang maksimum digit dalam sebuah kata: 10
Format
Digit yang terlalu panjang dikonvergensi menjadi {ARMS_NUMBER}.
Kata yang terlalu panjang dikonvergensi menjadi {ARMS_WORD}.
Digit yang terlalu panjang dalam sebuah kata dikonvergensi menjadi {ARMS_ANY}.
Tipe data yang didukung
URL
Lokasi
Agen ARMS V4.x dan yang lebih baru: agen
Agen ARMS sebelum V4.x: server
Versi agen yang didukung
Semua
Contoh
/api/2024040710/hello2024040710 dikonvergensi menjadi /api/{ARMS_NUMBER}/{ARMS_ANY}.
Konvergensi cerdas
Setelah kebijakan konvergensi sebelumnya diterapkan, sejumlah besar URL yang menyimpang mungkin masih tercatat. ARMS secara berkala menghasilkan aturan konvergensi menggunakan algoritma untuk mengganti URL tersebut.
Logika
Logikanya kompleks. Hanya deskripsi singkat yang diberikan di sini.
Mengelompokkan URL sampel menggunakan algoritma.
Mengonvergensi URL berdasarkan pola URL setiap grup dan menghasilkan aturan konvergensi.
Menggabungkan aturan konvergensi dari grup yang berbeda.
Format
Digit murni yang menyimpang diganti dengan {ARMS_NUMBER}.
Huruf murni yang menyimpang diganti dengan {ARMS_WORD}.
Campuran digit dan huruf yang menyimpang diganti dengan {ARMS_ANY}.
Tipe data yang didukung
URL
Lokasi
Agen ARMS V4.x dan yang lebih baru: agen
Agen ARMS sebelum V4.x: server
Versi agen yang didukung
Semua
Contoh
/api/product/1/info
/api/product/2/info
....
/api/product/N/infoUntuk URL dalam contoh, server menggunakan ekspresi reguler /api/product/[\d]+/info untuk pencocokan.
Hasil konvergensi: /api/product/{ARMS_NUMBER}/info.
URL yang cocok dengan ekspresi reguler dikonvergensi menjadi /api/product/{ARMS_NUMBER}/info.
Normalisasi SQL
Agen ARMS mungkin mengumpulkan sejumlah besar pernyataan SQL karena sharding, anotasi, atau teks biasa. Secara default, ARMS memproses setiap pernyataan SQL dengan mengganti digit atau huruf yang kemungkinan besar menyimpang.
Logika
Logikanya kompleks. Hanya deskripsi singkat yang diberikan di sini.
Menghapus anotasi.
Mengganti teks biasa.
Mengganti nama basis data atau tabel yang di-sharding.
...
Format
Digit atau huruf yang menyimpang diganti.
Tipe data yang didukung
SQL
Lokasi
Agen ARMS
Versi agen yang didukung
4.X dan yang lebih baru
Contoh
select * from cache_0 where ckey='23'Hasil:
select * from cache_{NUM} where ckey=?Konvergensi alamat IP
Jika aplikasi Anda bergantung pada banyak layanan eksternal yang diakses melalui alamat IP, agen ARMS mungkin mengumpulkan sejumlah besar alamat IP, yang menyebabkan divergensi.
Logika
Mengelompokkan alamat IP berdasarkan port.
Menerapkan konvergensi jika jumlah alamat IP dalam grup melebihi ambang batas yang ditentukan, yaitu 50 secara default.
Format
{ARMS_IP}:port
Tipe data yang didukung
IP
Lokasi
Agen ARMS V4.x dan yang lebih baru: agen
Agen ARMS sebelum V4.x: server
Versi agen yang didukung
Semua
Contoh
1.1.1.1:8080
...
1.1.1.255:8080Alamat IP di atas dikonvergensi menjadi {ARMS_IP}:8080.
Konvergensi ruang kardinalitas
Kebijakan konvergensi sebelumnya secara efektif menyelesaikan masalah kardinalitas tinggi dalam URL. Namun, untuk pernyataan SQL, sejumlah besar nilai dimensi mungkin masih tercatat. Untuk memperbaiki masalah ini, ARMS membatasi jumlah nilai dimensi yang dicatat dalam periode waktu tertentu.
Logika
Logikanya kompleks. Hanya deskripsi singkat yang diberikan di sini.
Secara berkala menghasilkan ruang kardinalitas dengan ukuran tetap.
Memeriksa apakah nilai dimensi ada dalam ruang kardinalitas. Jika ya, nilainya dikembalikan apa adanya. Jika tidak, nilai tersebut ditambahkan ke ruang kardinalitas. Jika nilai dapat ditambahkan, nilainya dikembalikan apa adanya. Jika tidak, {ARMS_OTHERS} dikembalikan.
Format
Nilai dimensi yang melebihi ambang batas ruang kardinalitas dikonvergensi menjadi {ARMS_OTHERS}.
Ambang batas default
Item | Ambang batas per jam |
Antarmuka URL | 500 |
Tugas penjadwalan | 1.000 |
Antarmuka RPC | 1.000 |
Antarmuka hulu | 200 |
Panggilan SQL normal | 100 |
Panggilan SQL lambat | 100 |
Permintaan URL eksternal | 200 |
Alamat permintaan eksternal | 100 |
Tipe data yang didukung
Semua
Lokasi
Agen ARMS V4.x dan yang lebih baru: agen
Agen ARMS sebelum V4.x: server
Versi agen yang didukung
Semua
Contoh
Anggaplah ukuran ruang kardinalitas diatur menjadi 100 rekaman per jam. Alamat IP layanan eksternal:
www.a1.com
www.a2.com
....
www.a1000.comHanya 100 alamat IP pertama yang dicatat per jam, dengan alamat IP berikutnya dikonvergensi menjadi {ARMS_OTHERS}.
Urutan eksekusi
Agen ARMS sebelum V4.x
Agen
URL
Konvergensi berbasis anotasi Spring > Konvergensi berbasis statistik memori
SQL
Konvergensi berbasis statistik memori
Alamat IP dan lainnya
Konvergensi berbasis statistik memori
Server
URL
Konvergensi kustom > Konvergensi untuk permintaan serangan siber > Konvergensi parameter kueri > Konvergensi untuk sumber daya statis > Konvergensi kata tanpa makna > Konvergensi cerdas > Konvergensi ruang kardinalitas
SQL
Konvergensi kustom > Konvergensi ruang kardinalitas
Alamat IP dan lainnya
Konvergensi kustom > Konvergensi alamat IP > Konvergensi ruang kardinalitas
Agen ARMS V4.x dan yang lebih baru
Agen
URL
Konvergensi berbasis anotasi Spring > Konvergensi kustom > Konvergensi untuk permintaan serangan siber > Konvergensi parameter kueri > Konvergensi untuk sumber daya statis > Konvergensi kata tanpa makna > Konvergensi cerdas > Konvergensi ruang kardinalitas
SQL
Konvergensi kustom > Normalisasi SQL > Konvergensi ruang kardinalitas
Alamat IP dan lainnya
Konvergensi kustom > Konvergensi alamat IP > Konvergensi ruang kardinalitas
Server
Tidak tersedia
Konvergensi dilaksanakan secara berurutan berdasarkan urutan di atas. Setelah nilai dimensi dikonvergensi oleh suatu kebijakan, eksekusi berakhir.
FAQ
Bagaimana cara saya menanyakan nilai asli sebelum konvergensi?
Agen ARMS V4.x dan yang lebih baru: Baik nilai asli maupun nilai yang telah dikonvergensi dicatat dalam data jejak. Anda dapat menggunakan fitur Trace Explorer untuk melihat nilai aslinya. Untuk informasi lebih lanjut, lihat Trace Explorer.
Agen ARMS sebelum V4.x: Anda tidak dapat melihat nilai asli karena sebagian besar konvergensi terjadi di server.
Apa yang harus saya lakukan jika hasil konvergensi tidak memuaskan?
Anda dapat membuat aturan konvergensi kustom untuk menentukan konvergensi.
Di halaman detail aplikasi konsol ARMS, pilih Konfigurasi > Konvergensi di bilah navigasi atas.

Contoh:
Tentukan ekspresi reguler /api/v1/user/\d+/info untuk mengonvergensi semua URL yang cocok menjadi /api/v1/user/userId/info. Contoh: /api/v1/user/124343543/info dikonvergensi menjadi /api/v1/user/userId/info.
Apa yang harus saya lakukan untuk mengecualikan beberapa URL yang salah cocok dari konvergensi?
Tentukan URL yang tidak ingin Anda konvergensi di konsol ARMS. Untuk informasi lebih lanjut, lihat Pertanyaan 2.
Contoh:
Anggaplah Anda mengecualikan /api/v1/user/9999/info dari konvergensi. /api/v1/user/9999/info tidak dikonvergensi menjadi /api/v1/user/userId/info.
Apa perbedaan antara konvergensi sisi agen dan konvergensi sisi server?
Konvergensi sisi agen berarti bahwa konvergensi dilakukan pada agen ARMS, sehingga data yang telah dikonvergensi dilaporkan ke server. Ini sangat mengurangi tekanan pemrosesan pada server dan memastikan akurasi data 100%.
Jika versi agen sudah ketinggalan zaman, banyak kebijakan konvergensi tidak didukung. Dalam kasus divergensi, konvergensi harus dilakukan di sisi server. Karena tidak ada konvergensi yang diterapkan di sisi agen, paket data yang dikirim ke server bisa cukup besar. Pertama, data mungkin hilang jika paket terlalu besar dan ditolak. Kedua, karena keterbatasan pemrosesan sisi server, akurasi data yang telah dikonvergensi mungkin terpengaruh. Oleh karena itu, kami menyarankan Anda untuk meningkatkan ke versi terbaru agen ARMS.