All Products
Search
Document Center

Application Real-Time Monitoring Service:Kebijakan konvergensi ARMS

Last Updated:Sep 10, 2026

Agen Application Real-Time Monitoring Service (ARMS) mengumpulkan metrik seperti jumlah permintaan, jumlah error, dan waktu respons. Untuk meningkatkan keragaman dan akurasi data, metrik tersebut mencakup dimensi seperti alamat IP, pernyataan SQL, dan URL.

Beberapa dimensi dapat menghasilkan sejumlah besar nilai unik, yang dikenal sebagai kardinalitas tinggi. Misalnya, API RESTful dengan templat URL /api/v1/users/{ID}/info menghasilkan URL berbeda untuk setiap ID pengguna. Kardinalitas tinggi memberatkan penyimpanan, menyebabkan kehilangan data saat penulisan dan kueri yang lambat, serta meningkatkan biaya.

Untuk mengatasi hal ini, ARMS menerapkan kebijakan konvergensi yang mengganti nilai dimensi ber-kardinalitas tinggi dengan placeholder yang dinormalisasi.

Catatan Dengan agen ARMS V4.x dan versi lebih baru, seluruh proses konvergensi berjalan di sisi agen, sehingga memberikan akurasi data 100%. Nilai asli maupun hasil konvergensi dicatat dalam data jejak. Gunakan Trace Explorer untuk melihat nilai asli sebelum konvergensi.

Referensi cepat: format konvergensi

Tabel berikut merangkum format placeholder dan kondisi kemunculannya.

FormatSkenario
{ARMS_IP}:portJumlah alamat IP yang mengakses port yang sama melebihi ambang batas (default: 50).
{ARMS_STATIC_REQ} atau {ARMS_S_XXX}URL mengarah ke resource statis.
{ARMS_ATTACK_REQ}URL berisi string yang dapat dieksploitasi untuk serangan siber.
{ARMS_PARAMED_REQ}URL berisi parameter kueri.
{ARMS_OTHERS}Jumlah nilai dimensi yang direkam dalam satu periode waktu melebihi ambang batas ruang kardinalitas. Untuk ambang batas default, lihat Konvergensi ruang kardinalitas.
{ARMS_NUMBER}Segmen path URL (dipisahkan oleh /) semuanya berupa angka dan terlalu panjang atau sangat bervariasi.
{ARMS_WORD}Segmen path URL (dipisahkan oleh /) semuanya berupa kata dan terlalu panjang atau sangat bervariasi.
{ARMS_ANY}Segmen path URL (dipisahkan oleh /) berupa string campuran huruf dan angka dan terlalu panjang atau sangat bervariasi.
{XXX}URL menggunakan anotasi Spring Controller.
String yang berisi *Konvergensi berbasis statistik memori (hanya untuk agen ARMS versi sebelum V4.x).

Kebijakan konvergensi

Seluruh kebijakan konvergensi diaktifkan secara default. Setiap kebijakan, kecuali konvergensi ruang kardinalitas, dapat dinonaktifkan secara manual.

Catatan Setiap kebijakan mendukung tipe data tertentu. Tipe data yang didukung ditentukan pada bagian masing-masing kebijakan di bawah ini.

Konvergensi berbasis anotasi Spring

Untuk API RESTful dengan variabel path, penggunaan URL permintaan mentah sebagai nilai dimensi menyebabkan divergensi. ARMS membaca informasi path dari anotasi routing Spring (seperti @RequestMapping) dan menggunakan path yang didefinisikan dalam anotasi tersebut sebagai nilai dimensi.

PropertiDetail
LogikaMembaca informasi path dari anotasi routing URL Spring.
FormatNilai yang dikonfigurasi dalam anotasi routing.
Tipe data yang didukungURL (hanya URL layanan inbound; URL outbound tidak didukung).
LokasiAgen ARMS
Versi agen yang didukung2.9.1.2 dan versi lebih baru

Contoh

APIController berikut mendefinisikan endpoint RESTful yang mengambil informasi pengguna menggunakan variabel path. Anotasi @RequestMapping("/api/v1/user/{userId}/info") menentukan pola URL.

@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 dikonvergensikan menjadi /api/v1/user/{userId}/info.

Konvergensi berbasis statistik memori

Untuk aplikasi yang tidak menggunakan framework Spring Web atau ketika konvergensi berbasis anotasi gagal, ARMS menggunakan konvergensi berbasis statistik memori sebagai cadangan.

Catatan Kebijakan ini hanya berlaku untuk versi agen ARMS sebelum V4.x.
PropertiDetail
Logika1. Memisahkan setiap input berdasarkan pembatas yang telah ditentukan (seperti / atau =) untuk mengidentifikasi sekumpulan kata kunci. 2. Menghitung jumlah nilai unik pada setiap posisi (kardinalitas). Jika kardinalitas melebihi ambang batas yang telah ditentukan, kata kunci pada posisi tersebut diganti dengan *.
FormatString yang berisi *.
Tipe data yang didukungSemua
LokasiAgen ARMS
Versi agen yang didukung2.x, dan versi setelah 2.x tetapi sebelum 4.x

Contoh

Aplikasi menyediakan templat URL /api/v1/user/${userId}/info. Modul statistik memori mendeteksi divergensi pada ID pengguna dan mengonvergensikan URL tersebut menjadi /api/v1/user/*/info.

Konvergensi kustom

Tentukan aturan konvergensi kustom untuk mencocokkan URL dengan ekspresi reguler dan menggantinya dengan target yang ditentukan.

PropertiDetail
LogikaMencocokkan aturan konvergensi kustom secara berurutan. Aturan pertama yang cocok akan diterapkan.
FormatDitentukan oleh konfigurasi Anda.
Tipe data yang didukungURL
LokasiAgen ARMS V4.x dan versi lebih baru: agen. Agen ARMS sebelum V4.x: server.
Versi agen yang didukungSemua

Contoh

Aturan kustom: konvergensikan semua URL yang cocok dengan /api/v1/user/[\d]+/info menjadi /api/v1/getUserInfo.

Hasil: semua URL yang cocok dengan ekspresi reguler /api/v1/user/[\d]+/info dikonvergensikan menjadi /api/v1/getUserInfo.

Konvergensi resource statis

Beberapa versi lama agen ARMS memantau metrik untuk resource statis. Karena URL resource statis sering berubah, konvergensi untuk metrik ini diaktifkan secara default.

PropertiDetail
LogikaMemeriksa apakah ekstensi URL cocok dengan daftar default ekstensi resource statis. Jika ya, URL tersebut dikonvergensikan.
FormatDefault: {ARMS_STATIC_REQ}. Jika Anda mengajukan tiket untuk mengaktifkan Konfigurasi Lanjutan, formatnya mencakup ekstensi resource (misalnya, {ARMS_S_JPG}).
Tipe data yang didukungURL
LokasiAgen ARMS V4.x dan versi lebih baru: agen. Agen ARMS sebelum V4.x: server.
Versi agen yang didukungSemua

Ekstensi resource 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 .gz .ttf .woff .eot .rar .properties

Contoh

Secara default, /api/v1/hello.jpg dikonvergensikan menjadi {ARMS_STATIC_REQ}. Dengan Konfigurasi Lanjutan diaktifkan, URL tersebut dikonvergensikan menjadi {ARMS_S_JPG}.

Konvergensi permintaan serangan siber

Layanan dapat menerima permintaan serangan siber (seperti upaya membaca file /etc/passwd). Permintaan ini dibuat oleh penyerang dan sering berubah. Merekam semuanya memberatkan sumber daya penyimpanan.

PropertiDetail
LogikaMemeriksa apakah URL berisi karakter yang umum dieksploitasi untuk serangan siber. Jika ya, URL tersebut dikonvergensikan.
Format{ARMS_ATTACK_REQ}
Tipe data yang didukungURL
LokasiAgen ARMS V4.x dan versi lebih baru: agen. Agen ARMS sebelum V4.x: server.
Versi agen yang didukungSemua

Karakter default: ' $ \ ' !

Contoh

/app/v1/user/info?cmd='more /etc/passwd' dikonvergensikan menjadi {ARMS_ATTACK_REQ}.

Konvergensi parameter kueri

Secara default, agen ARMS tidak menangkap parameter kueri saat mengumpulkan URL. Namun, beberapa URL berisi parameter kueri yang dapat menyebabkan divergensi.

PropertiDetail
LogikaMemeriksa apakah URL berisi parameter kueri. Jika ya, URL tersebut dikonvergensikan.
FormatDefault: {ARMS_PARAMED_REQ}. Jika Anda mengajukan tiket untuk mengaktifkan Konfigurasi Lanjutan, hasil konvergensi mempertahankan path URL dan mengganti parameter dengan {ARMS_REQ_PARAMS}.
Tipe data yang didukungURL
LokasiAgen ARMS V4.x dan versi lebih baru: agen. Agen ARMS sebelum V4.x: server.
Versi agen yang didukungSemua

Pembatas parameter kueri default: ; ? &

Contoh

Secara default, /api/v1/user/info?userId=12345 dikonvergensikan menjadi {ARMS_PARAMED_REQ}. Dengan Konfigurasi Lanjutan diaktifkan, URL tersebut dikonvergensikan menjadi /api/v1/user/info?{ARMS_REQ_PARAMS}.

Konvergensi kata tidak bermakna

URL dengan kata atau rangkaian digit yang terlalu panjang cenderung mengalami divergensi. ARMS mengganti segmen path yang melebihi ambang batas panjang tertentu.

PropertiDetail
LogikaMemisahkan URL menjadi larik kata kunci berdasarkan garis miring (/) dan memeriksa setiap kata kunci terhadap ambang batas panjang berikut: panjang maksimum kata (64 karakter), panjang maksimum digit (10 karakter), dan panjang maksimum digit dalam sebuah kata (10 karakter).
FormatDigit terlalu panjang: {ARMS_NUMBER}. Kata terlalu panjang: {ARMS_WORD}. String alfanumerik campuran terlalu panjang: {ARMS_ANY}.
Tipe data yang didukungURL
LokasiAgen ARMS V4.x dan versi lebih baru: agen. Agen ARMS sebelum V4.x: server.
Versi agen yang didukungSemua

Contoh

/api/2024040710/hello2024040710 dikonvergensikan menjadi /api/{ARMS_NUMBER}/{ARMS_ANY}.

Konvergensi cerdas

Setelah kebijakan sebelumnya diterapkan, beberapa URL divergen mungkin masih tersisa. ARMS secara berkala menghasilkan aturan konvergensi menggunakan algoritma untuk menangani URL tersebut.

PropertiDetail
Logika1. Mengelompokkan contoh URL menggunakan algoritma. 2. Mengidentifikasi pola URL setiap kelompok dan menghasilkan aturan konvergensi. 3. Menggabungkan aturan konvergensi antar kelompok.
FormatSegmen digit divergen: {ARMS_NUMBER}. Segmen huruf divergen: {ARMS_WORD}. Segmen alfanumerik campuran divergen: {ARMS_ANY}.
Tipe data yang didukungURL
LokasiAgen ARMS V4.x dan versi lebih baru: agen. Agen ARMS sebelum V4.x: server.
Versi agen yang didukungSemua

Contoh

/api/product/1/info
/api/product/2/info
....
/api/product/N/info

Server mencocokkan URL tersebut menggunakan ekspresi reguler /api/product/[\d]+/info dan mengonvergensikannya menjadi /api/product/{ARMS_NUMBER}/info.

Normalisasi SQL

Agen ARMS dapat mengumpulkan banyak pernyataan SQL akibat sharding, anotasi, atau literal inline. ARMS menormalisasi setiap pernyataan SQL dengan mengganti nilai-nilai yang divergen.

PropertiDetail
Logika1. Menghapus anotasi. 2. Mengganti teks biasa. 3. Mengganti nama database dan tabel yang di-sharding.
FormatDigit atau huruf divergen diganti.
Tipe data yang didukungSQL
LokasiAgen ARMS
Versi agen yang didukung4.x dan versi 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 dapat mengumpulkan banyak alamat IP unik, sehingga menyebabkan divergensi.

PropertiDetail
Logika1. Mengelompokkan alamat IP berdasarkan port. 2. Menerapkan konvergensi jika jumlah alamat IP dalam satu kelompok melebihi ambang batas (default: 50).
Format{ARMS_IP}:port
Tipe data yang didukungIP
LokasiAgen ARMS V4.x dan versi lebih baru: agen. Agen ARMS sebelum V4.x: server.
Versi agen yang didukungSemua

Contoh

1.1.1.1:8080
...
1.1.1.255:8080

Alamat-alamat IP tersebut dikonvergensikan menjadi {ARMS_IP}:8080.

Konvergensi ruang kardinalitas

Kebijakan sebelumnya menyelesaikan sebagian besar masalah kardinalitas tinggi pada URL. Namun, untuk pernyataan SQL dan tipe data lainnya, sejumlah besar nilai dimensi mungkin tetap direkam. Untuk mencegah hal ini, ARMS membatasi jumlah nilai dimensi yang direkam dalam setiap periode waktu.

Catatan Kebijakan ini tidak dapat dinonaktifkan secara manual.
PropertiDetail
Logika1. Secara berkala menghasilkan ruang kardinalitas dengan ukuran tetap. 2. Untuk setiap nilai dimensi, memeriksa apakah nilai tersebut ada dalam ruang kardinalitas. Jika ya, nilai tersebut dikembalikan apa adanya. Jika tidak, nilai tersebut ditambahkan ke ruang kardinalitas. Jika ruang penuh, {ARMS_OTHERS} dikembalikan.
Format{ARMS_OTHERS}
Tipe data yang didukungSemua
LokasiAgen ARMS V4.x dan versi lebih baru: agen. Agen ARMS sebelum V4.x: server.
Versi agen yang didukungSemua

Ambang batas per jam default

ItemAmbang batas per jam
Antarmuka URL500
Tugas penjadwalan1.000
Antarmuka RPC1.000
Antarmuka hulu200
Panggilan SQL normal100
Panggilan SQL lambat100
URL permintaan eksternal200
Alamat permintaan eksternal100

Contoh

Asumsikan ukuran ruang kardinalitas diatur menjadi 100 catatan per jam. Alamat layanan eksternal:

www.a1.com
www.a2.com
....
www.a1000.com

Hanya 100 alamat pertama yang direkam per jam. Alamat berikutnya dikonvergensikan menjadi {ARMS_OTHERS}.

Urutan eksekusi

Kebijakan konvergensi dijalankan secara berurutan sesuai daftar di bawah ini. Begitu nilai dimensi cocok dengan suatu kebijakan, kebijakan berikutnya dilewati.

Agen ARMS sebelum V4.x

Sisi agen:

  • URL: Konvergensi berbasis anotasi Spring > Konvergensi berbasis statistik memori

  • SQL: Konvergensi berbasis statistik memori

  • IP dan lainnya: Konvergensi berbasis statistik memori

Sisi server:

  • URL: Konvergensi kustom > Konvergensi permintaan serangan siber > Konvergensi parameter kueri > Konvergensi resource statis > Konvergensi kata tidak bermakna > Konvergensi cerdas > Konvergensi ruang kardinalitas

  • SQL: Konvergensi kustom > Konvergensi ruang kardinalitas

  • IP dan lainnya: Konvergensi kustom > Konvergensi alamat IP > Konvergensi ruang kardinalitas

Agen ARMS V4.x dan versi lebih baru

Sisi agen:

  • URL: Konvergensi berbasis anotasi Spring > Konvergensi kustom > Konvergensi permintaan serangan siber > Konvergensi parameter kueri > Konvergensi resource statis > Konvergensi kata tidak bermakna > Konvergensi cerdas > Konvergensi ruang kardinalitas

  • SQL: Konvergensi kustom > Normalisasi SQL > Konvergensi ruang kardinalitas

  • IP dan lainnya: Konvergensi kustom > Konvergensi alamat IP > Konvergensi ruang kardinalitas

Sisi server: Tidak berlaku (seluruh konvergensi dijalankan di sisi agen).

FAQ

Bagaimana cara melihat nilai asli sebelum konvergensi?

  • Agen ARMS V4.x dan versi lebih baru: Nilai asli maupun hasil konvergensi dicatat dalam data jejak. Gunakan Trace Explorer untuk melihat nilai asli.

  • Agen ARMS sebelum V4.x: Nilai asli tidak tersedia karena konvergensi terjadi di sisi server.

Bagaimana cara menyesuaikan aturan konvergensi?

Tentukan aturan konvergensi kustom di Konsol ARMS. Di halaman detail aplikasi, pilih Configuration > Convergence pada bilah navigasi atas.

image

Sebagai contoh, tentukan ekspresi reguler /api/v1/user/\d+/info untuk mengonvergensikan semua URL yang cocok menjadi /api/v1/user/userId/info. URL /api/v1/user/124343543/info kemudian dikonvergensikan menjadi /api/v1/user/userId/info.

Bagaimana cara mengecualikan URL tertentu dari konvergensi?

Tentukan URL yang ingin dikecualikan dari konvergensi di Konsol ARMS. Buka halaman Configuration > Convergence yang sama seperti pada pertanyaan sebelumnya.

Sebagai contoh, jika Anda mengecualikan /api/v1/user/9999/info dari konvergensi, URL ini tidak dikonvergensikan menjadi /api/v1/user/userId/info.

Apa perbedaan antara konvergensi sisi agen dan sisi server?

Konvergensi sisi agen memproses data di agen ARMS sebelum melaporkannya ke server. Hal ini mengurangi beban pemrosesan server dan memberikan akurasi data 100%.

Konvergensi sisi server diterapkan ketika versi agen tidak mendukung kebijakan tertentu. Tanpa konvergensi sisi agen, agen mengirim paket data yang belum dikonvergensikan ke server. Paket besar menimbulkan dua risiko:

  • Kehilangan data: Paket yang terlalu besar mungkin ditolak.

  • Akurasi berkurang: Keterbatasan pemrosesan di sisi server dapat memengaruhi akurasi data hasil konvergensi.

Upgrade ke versi agen ARMS terbaru agar seluruh kebijakan konvergensi dijalankan di sisi agen.