Bir olaydan sonra erişim kaydında her şey vardır: ne istendi, ne zaman, nereden ve sunucu ne yanıtladı. Sorun hiçbir zaman veri azlığı değil, bir milyon satır veri olmasıdır. Bu komutlar onu kısaltır.

En çok kim istek yapıyor

sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20

Ne istediler

sudo grep " 203.0.113.42 " /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -30

Tarama bu listede apaçıktır: onlarca yol, her biri bir kez istenmiş, çoğu 404. Gezinen bir insan buna hiç benzemez.

Neyin BAŞARDIĞI — asıl soru bu

sudo awk '$9 ~ /^(200|301|302)$/ {print $1, $7}' /var/log/nginx/access.log \
  | grep -E 'wp-login|xmlrpc|/admin|\.php' | sort | uniq -c | sort -rn | head -20
404 duvarı gürültüdür. Tanımadığınız bir yolda 200 görmek ise durulacak satırdır — özellikle yükleme klasöründeki bir dosyaya yapılan POST.

Yalnızca POST istekleri

sudo awk '$6 ~ /POST/ {print $1, $7, $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20

Ne zaman olduğu

sudo grep "203.0.113.42" /var/log/nginx/access.log | awk -F'[\\[\\]]' '{print $2}' | cut -d: -f1-2 | uniq -c

Ve başarılı bir yüklemenin görüntüsü

sudo awk '$7 ~ /uploads/ && $9 == 200 {print}' /var/log/nginx/access.log | grep -i '\.php' | head
Başlamadan önce kayıtları başka bir yere kopyalayın. Döndürme çalışıyor ve yoğun bir sunucu kanıtı bir gün içinde silebilir — genelde tam da ne arayacağınızı çözdüğünüz andan hemen önce.