Jak monitorować przychodzące żądania HTTP

31

Jak mogę monitorować przychodzące HTTPżądania do portu 80? Skonfigurowałem hosting na moim komputerze lokalnym za pomocą DynDNSi Nginx. Chciałem wiedzieć, ile żądań przesyłanych jest codziennie na mój serwer.

Obecnie używam tego polecenia:

netstat -an | grep 80
użytkownik7044
źródło

Odpowiedzi:

41

Możesz użyć 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)'

Aby uzyskać rozwiązanie za pomocą tsharkzobacz:

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

nad
źródło
To bardzo pomocne. Czy istnieje coś podobnego dla wiadomości oszczędnościowych?
Darth Egregious
2
Co z https?
FooBar,
7

Używam tcpflowdo sprawdzania przychodzących żądań w instancjach aws, może istnieje sposób na agregowanie żądań w ciągu dnia.

KROK 1 - instalacja

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

KROK 2 - śledź żądania GET / POST na porcie 80

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

Odniesienie

https://github.com/simsong/tcpflow

prayagupd
źródło
W przypadku Ubuntu jest to: sudo apt install tcpflow Również w Ubuntu nazwa „eth0” nosi nazwę „ens33”. Możesz użyć polecenia ifconfig, aby zobaczyć nazwę twojego adaptera Ethernet.
nivs1978
5

Czy masz włączone pliki dziennika dla swojego serwera? Jeśli tak, zalecam zainstalowanie AwStats i uruchomienie plików dziennika za jego pomocą, aby uzyskać dokładne raportowanie.

Jeśli chcesz monitorować cały ruch przychodzący / wychodzący, możesz użyć WireShark.

djsumdog
źródło
4

Możesz także dostosować plik dziennika:

tail -f /path/to/access_log

Parametr -f powoduje, że tail stale aktualizuje ekran, gdy nowe wpisy są zapisywane w dzienniku.

Dave
źródło
0

Uruchomić to

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

Będzie monitorował ruch na porcie 8080 co 2 sekundy

vsingh
źródło