Ferramentas de linha de comando para analisar arquivos de log do Apache [fechado]


16

Eu tenho vários arquivos de log do Apache que gostaria de analisar. Estou procurando uma ferramenta que não exija muita configuração; algo que eu possa executar um log pela linha de comando, sem mexer nos nossos servidores da web ao vivo.

Alguma recomendação?


E o sistema operacional que você vai estar usando é ...
Izzy

Linux ou MacOSX ...
mmattax

11
"Analisar" não diz muito. O que você está tentando fazer? Procure uma corda, números de trituração?
David

Respostas:


7

Enquanto as ferramentas acima são legais, acho que sei o que o interlocutor estava perguntando. Dói-me muitas vezes não conseguir extrair as informações de um log de acesso da mesma maneira que faço com outros arquivos.

É por causa do formato de log de acesso burro:

127.0.0.1 - - [16/Aug/2014:20:47:29 +0100] "GET /manual/elisp/index.html HTTP/1.1" 200 37230 "http://testlocalhost/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0"

Por que eles usaram [] para a data e "" para outras coisas? eles pensaram que não saberíamos que havia uma data no campo 4? É incrivelmente frustrante.

A melhor ferramenta agora para isso é o gawk:

gawk 'BEGIN { FPAT="([^ ]+)|(\"[^\"]+\")|(\\[[^\\]]+\\])" } { print $5 }'

nos dados acima, isso forneceria a você:

"GET /manual/elisp/index.html HTTP/1.1"

Em outras palavras, o FPAT oferece a capacidade de extrair os campos do apache-log como se fossem campos reais, em vez de apenas entidades separadas por espaço. É sempre isso que eu quero. Posso então analisar isso um pouco mais com um pipeline.

O funcionamento do FSPAT é definido aqui: http://www.gnu.org/software/gawk/manual/html_node/Splitting-By-Content.html

Portanto, você pode configurar um alias para criar um gawk que possa analisar os logs do apache:

alias apacheawk="gawk -vFPAT='([^ ]+)|(\"[^\"]+\")|(\\\\[[^\\\\]]+\\\\])' " apacheawk '$6 ~ /200/ { print $5 } | sort | uniq

fez isso para mim:

"GET / HTTP/1.1"
"GET /manual/elisp/index.html HTTP/1.1"
"GET /manual/elisp/Index.html HTTP/1.1"
"GET /scripts/app.js HTTP/1.1"
"GET /style.css HTTP/1.1"

e, claro, quase tudo o mais é agora possível.

Desfrutar!


11
2 observações: a data não está realmente no campo 4, mas nos campos 4 + 5 ^^ (sem a mudança de GMT, a data tem pouco valor). E um access_log na maioria das vezes forma 12 campos (na verdade, pode haver mais de 12 campos, pois o 12º é o agente http, que também pode conter muitos espaços em seu nome. Os 11 primeiros campos são fáceis de analisar, e o 12º campo (e talvez mais) restante deve ser o agente http). Então você pode apenas: awk '($9 == 200) {print $6,$7,$8}'exibir a mesma coisa que no seu exemplo. Não há necessidade de usar FPAT lá (mesmo que este método pode ser útil em outros casos)
Olivier Dulac

Eu acho que você está criticando demais. A data está no campo 4 se você considerar o campo delimitado por []. Na maioria das vezes, um arquivo de log está em um fuso horário, portanto, o fuso horário não é necessário. O objetivo de mostrar o exemplo não era mostrar que algo era exclusivamente possível dessa maneira, mas mostrar o truque geral.
Ferrier nic

11
Estou muito surpreso ... Eu não "critiquei", apenas apontei 2 comentários (e disse que, de fato, o método que você usou pode ser útil em outros casos, mas aqui simplesmente não é necessário) ...
Olivier Dulac

6

wtop é legal. Existem outros utilitários também. Frequentemente, analisarei logs usando bash, sed e awk.


WTOP, e especialmente o seu analisador de log logrep são grandes, uma vez que você se adaptar a .conf ao seu formato de registro que irá fornecer uma maneira rápida de obter o que você precisa (url topo, tráfego, etc ..)
aseques


1

Que tipo de saída você deseja?

Se você está apenas procurando contar coisas, então grep algo logfile.txt | wc -l funciona muito bem. Se você quer gráficos bonitos ... nem tanto.


Para janelas, o comando find imita o grep até certo ponto.
Chris Nava

0

Se você possui uma estação de trabalho Windows que pode ser usada, o logparser é a ferramenta preferida!


0

O analógico funciona bem e não requer muita configuração. O logwrangler é um pacote que trabalha com analógico para gerar uma saída melhor e também requer pouca configuração.


0

Em vez de usar uma ferramenta de linha de comando, sugeriria experimentar o Apache Logs Viewer. É uma ferramenta gratuita que pode monitorar e analisar o arquivo de log Apache. Ele pode gerar gráficos e relatórios bastante interessantes rapidamente.

Mais informações em http://www.apacheviewer.com

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.