Application Real-Time Monitoring Service (ARMS) aracı; istek sayısı, hata sayısı ve yanıt süreleri gibi ölçüm verilerini toplar. Veri çeşitliliğini ve doğruluğunu artırmak için ölçümler IP adresleri, SQL deyimleri ve URL'ler gibi boyutlar içerir.
Bazı boyutlar, yüksek kardinalite olarak bilinen çok sayıda benzersiz değer üretebilir. Örneğin, /api/v1/users/{ID}/info URL şablonuna sahip bir RESTful API, her kullanıcı kimliği için farklı bir URL oluşturur. Yüksek kardinalite depolamayı zorlar, yazma kayıplarına ve yavaş sorgulara neden olur ve maliyetleri artırır.
Bu sorunu çözmek için ARMS, yüksek kardinaliteli boyut değerlerini normalize edilmiş yer tutucularla değiştiren yakınsama ilkelerini uygular.
ARMS aracı V4.x ve sonraki sürümlerde tüm yakınsama işlemleri araç üzerinde çalışır ve bu sayede %100 veri doğruluğu sağlanır. Hem orijinal hem de yakınsanmış değerler izleme verilerinde kaydedilir. Yakınsamadan önceki orijinal değerleri görüntülemek için
kullanın.
Hızlı referans: Yakınsama formatları
Aşağıdaki tabloda yer tutucu formatları ve bunların ne zaman kullanıldığı özetlenmiştir.
| Format | Senaryo |
|---|---|
{ARMS_IP}:port |
Aynı bağlantı noktasına erişen IP adreslerinin sayısı eşiği aşar (varsayılan: 50). |
{ARMS_STATIC_REQ} veya {ARMS_S_XXX} |
URL statik bir kaynağı işaret eder. |
{ARMS_ATTACK_REQ} |
URL siber saldırılarda kullanılabilecek dizeler içerir. |
{ARMS_PARAMED_REQ} |
URL sorgu parametreleri içerir. |
{ARMS_OTHERS} |
Belirli bir zaman diliminde kaydedilen boyut değeri sayısı kardinalite alanı eşğini aşar. Varsayılan eşikler için bkz. Kardinalite alanı yakınsaması. |
{ARMS_NUMBER} |
URL yol segmentleri (/ ile ayrılır) tamamen rakamlardan oluşur ve aşırı uzun veya çok değişkendir. |
{ARMS_WORD} |
URL yol segmentleri (/ ile ayrılır) tamamen kelimelerden oluşur ve aşırı uzun veya çok değişkendir. |
{ARMS_ANY} |
URL yol segmentleri (/ ile ayrılır) harf ve rakam karışımı dizelerdir ve aşırı uzun veya çok değişkendir. |
{XXX} |
URL Spring Controller ek açıklamalarını kullanır. |
* içeren dize |
Bellek istatistiğine dayalı yakınsama (yalnızca V4.x öncesi ARMS aracında). |
Yakınsama ilkeleri
Tüm yakınsama ilkeleri varsayılan olarak etkindir. Kardinalite alanı yakınsaması dışındaki her ilke manuel olarak devre dışı bırakılabilir.
Her ilke belirli veri türlerini destekler. Desteklenen veri türü aşağıdaki her ilke bölümünde belirtilmiştir.
Spring ek açıklamasına dayalı yakınsama
Yol değişkenleri içeren RESTful API'lerde ham istek URL'lerinin boyut değeri olarak kullanılması ıraksamaya neden olur. ARMS, Spring yönlendirme ek açıklamalarından (örneğin @RequestMapping) yol bilgilerini okur ve bunun yerine ek açıklamasında tanımlanan yolu boyut değeri olarak kullanır.
| Özellik | Ayrıntılar |
|---|---|
| Mantık | Spring URL'lerinin yönlendirme ek açıklamalarından yol bilgilerini okur. |
| Format | Yönlendirme ek açıklamalarında yapılandırılan değer. |
| Desteklenen veri türü | URL (yalnızca gelen hizmet URL'leri; giden URL'ler desteklenmez). |
| Konum | ARMS aracı |
| Desteklenen aracı sürümleri | 2.9.1.2 ve sonrası |
Örnek
Aşağıdaki APIController bir yol değişkeni kullanarak kullanıcı bilgilerini alan bir RESTful uç noktası tanımlar. @RequestMapping("/api/v1/user/{userId}/info") ek açıklaması URL desenini belirtir.
@RestController
@RequestMapping("/api/v1")
public class APIController {
@RequestMapping("/user/{userId}/info")
public String getUserInfo(@PathVariable("userId") String userId) {
return "hello " + userId;
}
}
Sonuç: /api/v1/user/1234/info değeri /api/v1/user/{userId}/info olarak yakınsanır.
Bellek istatistiğine dayalı yakınsama
Spring Web çerçevesini kullanmayan uygulamalar veya ek açıklamasına dayalı yakınsamanın başarısız olduğu durumlarda ARMS, bellek istatistiğine dayalı yakınsamaya geri döner.
Bu ilke yalnızca V4.x öncesi ARMS aracı sürümleri için geçerlidir.
| Özellik | Ayrıntılar |
|---|---|
| Mantık | 1. Her girişi önceden tanımlanmış ayraçlara (örneğin / veya =) göre bölerek bir terim kümesi belirler. 2. Her konumdaki benzersiz değer sayısını (kardinalite) sayar. Kardinalite önceden tanımlanmış bir eşiği aşarsa o konumdaki terim * ile değiştirilir. |
| Format | * içeren dize. |
| Desteklenen veri türleri | Tümü |
| Konum | ARMS aracı |
| Desteklenen aracı sürümleri | 2.x ve 2.x'ten sonraki ancak 4.x'ten önceki sürümler |
Örnek
Bir uygulama /api/v1/user/${userId}/info URL şablonunu sağlar. Bellek istatistikleri modülü kullanıcı kimliklerinde ıraksama tespit eder ve URL'yi /api/v1/user/*/info olarak yakınsar.
Özel yakınsama
URL'leri normal ifadelere göre eşleştirmek ve bunları belirtilen bir hedefle değiştirmek için özel yakınsama kuralları tanımlayın.
| Özellik | Ayrıntılar |
|---|---|
| Mantık | Özel yakınsama kurallarını sırayla eşleştirir. Eşleşen ilk kural uygulanır. |
| Format | Yapılandırmanıza göre belirlenir. |
| Desteklenen veri türü | URL |
| Konum | ARMS aracı V4.x ve sonrası: araç. V4.x öncesi ARMS aracı: sunucu. |
| Desteklenen aracı sürümleri | Tümü |
Örnek
Özel kural: /api/v1/user/[\d]+/info ile eşleşen tüm URL'leri /api/v1/getUserInfo olarak yakınsa.
Sonuç: /api/v1/user/[\d]+/info normal ifadesiyle eşleşen tüm URL'ler /api/v1/getUserInfo olarak yakınsanır.
Statik kaynak yakınsaması
ARMS aracının bazı eski sürümleri statik kaynaklar için ölçümleri izler. Statik kaynak URL'leri sık sık değiştiğinden bu ölçümler için yakınsama varsayılan olarak etkindir.
| Özellik | Ayrıntılar |
|---|---|
| Mantık | URL uzantısının varsayılan statik kaynak uzantıları listesiyle eşleşip eşleşmediğini kontrol eder. Eşleşirse URL yakınsanır. |
| Format | Varsayılan: {ARMS_STATIC_REQ}. Gelişmiş yapılandırmayı etkinleştirmek için destek talebi gönderirseniz format kaynak uzantısını içerir (örneğin {ARMS_S_JPG}). |
| Desteklenen veri türü | URL |
| Konum | ARMS aracı V4.x ve sonrası: araç. V4.x öncesi ARMS aracı: sunucu. |
| Desteklenen aracı sürümleri | Tümü |
Varsayılan statik kaynak uzantıları:
.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
Örnek
Varsayılan olarak /api/v1/hello.jpg değeri {ARMS_STATIC_REQ} olarak yakınsanır. Gelişmiş yapılandırma etkinleştirildiğinde ise {ARMS_S_JPG} olarak yakınsanır.
Siber saldırı isteği yakınsaması
Hizmetler siber saldırı istekleri alabilir (örneğin /etc/passwd dosyasını okuma girişimleri). Bu istekler saldırganlar tarafından hazırlanır ve sık sık değişir. Tümünün kaydedilmesi depolama kaynaklarını zorlar.
| Özellik | Ayrıntılar |
|---|---|
| Mantık | Bir URL'nin siber saldırılarda yaygın olarak kullanılan karakterler içerip içermediğini kontrol eder. İçeriyorsa URL yakınsanır. |
| Format | {ARMS_ATTACK_REQ} |
| Desteklenen veri türü | URL |
| Konum | ARMS aracı V4.x ve sonrası: araç. V4.x öncesi ARMS aracı: sunucu. |
| Desteklenen aracı sürümleri | Tümü |
Varsayılan karakterler: ' $ \ ' !
Örnek
/app/v1/user/info?cmd='more /etc/passwd' değeri {ARMS_ATTACK_REQ} olarak yakınsanır.
Sorgu parametresi yakınsaması
Varsayılan olarak ARMS aracı URL'leri toplarken sorgu parametrelerini yakalamaz. Ancak bazı URL'ler ıraksamaya neden olabilecek sorgu parametreleri içerir.
| Özellik | Ayrıntılar |
|---|---|
| Mantık | Bir URL'nin sorgu parametreleri içerip içermediğini kontrol eder. İçeriyorsa URL yakınsanır. |
| Format | Varsayılan: {ARMS_PARAMED_REQ}. Gelişmiş yapılandırmayı etkinleştirmek için destek talebi gönderirseniz yakınsama sonucu URL yolunu korur ve parametreleri {ARMS_REQ_PARAMS} ile değiştirir. |
| Desteklenen veri türü | URL |
| Konum | ARMS aracı V4.x ve sonrası: araç. V4.x öncesi ARMS aracı: sunucu. |
| Desteklenen aracı sürümleri | Tümü |
Varsayılan sorgu parametresi ayraçları: ; ? &
Örnek
Varsayılan olarak /api/v1/user/info?userId=12345 değeri {ARMS_PARAMED_REQ} olarak yakınsanır. Gelişmiş yapılandırma etkinleştirildiğinde ise /api/v1/user/info?{ARMS_REQ_PARAMS} olarak yakınsanır.
Anlamsız sözcük yakınsaması
Aşırı uzun kelimeler veya rakam dizileri içeren URL'lerin ıraksama olasılığı yüksektir. ARMS, belirtilen uzunluk eşiklerini aşan yol segmentlerini değiştirir.
| Özellik | Ayrıntılar |
|---|---|
| Mantık | Bir URL'yi eğik çizgiye (/) göre bir terim dizisine böler ve her terimi aşağıdaki uzunluk eşiklerine göre kontrol eder: maksimum sözcük uzunluğu (64 karakter), maksimum rakam uzunluğu (10 karakter) ve sözcük içindeki maksimum rakam uzunluğu (10 karakter). |
| Format | Aşırı uzun rakamlar: {ARMS_NUMBER}. Aşırı uzun sözcükler: {ARMS_WORD}. Aşırı uzun karma alfasayısal dizeler: {ARMS_ANY}. |
| Desteklenen veri türü | URL |
| Konum | ARMS aracı V4.x ve sonrası: araç. V4.x öncesi ARMS aracı: sunucu. |
| Desteklenen aracı sürümleri | Tümü |
Örnek
/api/2024040710/hello2024040710 değeri /api/{ARMS_NUMBER}/{ARMS_ANY} olarak yakınsanır.
Akıllı yakınsama
Önceki ilkeler uygulandıktan sonra bazı ıraksayan URL'ler kalabilir. ARMS, bu URL'leri işlemek için algoritmalar kullanarak periyodik olarak yakınsama kuralları oluşturur.
| Özellik | Ayrıntılar |
|---|---|
| Mantık | 1. Örnek URL'leri algoritmalar kullanarak gruplandırır. 2. Her grubun URL desenini belirler ve yakınsama kuralları oluşturur. 3. Gruplar arasındaki yakınsama kurallarını birleştirir. |
| Format | Iraksayan rakam segmentleri: {ARMS_NUMBER}. Iraksayan harf segmentleri: {ARMS_WORD}. Iraksayan karma alfasayısal segmentler: {ARMS_ANY}. |
| Desteklenen veri türü | URL |
| Konum | ARMS aracı V4.x ve sonrası: araç. V4.x öncesi ARMS aracı: sunucu. |
| Desteklenen aracı sürümleri | Tümü |
Örnek
/api/product/1/info
/api/product/2/info
....
/api/product/N/info
Sunucu bu URL'leri /api/product/[\d]+/info normal ifadesini kullanarak eşleştirir ve /api/product/{ARMS_NUMBER}/info olarak yakınsar.
SQL normalizasyonu
ARMS aracı; parçalama, ek açıklamaları veya satır içi değişmez değerler nedeniyle çok sayıda SQL deyimi toplayabilir. ARMS, her bir SQL deyimini ıraksayan değerleri değiştirerek normalize eder.
| Özellik | Ayrıntılar |
|---|---|
| Mantık | 1. Ek açıklamaları kaldırır. 2. Düz metni değiştirir. 3. Parçalanmış veritabanı ve tablo adlarını değiştirir. |
| Format | Iraksayan rakamlar veya harfler değiştirilir. |
| Desteklenen veri türü | SQL |
| Konum | ARMS aracı |
| Desteklenen aracı sürümleri | 4.x ve sonrası |
Örnek
select * from cache_0 where ckey='23'
Sonuç:
select * from cache_{NUM} where ckey=?
IP adresi yakınsaması
Uygulamanız IP adresleri üzerinden erişilen birçok harici hizmete bağlıysa ARMS aracı çok sayıda benzersiz IP adresi toplayarak ıraksamaya neden olabilir.
| Özellik | Ayrıntılar |
|---|---|
| Mantık | 1. IP adreslerini bağlantı noktasına göre gruplandırır. 2. Bir gruptaki IP adresi sayısı eşiği aşarsa (varsayılan: 50) yakınsama uygular. |
| Format | {ARMS_IP}:port |
| Desteklenen veri türü | IP |
| Konum | ARMS aracı V4.x ve sonrası: araç. V4.x öncesi ARMS aracı: sunucu. |
| Desteklenen aracı sürümleri | Tümü |
Örnek
1.1.1.1:8080
...
1.1.1.255:8080
Bu IP adresleri {ARMS_IP}:8080 olarak yakınsanır.
Kardinalite alanı yakınsaması
Önceki ilkeler URL'lerdeki yüksek kardinalite sorunlarının çoğunu çözer. Ancak SQL deyimleri ve diğer veri türleri için yine de çok sayıda boyut değeri kaydedilebilir. Bunu önlemek için ARMS, her zaman diliminde kaydedilen boyut değeri sayısını sınırlar.
Bu ilke manuel olarak devre dışı bırakılamaz.
| Özellik | Ayrıntılar |
|---|---|
| Mantık | 1. Sabit boyutta bir kardinalite alanı periyodik olarak oluşturur. 2. Her boyut değeri için kardinalite alanında olup olmadığını kontrol eder. Varsa değer olduğu gibi döndürülür. Yoksa değer kardinalite alanına eklenir. Alan doluysa {ARMS_OTHERS} döndürülür. |
| Format | {ARMS_OTHERS} |
| Desteklenen veri türleri | Tümü |
| Konum | ARMS aracı V4.x ve sonrası: araç. V4.x öncesi ARMS aracı: sunucu. |
| Desteklenen aracı sürümleri | Tümü |
Varsayılan saatlik eşikler
| Öğe | Saatlik eşik |
|---|---|
| URL arayüzü | 500 |
| Zamanlama görevi | 1.000 |
| RPC arayüzü | 1.000 |
| Yukarı akış arayüzü | 200 |
| Normal SQL çağrısı | 100 |
| Yavaş SQL çağrısı | 100 |
| Harici istek URL'si | 200 |
| Harici istek adresi | 100 |
Örnek
Kardinalite alanı boyutunun saat başına 100 kayıt olarak ayarlandığını varsayalım. Harici hizmet adresleri:
www.a1.com
www.a2.com
....
www.a1000.com
Saat başına yalnızca ilk 100 adres kaydedilir. Sonraki adresler {ARMS_OTHERS} olarak yakınsanır.
Çalıştırma sırası
Yakınsama ilkeleri aşağıda listelenen sırayla ardışık olarak çalışır. Bir boyut değeri bir ilkeyle eşleştiğinde kalan ilkeler atlanır.
V4.x öncesi ARMS aracı
Aracı tarafında:
URL: Spring ek açıklamasına dayalı yakınsama > Bellek istatistiğine dayalı yakınsama
SQL: Bellek istatistiğine dayalı yakınsama
IP ve diğerleri: Bellek istatistiğine dayalı yakınsama
Sunucu tarafında:
URL: Özel yakınsama > Siber saldırı isteği yakınsaması > Sorgu parametresi yakınsaması > Statik kaynak yakınsaması > Anlamsız sözcük yakınsaması > Akıllı yakınsama > Kardinalite alanı yakınsaması
SQL: Özel yakınsama > Kardinalite alanı yakınsaması
IP ve diğerleri: Özel yakınsama > IP adresi yakınsaması > Kardinalite alanı yakınsaması
ARMS aracı V4.x ve sonrası
Aracı tarafında:
URL: Spring ek açıklamasına dayalı yakınsama > Özel yakınsama > Siber saldırı isteği yakınsaması > Sorgu parametresi yakınsaması > Statik kaynak yakınsaması > Anlamsız sözcük yakınsaması > Akıllı yakınsama > Kardinalite alanı yakınsaması
SQL: Özel yakınsama > SQL normalizasyonu > Kardinalite alanı yakınsaması
IP ve diğerleri: Özel yakınsama > IP adresi yakınsaması > Kardinalite alanı yakınsaması
Sunucu tarafında: Yok (tüm yakınsama işlemleri araçta çalışır).
SSS
Yakınsamadan önceki orijinal değerleri nasıl görüntülerim?
ARMS aracı V4.x ve sonrası: Hem orijinal hem de yakınsanmış değerler izleme verilerinde kaydedilir. Orijinal değerleri görüntülemek için Trace Explorer kullanın.
V4.x öncesi ARMS aracı: Yakınsama sunucuda gerçekleştiğinden orijinal değerler kullanılamaz.
Yakınsama kurallarını nasıl özelleştiririm?
ARMS konsolunda özel yakınsama kuralları tanımlayın. Uygulama ayrıntıları sayfasında üst gezinme çubuğundan Configuration > Convergence seçeneğini belirleyin.

Örneğin, eşleşen tüm URL'leri /api/v1/user/userId/info olarak yakınsamak için /api/v1/user/\d+/info normal ifadesini belirtin. /api/v1/user/124343543/info URL'si daha sonra /api/v1/user/userId/info olarak yakınsanır.
Belirli URL'leri yakınsamadan nasıl hariç tutarım?
ARMS konsolunda yakınsamadan hariç tutulacak URL'leri belirtin. Önceki soruda açıklanan aynı Configuration > Convergence sayfasına gidin.
Örneğin, /api/v1/user/9999/info URL'sini yakınsamadan hariç tutarsanız bu URL /api/v1/user/userId/info olarak yakınsanmaz.
Aracı tarafı ve sunucu tarafı yakınsama arasındaki fark nedir?
Aracı tarafı yakınsama, verileri sunucuya raporlamadan önce ARMS aracısında işler. Bu yaklaşım sunucu işleme yükünü azaltır ve %100 veri doğruluğu sağlar.
Sunucu tarafı yakınsama, aracı sürümünün belirli ilkeleri desteklemediği durumlarda uygulanır. Aracı tarafı yakınsama olmadan aracı yakınsanmamış veri paketlerini sunucuya gönderir. Büyük paketler iki risk oluşturur:
Veri kaybı: Aşırı büyük paketler reddedilebilir.
Azalan doğruluk: Sunucu tarafı işleme sınırlamaları yakınsanmış verilerin doğruluğunu etkileyebilir.
Tüm yakınsama ilkelerini araçta çalıştırmak için en son ARMS aracı sürümüne yükseltin.