Reunindo estatísticas da página da web em um script Bash

2

Eu preciso reunir estatísticas sobre quanto tempo demora para recuperar uma página da web uma vez a cada dois segundos.

Eu posso fazer um

time wget --spider http://www.google.com/index.html

(o spider não fará o download da página, apenas verifique se eles estão lá)

com este comando eu posso ver quanto tempo levou para executar o comando e o status da página (200 OK, 404 NOT FOUND, etc)

O problema que estou tendo é que preciso acompanhar as estatísticas. Então, se eu atingir uma página da web a cada dois segundos e, de vez em quando, obtiver um erro 404, preciso ver essas estatísticas.

    
por hfranco 25.05.2011 / 23:03

3 respostas

1

Você poderia tentar algo assim para seguir em frente

#!/bin/bash
URL="http://serverfault.com/"
Result=$((time wget --spider "$URL") 2>&1  | egrep  'real|response')
NumFields=$(echo $Result | awk '{print NF}')

#16 Fields if there was a 302 redirect and the result is in $13
#9 fields for 200,404 the result in in $6

if [ $NumFields -eq 16 ]
then
   Stats=$(echo $Result | awk 'BEGIN {OFS=",";} {print $13,$NF}')
else
   Stats=$(echo $Result | awk 'BEGIN {OFS=",";} {print $6,$NF}')
fi
# Outputs YYYYMMDDHHMMSS,URL,Response,Time Taken
# 20110526180254,http://www.google.oom/,302,0m1.000s
# 20110526180928,http://serverfault.com/,200,0m0.225s
# 20110526181041,http://www.google.com/fred/,404,0m0.089

echo $(date +"%Y%m%d%H%M%S"),"$URL","$Stats"

Se você usar >> para redirecionar a saída para um arquivo, você poderá puxá-lo para uma planilha ou usar o grep, etc. para extrair informações dele.

    
por 26.05.2011 / 19:10
2

O que você acha disso?

curl --write-out %{time_total} --head google.ca/ >> ~/stats.txt

Isso lhe dará uma saída como:

HTTP/1.1 301 Moved Permanently
Location: http://www.google.ca/
Content-Type: text/html; charset=UTF-8
Date: Wed, 25 May 2011 21:24:45 GMT
Expires: Fri, 24 Jun 2011 21:24:45 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 218
X-XSS-Protection: 1; mode=block

0.076

Que você pode analisar em uma planilha. Pode, reconhecidamente, não ser a solução mais elegante. Você pode limpá-lo com uma corrente grep (como grep -v Location: | grep -v Content-Type: | grep -v Date etc) ou algo mais elegante. Estou curioso para ver o que os outros inventam!

    
por 25.05.2011 / 23:29
1

Confira o Nagios para monitoramento, ou mesmo se você não quiser uma instalação completa do Nagios, verifique os plug-ins Nagios, o check_http lhe dará estatísticas de desempenho, bem como uma saída simples analisável. Você poderia usar um script de shell para colocar isso em um arquivo que você poderia processar mais tarde.

    
por 25.05.2011 / 23:30

Tags