Skip to content
Smarter by Design.Simpler for Business

TR7 JSON Format (HTTP) ​

Format Hakkında ​

TR7 JSON Format, HTTP isteklerinin tüm detaylarını yapılandırılmış JSON formatında sunan en kapsamlı log formatıdır. Profil formundaki Line Format listesinde TR7 JSON Format seçeneğiyle yer alır.

Bu format; ağ bilgileri, zamanlama metrikleri, SSL/TLS detayları, HTTP istek/yanıt bilgileri ve WAF olaylarını tek bir JSON objesi içinde toplar. Modern log analiz sistemleri ve veri işleme pipeline'ları için idealdir.

Kullanım senaryoları

  • Detaylı performans analizi.
  • Elasticsearch/Kibana entegrasyonu.
  • Özel log analiz uygulamaları.
  • Tam görünürlük gerektiren ortamlar.
  • WAF olay analizi.

Desteklenen Özellikler ​

HTTP vService
L7 TCP vService
WAF Bilgisi
SSL Bilgisi

INFO

Aynı TR7 JSON Format seçeneği bir L7 TCP vService'e atandığında daha dar bir alan kümesiyle üretilir: username, request, response, resFrom, isWafAttack ve wafInfo alanları bulunmaz, time yalnızca tw/tc/tt taşır ve tstate dört yerine iki karakterdir. Ayrıntısı TR7 JSON (L7 TCP) sayfasında yer alır.

Örnek Log (WAF Devre Dışı) ​

json
{
  "pool": "LOGTEST-H",
  "ident": "tr7",
  "ts": "09/Sep/2026:20:44:48 +0300",
  "username": "-",
  "time": {
    "tq": "442",
    "tw": "0",
    "tc": "0",
    "tr": "0",
    "tt": "442"
  },
  "conn": {
    "act": "1",
    "f": "1",
    "b": "0",
    "s": "0"
  },
  "queue": {
    "b": "0",
    "s": "0"
  },
  "tstate": "----",
  "retries": "0",
  "network": {
    "ci": "172.16.101.42",
    "cp": "55610",
    "fi": "172.16.102.85",
    "fp": "443",
    "si": "172.16.102.168",
    "sp": "80"
  },
  "ssl": {
    "fAlgKeysize": "128",
    "fCipher": "TLS_AES_128_GCM_SHA256",
    "fProtocol": "TLSv1.3",
    "fNpn": "-",
    "fAlpn": "http/1.1",
    "fKeyAlg": "rsaEncryption",
    "fSigAlg": "RSA-SHA256",
    "fVersion": "3",
    "fNotAfter": "240507115021Z",
    "fNotBefore": "230508115021Z",
    "fClientDn": "/C=TR/ST=ANK/L=ANK/O=TR7/OU=TR7/CN=new.tr7.com",
    "fIssuerDn": "/C=TR/ST=ANK/L=ANK/O=TR7/OU=TR7/CN=new.tr7.com",
    "sAlgKeysize": "-",
    "sCipher": "-",
    "sProtocol": "-",
    "sNpn": "-",
    "sAlpn": "-",
    "sKeyAlg": "-",
    "sSigAlg": "-",
    "sVersion": "-",
    "sNotAfter": "-",
    "sNotBefore": "-",
    "sClientDn": "-",
    "sIssuerDn": "-"
  },
  "request": {
    "method": "GET",
    "uri": "/login.php",
    "protocol": "HTTP/1.1",
    "headers": "host: test.tr7.com\r\ncache-control: max-age=0\r\nsec-ch-ua: \"Chromium\";v=\"152\", \"Not?A_Brand\";v=\"24\", \"Google Chrome\";v=\"152\"\r\nsec-ch-ua-mobile: ?0\r\nsec-ch-ua-platform: \"Windows\"\r\nupgrade-insecure-requests: 1\r\nuser-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36\r\naccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\r\nsec-fetch-site: none\r\nsec-fetch-mode: navigate\r\nsec-fetch-user: ?1\r\nsec-fetch-dest: document\r\naccept-encoding: gzip, deflate, br, zstd\r\naccept-language: en-US,en;q=0.9\r\n\r\n"
  },
  "response": {
    "status_code": "200",
    "headers": "date: Wed, 09 Sep 2026 17:44:48 GMT\r\nserver: Apache/2.4.59 (Debian)\r\nvary: Accept-Encoding\r\ncontent-encoding: gzip\r\ncontent-length: 824\r\ncontent-type: text/html; charset=UTF-8\r\n\r\n"
  },
  "ids": {
    "p": "lbPools-mtudin0c__lb",
    "b": "DBE",
    "f": "DFE~",
    "s": "lbBackends-mrdk4wpm"
  },
  "bytes": {
    "uploaded": "632",
    "read": "1011"
  },
  "resFrom": "-",
  "isWafAttack": "-",
  "wafInfo": {}
}

Örnek Log (WAF Bloku) ​

json
{
  "pool": "LOGTEST-H",
  "ident": "tr7",
  "ts": "09/Sep/2026:20:44:03 +0300",
  "username": "-",
  "time": {
    "tq": "499",
    "tw": "-1",
    "tc": "-1",
    "tr": "-1",
    "tt": "499"
  },
  "conn": {
    "act": "1",
    "f": "1",
    "b": "0",
    "s": "0"
  },
  "queue": {
    "b": "0",
    "s": "0"
  },
  "tstate": "LR--",
  "retries": "0",
  "network": {
    "ci": "172.16.101.42",
    "cp": "64136",
    "fi": "172.16.102.85",
    "fp": "443",
    "si": "-",
    "sp": "-"
  },
  "ssl": {
    "fAlgKeysize": "128",
    "fCipher": "TLS_AES_128_GCM_SHA256",
    "fProtocol": "TLSv1.3",
    "fNpn": "-",
    "fAlpn": "http/1.1",
    "fKeyAlg": "rsaEncryption",
    "fSigAlg": "RSA-SHA256",
    "fVersion": "3",
    "fNotAfter": "240507115021Z",
    "fNotBefore": "230508115021Z",
    "fClientDn": "/C=TR/ST=ANK/L=ANK/O=TR7/OU=TR7/CN=new.tr7.com",
    "fIssuerDn": "/C=TR/ST=ANK/L=ANK/O=TR7/OU=TR7/CN=new.tr7.com",
    "sAlgKeysize": "-",
    "sCipher": "-",
    "sProtocol": "-",
    "sNpn": "-",
    "sAlpn": "-",
    "sKeyAlg": "-",
    "sSigAlg": "-",
    "sVersion": "-",
    "sNotAfter": "-",
    "sNotBefore": "-",
    "sClientDn": "-",
    "sIssuerDn": "-"
  },
  "request": {
    "method": "GET",
    "uri": "/cmd.exe",
    "protocol": "HTTP/1.1",
    "headers": "host: test.tr7.com\r\ncache-control: max-age=0\r\nsec-ch-ua: \"Chromium\";v=\"152\", \"Not?A_Brand\";v=\"24\", \"Google Chrome\";v=\"152\"\r\nsec-ch-ua-mobile: ?0\r\nsec-ch-ua-platform: \"Windows\"\r\nupgrade-insecure-requests: 1\r\nuser-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36\r\naccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\r\nsec-fetch-site: none\r\nsec-fetch-mode: navigate\r\nsec-fetch-user: ?1\r\nsec-fetch-dest: document\r\naccept-encoding: gzip, deflate, br, zstd\r\naccept-language: en-US,en;q=0.9\r\n\r\n"
  },
  "response": {
    "status_code": "418",
    "headers": "-"
  },
  "ids": {
    "p": "lbPools-mtudin0c__lb",
    "b": "DFE",
    "f": "DFE~",
    "s": "<NOSRV>"
  },
  "bytes": {
    "uploaded": "630",
    "read": "0"
  },
  "resFrom": "-",
  "isWafAttack": "1",
  "wafInfo": {
    "totalScore": 8,
    "uid": "AC10652A:FA886AA19AE3:204001F",
    "action": "block",
    "wafTime": 1.343,
    "attacks": [
      {
        "payload": "/cmd.exe",
        "scope": "path",
        "monitor": false,
        "score": 8,
        "id": 130005
      }
    ]
  }
}

Alan Açıklamaları ​

Temel Alanlar ​

AlanÖrnekAçıklama
poolLOGTEST-HvService adı; ad boşsa vService ID yazılır
identtr7Log kaynağı tanımlayıcısı
ts09/Sep/2026:20:44:48 +0300Zaman damgası (cihazın yerel saati)
username-Kimliği doğrulanmış kullanıcı; kimlik doğrulama kullanılmıyorsa -

time (Zamanlama Metrikleri) ​

AlanBirimAçıklama
tqmsRequest Time: istek alım süresi
twmsWait Time: kuyrukta bekleme süresi
tcmsConnect Time: Kurum Servisine bağlanma süresi
trmsResponse Time: Kurum Servisinin yanıt süresi
ttmsTotal Time: toplam işlem süresi

INFO

-1 değeri ilgili aşamanın tamamlanmadığını gösterir (ör. WAF bloğu).

conn (Bağlantı Sayaçları) ​

AlanAçıklama
actSüreç genelindeki eşzamanlı bağlantı sayısı (vService'e özel değildir)
fFrontend bağlantı sayısı
bBackend bağlantı sayısı
sServer bağlantı sayısı

queue (Kuyruk Durumu) ​

AlanAçıklama
bOturum kuyruktan çıkarıldığı andaki backend kuyruk uzunluğu
sOturum kuyruktan çıkarıldığı andaki Kurum Servisi kuyruk uzunluğu

tstate (Bağlantı Sonlandırma Durumu) ​

4 karakterlik bir koddur:

PozisyonAnlam
1Sonlanma nedeni (C istemci kesti, S sunucu kesti, L TR7 yerel yanıtı, P TR7 sonlandırdı, c/s istemci/sunucu tarafı zaman aşımı, - normal)
2Sonlanma anındaki aşama (R istek bekleniyordu, Q kuyruk, C sunucuya bağlanma, H yanıt başlıkları bekleniyordu, D veri aktarımı, L son veri, - normal)
3İstekteki kalıcılık (persistence) çerezinin durumu (- çerez kullanılmıyor)
4Yanıtta çereze uygulanan işlem (- çerez kullanılmıyor)

Yaygın değerler:

DeğerAnlam
----Normal tamamlanma
LR--İstek aşamasında TR7 yerel yanıtı (WAF blok, error page)
CD--Veri aşamasında istemci bağlantıyı kesti
sD--Veri aşamasında sunucu tarafı zaman aşımı

retries ​

AlanAçıklama
retriesBackend bağlantı yeniden deneme sayısı

network (Ağ Bilgileri) ​

AlanÖrnekAçıklama
ci172.16.101.42İstemci IP adresi
cp55610İstemci kaynak portu
fi172.16.102.85Frontend (vService) IP adresi
fp443Frontend port
si172.16.102.168Kurum Servisi IP adresi. İstek Kurum Servisine hiç ulaşmadıysa (WAF bloku gibi) - yazılır.
sp80Kurum Servisi portu. İstek Kurum Servisine hiç ulaşmadıysa - yazılır.

ssl Nesnesi: Frontend SSL/TLS Bilgileri ​

AlanÖrnekAçıklama
fAlgKeysize128Anahtar boyutu (bit)
fCipherTLS_AES_128_GCM_SHA256Cipher suite
fProtocolTLSv1.3TLS protokol versiyonu
fNpn-NPN protokolü
fAlpnhttp/1.1ALPN protokolü
fKeyAlgrsaEncryptionAnahtar algoritması
fSigAlgRSA-SHA256İmza algoritması
fVersion3Sertifika versiyonu
fNotAfter240507115021ZSertifika bitiş tarihi
fNotBefore230508115021ZSertifika başlangıç tarihi
fClientDn/C=TR/ST=ANK/L=ANK/O=TR7/OU=TR7/CN=new.tr7.comTR7'nin frontend'de sunduğu sertifikanın subject DN'i (istemci sertifikası değil)
fIssuerDn/C=TR/ST=ANK/L=ANK/O=TR7/OU=TR7/CN=new.tr7.comAynı sertifikanın issuer DN'i; örnekte subject ile aynı olması sertifikanın kendinden imzalı olduğunu gösterir

ssl Nesnesi: Kurum Servisi SSL/TLS Bilgileri ​

Aynı ssl nesnesi, TR7 ile Kurum Servisi arasındaki bağlantının TLS bilgilerini s önekli alanlarda taşır. Kurum Servisine şifresiz bağlanıldığında bu alanların tamamı - olur. Her iki örnek logda da alanlar - gelir; ancak nedenleri farklıdır: birincisinde bağlantı şifresiz kurulmuştur, ikincisinde (WAF bloku) Kurum Servisine hiç bağlanılmamıştır.

AlanAçıklama
sAlgKeysizeAnahtar boyutu (bit)
sCipherCipher suite
sProtocolTLS protokol versiyonu
sNpnNPN protokolü
sAlpnALPN protokolü
sKeyAlgAnahtar algoritması
sSigAlgİmza algoritması
sVersionSertifika versiyonu
sNotAfterSertifika bitiş tarihi
sNotBeforeSertifika başlangıç tarihi
sClientDnSertifika subject DN
sIssuerDnSertifika issuer DN

request (HTTP İstek) ​

AlanÖrnekAçıklama
methodGETHTTP metodu
uri/login.phpİstek URI'si
protocolHTTP/1.1HTTP protokol versiyonu
headershost: test.tr7.com\r\n...İstek başlıkları; satır sonları \r\n olarak kaçışlanır. En fazla 4096 bayt yakalanır, fazlası kesilir.

response (HTTP Yanıt) ​

AlanÖrnekAçıklama
status_code200HTTP yanıt durum kodu. WAF blokunda TR7'nin ürettiği kod yazılır (örnekte 418).
headersdate: Wed, 09 Sep 2026 ...Yanıt başlıkları; en fazla 4096 bayt yakalanır. TR7'nin kendi ürettiği yanıtlarda - yazılır.

ids (Tanımlayıcılar) ​

AlanÖrnekAçıklama
plbPools-mtudin0c__lbYük dengeleme konteynerinin adı: <vService ID>__lb. Ham vService ID bu değerin __lb soneki atılmış hâlidir.
bDBEBackend tanımlayıcısı
fDFE~Frontend tanımlayıcısı. Sondaki ~ işareti bağlantının TLS ile sonlandırıldığını gösterir; şifresiz bir frontend'de DFE olarak yazılır.
slbBackends-mrdk4wpmKurum Servisi ID

INFO

İstek hiçbir Kurum Servisine gönderilmediğinde s alanı <NOSRV> olur; WAF blokunun örneğinde bu değer görülür. Aynı istekte b alanı da DBE yerine DFE yazılır.

bytes (Veri Transferi) ​

AlanÖrnekAçıklama
uploaded632İstemciden alınan byte
read1011İstemciye gönderilen byte. WAF blokunda istemciye gövde gönderilmediği için 0 olur.

resFrom (Yanıt Kaynağı) ​

AlanÖrnekAçıklama
resFrom-Yanıtın kaynağı; bu sürümde her zaman - gönderilir

WAF Alanları ​

AlanÖrnekAçıklama
isWafAttack1 ya da -İsteğin WAF tarafından engellenip engellenmediği
wafInfo{...}WAF olay detayları; saldırı yoksa {}

isWafAttack "saldırı var mı" demek değildir

Alan yalnızca engelleme gerçekleştiğinde 1 olur. Monitor modunda ya da izleme modundaki bir kural eşleştiğinde wafInfo dolu gelir ("action":"monitor") ama isWafAttack 1 olmaz. Saldırı olup olmadığını anlamak için wafInfo alanının boş ({}) olup olmadığına bakılır.

wafInfo Yapısı ​

WAF hiçbir eşleşme bulmadığında wafInfo boş bir nesnedir ({}). Bir kural eşleştiğinde wafInfo dolar; isWafAttack ise yalnızca istek gerçekten engellendiğinde 1 olur. Dolu bir wafInfo ile isWafAttack alanının 1 olmaması, eşleşmenin yalnızca izlendiği anlamına gelir. Yapı şöyledir:

json
{
  "isWafAttack": "1",
  "wafInfo": {
    "totalScore": 8,
    "uid": "AC10652A:FA886AA19AE3:204001F",
    "action": "block",
    "wafTime": 1.343,
    "attacks": [
      {
        "payload": "/cmd.exe",
        "scope": "path",
        "monitor": false,
        "score": 8,
        "id": 130005
      }
    ]
  }
}
AlanAçıklama
totalScoreYalnızca monitor: false olan eşleşmelerin skor toplamı. İzleme modundaki kurallar listede gerçek skorlarıyla görünür ama toplama katılmaz; öğrenme modunda toplam 0 kalır.
uidBenzersiz olay tanımlayıcısı
actionUygulanan aksiyon: block (engellendi) · monitor (yalnızca kaydedildi) · fpc (yanlış-pozitif temizleyici kapsamı)
wafTimeWAF'ın istekte harcadığı CPU süresi (ms)
attacksTespit edilen eşleşmelerin listesi. Aynı istekte birden fazla kural eşleşebileceği gibi aynı kural birden çok kez de listeye girebilir.
attacks[].payloadTespit edilen zararlı içerik. Kural payload üretmiyorsa yerine kuralın açıklaması yazılır; WAF profilinden tamamen kapatılabilir.
attacks[].scopeTespit edilen bileşen: path · query · header · form · json · xml · raw
attacks[].monitorKuralın kendi durumu: true ise bu kuralın skoru toplama katılmaz. Tek başına isteğin engellenip engellenmediğini göstermez.
attacks[].scoreKural skoru
attacks[].idWAF kural ID'si. Koşulsuz basılan tek alandır.

INFO

Alanların sırası sabit değildir; JSON ayrıştırılırken anahtar adına göre okunmalıdır. score, scope, monitor ve payload alanları WAF profilindeki log alanı seçimine bağlıdır ve kapatılabilir; ek olarak severity ve kural meta bilgileri (name, desc, category, cwe, mitre, capec, owaspWeb, owaspApi, target) eklenebilir.

WAF zaman aşımı kaydı bu şemayı taşımaz

WAF taraması zaman aşımına uğradığında üretilen sentetik kayıtta uid ve action alanları bulunmaz; attacks girdisi de payload ve monitor taşımaz. Kayıt totalScore 100, id 369999 ve wafTime 2000 değerleriyle gelir ve isWafAttack gerçek bir saldırı olmadan 1 olur.