全部产品
Search
文档中心

Application Real-Time Monitoring Service:Kebijakan konvergensi ARMS

更新时间:Jul 02, 2025

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 / dalam URL semuanya adalah digit. Digit tersebut terlalu panjang atau ada berbagai macam digit yang berbeda.

{ARMS_WORD}

Istilah yang dipisahkan oleh / dalam URL semuanya adalah kata. Kata-kata tersebut terlalu panjang atau ada berbagai macam kata yang berbeda.

{ARMS_ANY}

Istilah yang dipisahkan oleh / dalam URL adalah string yang terdiri dari huruf dan angka. String tersebut terlalu panjang atau ada berbagai macam string yang berbeda.

{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.

Catatan

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.

Catatan

Kebijakan ini hanya berlaku untuk agen ARMS sebelum versi V4.x.

Logika

  1. Memisahkan setiap input menggunakan pemisah yang telah ditentukan (seperti "/" atau "=") untuk mengidentifikasi satu set kata N.

  2. 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.

  1. Mengelompokkan URL sampel menggunakan algoritma.

  2. Mengonvergensi URL berdasarkan pola URL setiap grup dan menghasilkan aturan konvergensi.

  3. 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/info

Untuk 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.

  1. Menghapus anotasi.

  2. Mengganti teks biasa.

  3. 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

  1. Mengelompokkan alamat IP berdasarkan port.

  2. 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:8080

Alamat 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.

  1. Secara berkala menghasilkan ruang kardinalitas dengan ukuran tetap.

  2. 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.com

Hanya 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

Catatan

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.

image

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.