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.