Desejo obter uma contagem de entradas exclusivas nos logs de erro do Apache

1

Ao visualizar os arquivos de log do Apache, há muitas mensagens de erro repetidas. Gostaria de descobrir quais mensagens de erro são mais frequentes e quais são exclusivas.

Eu gostaria de um script simples que possa me fornecer uma contagem das diferentes linhas exclusivas.

Eu sei de Perl / Python / etc., mas eu preferiria usar ferramentas internas, como cut / find / grep / sed , etc.

Eu posso obter uma lista simples de entradas usando sed . A seguir, é exibida uma lista de mensagens de erro exclusivas:

$ sed -e "s/\[.*\]\([^:]*\)\(.*\)//" error.sml.log | sort -u
Apache configured -- resuming normal operations
client denied by server configuration
Digest
File does not exist
request failed

Isso funciona para contar o número de ocorrências. Não é tão útil, pois não mostra com o que as contagens se relacionam:

$ sed -e "s/\[.*\]\([^:]*\)\(.*\)//" error.sml.log | sort -u | xargs -I{} grep -oc {} error.sml.log
1
3886
2
6091
20

Gostaria que a saída se parecesse com isso:

1    Apache configured -- resuming normal operations
3886 client denied by server configuration
2    Digest
6091 File does not exist
20   request failed
    
por nelaaro 19.04.2012 / 14:48

1 resposta

2
sed -e "s/\[.*\]\([^:]*\)\(.*\)//" error.sml.log | sort | uniq -c
      1  Apache configured -- resuming normal operations
   3886  client denied by server configuration
      2  Digest
   6091  File does not exist
     20  request failed

Existe uma ferramenta que faz exatamente isso uniq. Eu gostaria de ter encontrado isso algumas horas atrás.

Existem algumas opções úteis, como  uniq -d mostra apenas linhas com mais de uma entrada

$ sed -e "s/\[.*\]\([^:]*\)\(.*\)//" error.sml.log | sort | uniq -cd
   3886  client denied by server configuration
      2  Digest
   6091  File does not exist
     20  request failed

uniq -u mostra apenas linhas uniq apenas 1 entrada

$ sed -e "s/\[.*\]\([^:]*\)\(.*\)//" error.sml.log | sort | uniq -u  
  Apache configured -- resuming normal operations

Agora, posso processar nossos arquivos de registro de bilhões de linhas e ter uma noção do que está acontecendo ao lado deles.

    
por 19.04.2012 / 15:00