Cara memonitor permintaan http yang masuk

31

Bagaimana saya bisa memonitor HTTPpermintaan yang masuk ke port 80? Saya telah menyiapkan hosting web di mesin lokal saya menggunakan DynDNSdan Nginx. Saya ingin tahu berapa banyak permintaan yang dilakukan pada server saya setiap hari.

Saat ini saya menggunakan perintah ini:

netstat -an | grep 80
pengguna7044
sumber

Jawaban:

41

Anda bisa menggunakan tcpdump.

# tcpdump filter for HTTP GET 
sudo tcpdump -s 0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'

# tcpdump filter for HTTP POST 
sudo tcpdump -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'

Untuk solusi menggunakan tsharklihat:

https://serverfault.com/questions/84750/monitoring-http-traffic-using-tcpdump

nad
sumber
Itu sangat membantu. Apakah ada yang serupa dengan pesan penghematan?
Darth Egregious
2
Bagaimana dengan https?
FooBar
7

Saya telah menggunakan tcpflowuntuk memeriksa permintaan masuk pada saat aws, mungkin ada cara untuk mengagregasi permintaan hari.

LANGKAH 1 - instalasi

# yum install --nogpgcheck http://pkgs.repoforge.org/tcpflow/tcpflow-0.21-1.2.el6.rf.x86_64.rpm

LANGKAH 2 - melacak permintaan GET / POST di port 80

# tcpflow -p -c -i eth0 port 80 | grep -oE '(GET|POST|HEAD) .* HTTP/1.[01]|Host: .*'

Referensi

https://github.com/simsong/tcpflow

prayagupd
sumber
Untuk Ubuntu: sudo apt install tcpflow Juga di Ubuntu "eth0" dinamai sesuatu seperti "ens33". Anda dapat menggunakan perintah ifconfig untuk melihat nama adaptor ethernet Anda.
nivs1978
5

Apakah Anda memiliki file log yang dihidupkan untuk server Anda? Jika Anda melakukannya, saya sarankan menginstal AwStats dan menjalankan file log Anda dengannya untuk mendapatkan pelaporan yang akurat.

Jika Anda hanya ingin memantau semua lalu lintas masuk / keluar, Anda dapat menggunakan WireShark.

djsumdog
sumber
4

Anda juga dapat mengekor file log:

tail -f /path/to/access_log

Parameter -f akan menyebabkan tail terus memperbarui layar ketika entri baru ditulis ke log.

Dave
sumber
0

Jalankan ini

while true
do
echo -----`date '+%r'` -----:
netstat -ant | grep :8080 | awk '{print $6}' | sort | uniq -c | sort -n
echo httpd processes: [`ps aux | grep httpd | wc -l`]
echo .
sleep 2
done

Ini akan memonitor lalu lintas pada port 8080 setiap 2 detik

vsingh
sumber