Como analisar vários arquivos de log gz do Awstats?

21

Eu sou muito novo no awstats e configurei o Awstats no meu servidor web apache para analisar os logs de acesso nginx (o servidor web nginx é para o meu aplicativo django), sou capaz de obter as estatísticas, LogFile=/var/log/nginx/access.logmas como analiso vários logs no formato gzip. Como access.log.1.gz ... access.log.40.gz. Eu tenho muitos logs para analisar.

Rakesh
fonte

Respostas:

29

O que você provavelmente deseja fazer aqui é analisar todos esses arquivos de log uma vez e continuar analisando apenas os arquivos de log atuais a partir de então.

A coisa mais simples a fazer é descompactar todos esses arquivos em um único arquivo, executar o awstats uma vez e apontar o awstats para o seu arquivo access.log a partir de então.

O awstats normalmente possui um script chamado logresolvemerge.pl, que pode ler os arquivos compactados e os mesclará adequadamente para que o awstats faça análise.

Para mesclar todos os seus existentes, execute

perl /usr/share/awstats/tools/logresolvemerge.pl /var/log/nginx/access.log* > /tmp/nginx.tmplog

Provavelmente vai demorar um pouco.

Você pode fazer com que o awstats execute uma vez sobre esse arquivo (defina o LogFile adequadamente).

A partir de então, você deve ter o awstats executado no arquivo de log mais recente - que é o que sua configuração atual está fazendo.

Dependendo da frequência com que você executa o awstats versus os arquivos de log nginx rotativos, convém que ele leia o arquivo de log atual e o anterior. (por exemplo, se você girar os arquivos de log do nginx todos os dias às 12, mas o awstats for executado todos os dias em 1, sempre que o awstats for executado, o arquivo de log conterá apenas o que foi gravado desde a última rotação). Você pode usar logresolvemerge.pl dentro do seu comando LogFile da seguinte maneira:

LogFile="/usr/share/awstats/tools/logresolvemerge.pl /var/log/nginx/access.log /var/log/nginx/access.log.1.gz |"

Isso diz ao awstats para executar o comando logresolvemerge.pl com os dois arquivos de log como parâmetros, e o awstats lerá a saída desse script (é isso que o pipe | faz)

Daniel Lawson
fonte
Eu não sabia que o script awstats poderia lidar com pipes no arquivo de configuração. Bom + 1.
precisa
Concordado - a logresolvemerge.plsaída da tubulação para o awstats é uma ótima solução.
Jez
sobre tubulação, consulte stackoverflow.com/questions/13832701/…
brauliobo
7

Como alternativa, você pode usar um analisador de logs em tempo real, como o GoAccess. É muito rápido e você não precisa descompactar nenhum log.apache & nginx

http://goaccess.prosoftcorp.com/

zcat -f access.log* | goaccess -a -s -b

OU

zcat access.log.*.gz | goaccess -a -s -b
Sanders12
fonte