Create Traffic Variable
Create Traffic Variable Aksiyonu Nedir?
Create Traffic Variable aksiyonu, işlenmekte olan trafiğe ait adlandırılmış değişkenler tanımlar. Değişkene atanan değer sabit bir metin olabileceği gibi, akıllı değişkenlerle üretilen dinamik bir içerik de olabilir.
Tanımlanan değişken, aynı vService içindeki diğer koşullarda ve aksiyonlarda %TR7VAR(ad) akıllı değişkeniyle okunur. Böylece bir kez hesaplanan bilgi, kural akışının ilerleyen adımlarında yeniden kullanılabilir.
Trafik değişkenleri, TR7 motorunun kendi iç değişkenlerinden yalıtılmış bir alanda tutulur; operatörün verdiği adlar sistem değerleriyle hiçbir koşulda çakışmaz.
Create Traffic Variable Aksiyonunun Önemi
Karmaşık trafik kurallarında aynı bilgi (hesaplanmış bir anahtar, birleştirilmiş bir kimlik, bir sınıflandırma etiketi) çoğu zaman birden fazla noktada gerekir. Bu bilginin her seferinde yeniden üretilmesi hem kural setini büyütür hem de tutarsızlık riski doğurur.
Create Traffic Variable aksiyonu;
- Bir kez hesaplanan değerin akış boyunca yeniden kullanılmasını sağlar,
- Karmaşık koşulların sonucunun etiketlenip sonraki kurallarda sadeleşmesini mümkün kılar,
- Birden çok akıllı değişkenin tek bir değerde birleştirilmesini sağlar,
- İstek anında elde edilen bilginin cevap aşamasına taşınmasını mümkün kılar,
- Üretilen etiketlerin log satırlarına yazılmasını sağlar.
Kullanılabildiği vService Tipleri
Çalışma Anı
Nasıl Eklenir?
Yeni bir Create Traffic Variable Aksiyonu, TR7 web yönetim arayüzü üzerinden aşağıdaki adımlar izlenerek eklenebilir:
- Sol altta bulunan TR7 logosuna tıklanarak Configuration Menu açılır.
- Load Balancer → Actions → Add adımları takip edilir.
- Aksiyon için benzersiz ve açıklayıcı bir isim girilir.
- Action Type olarak Create Traffic Variable seçilir.
- Aksiyona ait ilgili konfigürasyonlar yapılandırılır.
- Conditions sekmesinden aksiyonun hangi koşul/koşullarda devreye gireceği belirlenir.
Addbutonuna tıklanarak aksiyon eklenir.
Create Traffic Variable Aksiyonu Ekleme Formu
Create Traffic Variable Aksiyonu Ekleme Formu
INFO
Execution Level Varsayılan: On request
Aksiyonun hangi aşamada çalıştırılacağını belirler.
Bu alan kayıttan sonra değiştirilemez; yön değişikliği gerekiyorsa yeni bir aksiyon tanımlanır. Aksiyon vService içinden ekleniyorsa ve vService yalnızca tek bir yönü destekliyorsa alan otomatik doldurulur ve düzenlenemez.
- On Request: Değişken, istek kuralları işlenirken atanır. Değere hem sonraki istek aşaması kural ve koşullarından hem de cevap aşamasından erişilebilir.
- On Response: Değişken, cevap kuralları işlenirken atanır. Değere yalnızca kendisinden sonraki cevap aşaması kural ve koşullarından erişilebilir; istek aşaması bu değişkeni göremez.
Seçim ayrıca Variable Value alanında sunulan akıllı değişken havuzunu belirler: On Response seçildiğinde cevap aşamasına ait değişkenler (ör. durum kodu, cevap başlıkları) listelenir.
INFO
Hit Counter Varsayılan: Kapalı
Hit Counter, aksiyonun her çalışmasını sayar (aksiyonun kendi koşuluyla birlikte değerlendirilir; Deny gibi sonlandırıcı aksiyonlarda bile sayım kaybolmaz). Aksiyon bazlı hız ve toplamlar, vService panosundaki Action Hits sekmesinde ve canlı istatistik ekranında görüntülenir; listelerde ayrıca bir kolon olarak görünmez. Sayaç kümülatiftir; elle sıfırlama arayüzü yoktur: sayılan aksiyon kümesi değiştiğinde veya vService yeniden yüklendiğinde sıfırdan başlar, geçmiş ise panoda hız (hit/s) olarak korunur.
INFO
Set Variable on Hit
Aksiyon her çalıştığında değeri atanacak bir değişken adı girilebilir (isteğe bağlı; varsayılan boş). Ad; harf, rakam ve alt çizgiden oluşabilir (en fazla 32 karakter). Aksiyon tetiklendiğinde değişken 1 değerine atanır ve aynı vService'teki diğer koşul ve aksiyonlarda %TR7VAR(ad) akıllı değişkeniyle okunarak zincirleme davranışlar kurulabilir.
WARNING
Bu alan ile aksiyonun kendi Variable Assignments tablosu aynı isim alanını paylaşır. Aynı ad her ikisinde de kullanılırsa biri diğerinin değerini ezer.
INFO
Variable Assignments Zorunlu
Yaratılacak trafik değişkenleri bu tabloda tanımlanır. Tablo Variable Name ve Variable Value kolonlarından oluşur; alan etiketinin sağındaki + butonuyla yeni satır eklenir. En az bir atama tanımlanması zorunludur; tek satır kaldığında silinemez. Satır sayısı için üst sınır yoktur, tek bir aksiyonla birden çok değişken yaratılabilir.
Variable Name
Değişkenin adıdır. Yalnızca harf, rakam ve alt çizgi kullanılabilir ve ad en fazla 32 karakter olabilir; nokta, tire ve boşluk kabul edilmez. Aynı ad bir aksiyon içinde yalnızca bir kez kullanılabilir.
Farklı aksiyonların aynı adı yazması serbesttir ve desteklenen bir kullanım şeklidir: bu durumda kural sırasında en son çalışan atama geçerli olur. Farklı koşullara bağlı birkaç aksiyonla aynı değişkene farklı değerler yazarak "duruma göre etiketleme" kurgusu oluşturulabilir.
Variable Value
Değişkene atanacak değerdir. Düz metin, akıllı değişken veya ikisinin karışımı yazılabilir (ör. bir sabit önekin ardından istek bilgisi).
TIP
Bu alan Smart Variables destekler. Değişken satırına (veya fx butonuna) tıklandığında Değişken ekle / Değişken düzenle penceresi açılır. Bu pencerede Değişken adı aranabilir listeden seçilir, değişken argüman alıyorsa (başlık adı, çerez adı vb.) ilgili alan doldurulur, gerekiyorsa Fonksiyondan geçir ile akıllı fonksiyon zinciri tanımlanır; Özet alanında oluşan ifadenin önizlemesi görülür ve Gönder ile alana yazılır.
Detaylı bilgi Variables sayfasında yer alır.
Sunulan akıllı değişken havuzu, seçili Execution Level ve vService protokolüne göre değişir. Daha önce yaratılmış bir trafik değişkeni de %TR7VAR girdisiyle bu alanda okunabilir; böylece değişkenler birbiri üzerine inşa edilebilir.
INFO
Conditions
Bu alanda, ilgili aksiyonun hangi koşul veya koşullar sağlandığında devreye gireceği tanımlanır.
Bir veya birden fazla koşul eklenerek, and/or yapısı ile davranışın hedefli ve kontrollü şekilde uygulanması sağlanabilir.
Koşullar hakkında detaylı bilgi Conditions sayfasında yer alır.
WARNING
Bu alanda herhangi bir koşul tanımlanmazsa, ilgili aksiyon koşulsuz (Always) olarak çalışır ve değişken ilgili vService'e gelen tüm trafik için atanır.
INFO
Details
Formun alt kısmındaki katlanabilir Details bölümünde gelişmiş alan bulunur.
Rule Protocol Varsayılan: HTTP
Aksiyonun hangi protokoldeki vService'lerde kullanılacağını belirler: HTTP veya TCP. Seçim, Variable Value alanında sunulan akıllı değişkenleri ve aksiyonun bağlanabileceği koşul kümesini belirler.
Bu alan da kayıttan sonra değiştirilemez; aksiyon bir vService içinden ekleniyorsa vService'in protokolüne göre otomatik doldurulur ve düzenlenemez.
INFO
Form Butonları
Add
Add butonuna tıklanarak aksiyon ekleme işlemi tamamlanır.
Add & Repeat
Add & Repeat butonu ile aksiyon ekleme işlemi tamamlanır ve farklı konfigürasyonlarla ilgili pencereden çıkılmadan yeni bir aksiyon daha eklenebilir.
Aksiyon Eklendi
Değişkenin Ömrü ve Okunabildiği Yerler
Değişken tek bir istek/cevap akışı boyunca yaşar
Trafik değişkeni, işlenmekte olan isteğin ve ona ait cevabın ömrüyle sınırlıdır. Akış tamamlandığında değişken kaybolur:
- Aynı bağlantı üzerinden gelen bir sonraki istek, değişkeni boş görür.
- Değişkenler istemciye bağlı değildir; oturum boyunca kalıcı bilgi tutmak için kullanılamaz. Kalıcı takip gerektiren senaryolarda Advanced Traffic Inspection veya Quarantine aksiyonları kullanılır.
- Henüz atanmamış bir değişken okunduğunda sonuç boş değerdir; hata üretmez, karşılaştırmalar eşleşmez.
Atanan değişken, TR7'de akıllı değişken kabul eden her yerde %TR7VAR(ad) girdisiyle okunabilir:
| Kullanım yeri | Açıklama |
|---|---|
| Diğer aksiyonların değer alanları | Başlık içeriği, yönlendirme adresi, path, gösterilecek içerik gibi alanlar |
| Koşullar | Akıllı değişken kullanan koşullarda değişkenin değeri karşılaştırılır |
| Log satır formatı | Log profilinde tanımlanan manuel satır formatına yazılabilir |
Koşulda okurken ifadeyi yalnız bırakın
Bir koşulda trafik değişkeni okunurken ifade tek başına yazılmalıdır (yalnızca %TR7VAR(ad); başına/sonuna metin eklenmemeli, fonksiyondan geçirilmemelidir).
İfade yalnız yazıldığında değer kural sırasına uygun biçimde, yani kendisinden önce çalışan atamalar dikkate alınarak okunur. İfadenin etrafına metin eklendiğinde veya fonksiyon zinciri uygulandığında değer kural akışı başlamadan önce alınır ve değişken henüz atanmamış olduğu için boş görünür.
Set Variable On Hit ile Farkı
Her iki mekanizma da trafik değişkeni yazar; amaçları farklıdır:
| Create Traffic Variable aksiyonu | Set variable on hit alanı | |
|---|---|---|
| Nedir | Bağımsız bir aksiyon tipi | Sayaç destekleyen aksiyonların üzerindeki yan alan |
| Kaç değişken | Sınırsız (tablo halinde) | Tek değişken |
| Değer | Serbest; metin ve akıllı değişkenler | Sabit 1 |
| Amaç | Bir bilgiyi hesaplayıp taşımak | "Bu aksiyon çalıştı" bayrağı bırakmak |
| Engelleyen aksiyonlarda | Konu dışı | Aksiyon trafiği sonlandırsa bile değişken atanır |
Kısaca: Set variable on hit bir bayraktır, Create Traffic Variable ise bir değer atamasıdır.
Operasyonel Kullanım Önerileri
- Anlamlı Adlar Kullanın. Değişken adları kural listelerinde ve log satırlarında görünür;
tier,tenant,riskLevelgibi ne taşıdığını anlatan adlar tercih edilmelidir. - Karmaşık Koşulu Bir Kez Kurun. Birden çok aksiyonda tekrarlanan uzun koşul yapıları, bir kez değerlendirilip trafik değişkeniyle etiketlenirse kural seti sadeleşir ve tutarsızlık riski ortadan kalkar.
- Sırayı Kontrol Edin. Değişken, kendisini yaratan aksiyondan sonra gelen kurallarda okunabilir. Okuyan aksiyon listede yukarıdaysa değer boş gelir; aksiyon sırası buna göre düzenlenmelidir.
- Aynı Adı Bilinçli Kullanın. Farklı koşullara bağlı aksiyonların aynı değişkene yazması desteklenir, ancak son yazan kazanır; istenmeyen ezmeleri önlemek için ad paylaşımı planlı yapılmalıdır.
- Hassas Bilgi Taşımayın. Değişken değerleri log satırlarına ve başlıklara aktarılabildiğinden, parola/anahtar gibi bilgiler değişkene yazılmamalıdır.
Canlı Ortamlarda Yaygın Kullanım Senaryoları
Aşağıdaki örnekler, ilgili aksiyonun gerçek sistemlerde en sık karşılaşılan kullanım senaryolarında nasıl uygulandığını göstermektedir. Bu senaryolar, canlı ortamlarda yaygın olarak tercih edilen ve sahada edinilmiş deneyimlere dayanan pratikleri temel alır.
Senaryo 1: Müşteri Segmentini Etiketleyip Kurum Servisine İletme
Problem: Uygulama, kullanıcının hangi abonelik seviyesinde olduğunu her istekte yeniden hesaplıyor ve bu bilgi TR7 tarafında tanımlı koşullarla tutarsız kalabiliyor.
Çözüm: Segment bilgisi TR7 tarafında bir kez belirlenip trafik değişkenine yazılır, ardından hem başlık olarak iletilir hem de sonraki kurallarda kullanılır.
Konfigürasyon:
- Execution Level: On request
- Variable Assignments:
tier=gold - Conditions: User Cookie Name: abonelik çerezi kurumsal müşteri değerini taşıyor
Sonuç:
- ✅ Koşulu sağlayan istekler →
tierdeğişkenigolddeğerini alır. - ✅ Sonraki Add HTTP Header aksiyonu →
X-Tierbaşlığını %TR7VAR(tier) ile doldurur. - ✅ Sonraki kurallar → Uzun çerez koşulunu tekrarlamak yerine değişkeni okur.
Senaryo 2: Birleşik Anahtarı Tek Seferde Üretme
Problem: Aynı hedef bilgisi (host ve path birleşimi) birden çok aksiyonda ayrı ayrı kuruluyor; bir alan değiştiğinde tüm aksiyonların güncellenmesi gerekiyor.
Çözüm: Birleşik değer tek bir aksiyonda üretilip değişkene yazılır, diğer aksiyonlar yalnızca değişkeni okur.
Konfigürasyon:
- Execution Level: On request
- Variable Assignments:
routeKey= fx ile host ve path akıllı değişkenleri arka arkaya eklenir - Conditions: Koşulsuz
Sonuç:
- ✅ Tüm istekler →
routeKeydeğişkeni oluşur. - ✅ Başlık ekleme, log ve koşul kuralları → Aynı değeri %TR7VAR(routeKey) ile kullanır.
- ✅ Değer tanımı değiştiğinde → Yalnızca tek bir aksiyon güncellenir.
Senaryo 3: İstek Bilgisini Cevap Aşamasına Taşıma
Problem: Cevap aşamasında alınacak karar, yalnızca istek anında görülebilen bir bilgiye (ör. isteğin geldiği path veya istemciye ait bir işaret) bağlı; bu bilgi cevap aşamasında artık erişilebilir değil.
Çözüm: Bilgi istek anında trafik değişkenine yazılır, cevap aşamasındaki koşul ve aksiyonlar bu değişkeni okur.
Konfigürasyon:
- Execution Level: On request
- Variable Assignments:
apiCall=1 - Conditions: Path:
/api/ile başlıyor
Sonuç:
- ✅ API istekleri →
apiCalldeğişkeni işaretlenir. - ✅ Cevap aşamasındaki aksiyonlar → %TR7VAR(apiCall) üzerinden yalnızca API cevaplarına uygulanır.
- ❌ Diğer istekler → Değişken boş kalır, cevap aşaması kuralları çalışmaz.
Senaryo 4: Duruma Göre Etiketleyip Loga Yazma
Problem: Log kayıtlarında isteğin hangi risk sınıfına düştüğü görünmüyor; analiz sırasında koşullar elle yeniden yorumlanıyor.
Çözüm: Farklı koşullara bağlı birkaç aksiyon aynı değişkene farklı değerler yazar, log satır formatı bu değişkeni içerir.
Konfigürasyon:
- Execution Level: On request
- Variable Assignments:
riskLevel=high(ikinci bir aksiyonda aynı değişkenelowyazılır) - Conditions: İlgili risk koşulu (ör. Blacklist IP Category)
Sonuç:
- ✅ Riskli istekler →
riskLeveldeğişkenihighdeğerini alır. - ✅ Log satırı → %TR7VAR(riskLevel) alanıyla sınıf bilgisini içerir.
- ✅ Analiz → Koşulları yeniden yorumlamadan risk sınıfına göre filtrelenebilir.
