Cómo monitorear las solicitudes HTTP entrantes

31

¿Cómo puedo monitorear las HTTPsolicitudes entrantes al puerto 80? He configurado alojamiento web en mi máquina local usando DynDNSy Nginx. Quería saber cuántas solicitudes se realizan en mi servidor todos los días.

Actualmente estoy usando este comando:

netstat -an | grep 80
usuario7044
fuente

Respuestas:

41

Puedes 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 una solución usando tsharkver:

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

nad
fuente
Eso es muy útil. ¿Hay algo similar para los mensajes de ahorro?
Darth Egregious
2
¿Qué hay de https?
FooBar
7

He estado usando tcpflowpara verificar las solicitudes entrantes en instancias de aws, tal vez haya una manera de agregar solicitudes diariamente.

PASO 1 - instalación

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

PASO 2: rastree las solicitudes GET / POST en el puerto 80

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

Referencia

https://github.com/simsong/tcpflow

prayagupd
fuente
Para Ubuntu es: sudo apt install tcpflow También en Ubuntu el "eth0" se llama algo así como "ens33". Puede usar el comando ifconfig para ver el nombre de su adaptador de ethernet.
nivs1978
5

¿Tiene los archivos de registro activados para su servidor? Si lo hace, recomendaría instalar AwStats y ejecutar sus archivos de registro con él para obtener informes precisos.

Si solo desea monitorear todo el tráfico entrante / saliente, puede usar WireShark.

djsumdog
fuente
4

También puede seguir el archivo de registro:

tail -f /path/to/access_log

El parámetro -f hará que tail actualice continuamente la pantalla a medida que se escriben nuevas entradas en el registro.

Dave
fuente
0

Ejecuta esto

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

Supervisará el tráfico en el puerto 8080 cada 2 segundos.

vsingh
fuente