Lista as principais URLs 404 no Apache access_log [closed]

6

Estou procurando um comando para listar as 10 ou 20 principais URLs de erro 404 do meu apache access_log. Alguém pode me ajudar com isso?

obrigado

    
por tykho 03.02.2011 / 17:05

2 respostas

6

Assumindo o formato normal access_log, isso deve ser feito:

cat access_log | awk '{ if($9 == 404) { print $7 } }' | sort | uniq -c | sort -nr | head -10
    
por 03.02.2011 / 17:15
2

Eu fiz isso usando utilitários padrão unix, awk, sort, etc, e funciona razoavelmente bem. Como o formato dos seus logs pode ser diferente, talvez seja necessário alterar algumas coisas para funcionar em seu ambiente, mas o comando básico seria:

cat access_log | awk '/" 404 / {print $7}' | sort | uniq -c | sort -n | tail -n10

Se você não está familiarizado com o awk, o que estamos fazendo é:

for each line
   if it contains the string '" 404', then
     print the 7th field (where fields are space delimited) 

Se você estiver usando um formato de log personalizado do apache, será necessário alterar o $7 para corresponder ao campo do URL na solicitação GET. Você também pode alterar o número de linhas do comando tail para exibir mais resultados, ou rewer.

    
por 03.02.2011 / 17:16