Logs Apache · 4 min read · Jan 28, 2026
Dividindo Logs do Apache Com vlogger
Dividindo Logs do Apache Com vlogger
Versão 1.0
Autor: Falko Timme
Vlogger é uma pequena ferramenta com a qual você pode escrever logs do Apache divididos por hosts virtuais e dias. Com o vlogger, precisamos colocar apenas uma diretiva CustomLog em nossa configuração global do Apache, e ele escreverá logs de acesso para cada host virtual e dia. Portanto, você não precisa dividir o log de acesso geral do Apache em logs de acesso para cada host virtual a cada dia, e não precisa configurar o Apache para escrever um log de acesso por host virtual (o que poderia fazer você ficar sem descritores de arquivo muito rapidamente).
No final deste tutorial, eu vou mostrar como usar o webalizer para criar estatísticas a partir dos logs de acesso do Apache.
Eu não dou nenhuma garantia de que isso funcionará para você!
1 Nota Preliminar
Eu testei o vlogger em um sistema Debian Etch onde o Apache2 já está instalado e funcionando.
2 Instalando E Configurando vlogger
Para instalar o vlogger, simplesmente executamos
apt-get install vloggerDepois, precisamos mudar a linha LogFormat (existem várias linhas LogFormat - pelo menos mude a que é chamada de combined) em /etc/apache2/apache2.conf. Devemos adicionar a string %v no início dela:
vi /etc/apache2/apache2.conf| [...] #LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined [...] |
Então adicione a seguinte linha CustomLog ao mesmo arquivo (você pode colocá-la diretamente após a linha LogFormat):
vi /etc/apache2/apache2.conf| [...] CustomLog "| /usr/sbin/vlogger -s access.log /var/log/apache2" combined [...] |
Essa é a única diretiva CustomLog que precisamos em toda a nossa configuração do Apache. Por favor, desative todas as outras diretivas CustomLog, especialmente nas suas configurações de host virtual!
A vantagem de escrever apenas um log de acesso é que isso reduz muito a carga no servidor, especialmente se você tiver alguns sites de alto tráfego em seu servidor.
Agora reinicie o Apache:
/etc/init.d/apache2 restartO vlogger agora criará subdiretórios no diretório /var/log/apache2, um para cada host virtual, e criará logs de acesso que contêm a data atual no nome do arquivo. Ele também criará um symlink chamado access.log que aponta para o arquivo de log atual.
Vamos supor que temos dois hosts virtuais, www.example.com e www.test.tld. Então, assim é como o diretório /var/log/apache2 ficará:
/var/log/apache2/
www.example.com/
06042007-access.log
06052007-access.log
06062007-access.log
access.log -> 06062007-access.log
www.test.tld/
06042007-access.log
06052007-access.log
06062007-access.log
access.log -> 06062007-access.log
Para aprender quais outras diretivas de linha de comando do vlogger você pode colocar na linha CustomLog, dê uma olhada em
man vlogger3 Criando Estatísticas Com webalizer
Neste capítulo, eu vou mostrar como você pode criar estatísticas a partir dos arquivos de log divididos com o webalizer. Novamente, estou assumindo que você tem dois hosts virtuais, www.example.com e www.test.tld, e esses hosts virtuais têm as raízes de documentos /var/www/www.example.com/web e /var/www/www.test.tld/web (é importante que os nomes dos servidores estejam nos caminhos das raízes de documentos, caso contrário, o procedimento a seguir não funcionará). Eu gostaria de colocar as estatísticas nos diretórios /var/www/www.example.com/web/stats e /var/www/www.test.tld/web/stats, então esses diretórios devem já existir.
Primeiro, vamos instalar o webalizer:
apt-get install webalizerDê uma olhada em
man webalizerpara ver como o webalizer funciona. Basicamente, para criar estatísticas para www.example.com a partir do log de acesso de ontem, você pode usar este comando:
/usr/bin/webalizer -c /etc/webalizer/webalizer.conf -n www.example.com \
-s www.example.com -r www.example.com -q -T -o /var/www/www.example.com/web/stats \
/var/log/apache2/www.example.com//bin/date -d "1 day ago" +%m%d%Y-access.log
( /etc/webalizer/webalizer.conf é a localização do webalizer.conf padrão do Debian. /bin/date -d “1 day ago” +%m%d%Y imprime a data de ontem exatamente da maneira que precisamos para que possamos passar o log de acesso de ontem para o webalizer sem precisar saber a data exata.)
Claro, não queremos executar tal comando manualmente para cada host virtual, portanto, escrevemos um pequeno script shell que lê o diretório /var/log/apache2 e cria estatísticas para cada host virtual que tem logs nesse diretório. Eu nomeio o script de webstats e coloco-o no diretório /usr/local/sbin:
vi /usr/local/sbin/webstats| #!/bin/sh logdir=/var/log/apache2 webalizerconf=/etc/webalizer/webalizer.conf yesterdaysdate=`/bin/date -d "1 day ago" +%m%d%Y` cd ${logdir} for directory in * do if [ -d ${directory} ]; then /usr/bin/webalizer -c ${webalizerconf} -n ${directory} \ -s ${directory} -r ${directory} -q -T -o /var/www/${directory}/web/stats \ ${logdir}/${directory}/${yesterdaysdate}-access.log fi done exit 0 |
Devemos tornar esse script executável:
chmod 755 /usr/local/sbin/webstatsFinalmente, criamos um trabalho cron que chama o script /usr/local/sbin/webstats todas as noites às 04:00h:
crontab -e| 0 4 * * * /usr/local/sbin/webstats &> /dev/null |
Após o trabalho cron ter sido executado pela primeira vez, você pode ir a www.example.com/stats e www.test.tld/stats para ver as estatísticas em seu navegador. É uma boa ideia proteger por senha os diretórios de estatísticas com .htaccess/.htpasswd.
4 Links
- vlogger: http://n0rp.chemlab.org/vlogger
- webalizer: http://www.mrunix.net/webalizer
- Debian: http://www.debian.org
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.