DevSecOps

11 fev, 2016

Monitore todas as solicitações HTTP (como TCPdump) em um servidor Linux com httpry

Publicidade

Não seria muito legal se você pudesse executar uma ferramenta como o tcpdump e ver todas as solicitações HTTP que fluem por meio da rede, de uma forma legível?

Porque, vamos ser honestos, algo como isso está longe de ser legível.

$ tcpdump -i eth0 port 80 -A
20:56:08.793822 IP 172.28.128.1.49781 > 172.28.128.3.http: Flags [S], seq 1641176060, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 1225415667 ecr 0,sackOK,eol], length 0
E..@V.@.@............u.Pa.[..........-.............
...

Isso diz que algo está fluindo ao longo da rede, mas você com certeza não pode ler o que está acontecendo nela com precisão. Você reconhece palavras-chave, mas é só isso.

Existem ferramentas lá fora que fazem um trabalho melhor, como httpry.

Ele existe há tempo suficiente para estar presente na maioria dos repositórios de servidores Linux até agora. Instale-o pelo seu gerenciador de pacotes preferido.

$ yum install httpry
$ apt-get install httpry

Depois de tê-lo instalado, você pode executá-lo em seu servidor para começar a monitorar chamadas HTTP.

$ httpry -i eth0
172.28.128.1  172.28.128.3  >  HEAD  ma.ttias.be  /  HTTP/1.1  -    -
172.28.128.3  172.28.128.1  <  -     -            -  HTTP/1.1  301  Moved Permanently

Para emitir o resultado acima, execute o seguinte comando:

$ curl -I 172.28.128.3 -H "Host: ma.ttias.be"

Ele fez um pedido do cabeçalho HEAD (-I) e obteve um retorno HTTP 301 de volta.

Quer ver quantas solicitações HTTP por segundo das que estão fluindo pelo vhost são as mais ativas? Comece executando httpry com o parâmetro -s.

$ httpry -i eth0 -s
...
2015-08-06 21:06:56	infinite-download.ma.ttias.be	19 rps
2015-08-06 21:06:56	enginehack.ma.ttias.be	61 rps
2015-08-06 21:06:56	totals	30.69 rps
2015-08-06 21:07:01	infinite-download.ma.ttias.be	21 rps
2015-08-06 21:07:01	enginehack.ma.ttias.be	56 rps
2015-08-06 21:07:01	totals	32.41 rps

A cada 5 segundos, a saída mostra os pedidos feitos nesse último intervalo. Ele mostra o cabeçalho Host: usado ​​nesse pedido e a quantidade de pedidos que foi recebida.

Por enquanto, a ferramenta não funciona em pedidos HTTPS; mesmo assim, ela é útil para ter em seu arsenal.

***

Mattias Geniar faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://ma.ttias.be/monitor-all-http-requests-like-tcpdump-on-a-linux-server-with-httpry/