Depois de analisar os logs do Apache, precisei investigar logs do JBoss. Como são logs de aplicações, as linhas não têm formato uniformizado. Logo, é preciso aplicar expressões regulares.
Com a ajuda do Perl, posso extrair o texto de interesse e depois ordenar com sort e uniq.
Por exemplo, o seguinte comando extrai endereços IPs do arquivo server.log:
perl -ne 'print "$1\n" if /((\d+.){3}\.\d+)/' server.log
Então, para ordenar os IPs por frequência, entram sort e uniq:
perl -ne 'print "$1\n" if /((\d+.){3}\.\d+)/' server.log \
| sort | uniq -c | sort -nr | more
Se a busca não requer mais que uma expressão regular, pode-se usar a opção -o do grep, que indica que deve ser impressa apenas a parte da linha identificada pela expressão regular.
grep -Po "(\d+.){3}\.\d+" server.log
A opção -P indica que a expressão regular é da sintaxe do Perl
Aproveitando: se vc tem essa task como algo recorrente, considere com carinho configurar um Splunk para agregar e filtrar esses logs diversos.
ResponderExcluirE tb, para manter um olho na performance e health status dos servers, New Relic (mesmo no free tier e' muito util, so' que o data retention e' limitado sem pagar)
[]s
~heckler