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.