Como monitorar solicitações HTTP recebidas

31

Como posso monitorar as HTTPsolicitações de entrada na porta 80? Eu configurei a hospedagem na minha máquina local usando DynDNSe Nginx. Eu queria saber quantas solicitações são feitas no meu servidor todos os dias.

Atualmente estou usando este comando:

netstat -an | grep 80
user7044
fonte

Respostas:

41

Você pode usar 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)'

Para uma solução usando, tsharkconsulte:

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

nad
fonte
Isso é tão útil. Existe algo semelhante para mensagens de economia?
Darth Egregious
2
E o https?
FooBar
7

Eu tenho usado tcpflowpara verificar solicitações recebidas em instâncias do aws, talvez haja uma maneira de agregar solicitações durante o dia.

PASSO 1 - instalação

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

PASSO 2 - rastrear solicitações GET / POST na porta 80

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

Referência

https://github.com/simsong/tcpflow

prayagupd
fonte
Para o Ubuntu é: sudo apt install tcpflow Também no Ubuntu, o "eth0" é chamado "ens33". Você pode usar o comando ifconfig para ver o nome do seu adaptador Ethernet.
nivs1978 24/04
5

Você tem arquivos de log ativados para o seu servidor? Se o fizer, recomendo instalar o AwStats e executar seus arquivos de log para obter relatórios precisos.

Se você quiser apenas monitorar todo o tráfego de entrada / saída, use o WireShark.

djsumdog
fonte
4

Você também pode personalizar o arquivo de log:

tail -f /path/to/access_log

O parâmetro -f fará com que a cauda atualize continuamente a tela conforme novas entradas são gravadas no log.

Dave
fonte
0

Rode isto

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

Ele monitorará o tráfego na porta 8080 a cada 2 segundos

vsingh
fonte