Gerando estatísticas

O Webalizer é um gerador de estatísticas de acesso para o servidor web. O Apache, por si só, loga todos os acessos feitos ao servidor, incluindo as páginas acessadas, o tráfego gerado, os navegadores e os sistemas operacionais usados pelos clientes, entre outras informações úteis para entender os hábitos e interesses de seus visitantes.

Com o Apache funcionando, é simples instalar o Webalizer: procure pelo pacote “webalizer” dentro do gerenciador de pacotes. Ele é incluído em todas as principais distribuições. Nas derivadas do Debian, você pode instalá-lo via apt-get:

# apt-get install webalizer

Ao contrário do Apache, o Webalizer não é um serviço que fica residente, mas sim um executável que precisa ser chamado cada vez que quiser ver a página de estatísticas atualizada (assim como o Sarg, que vimos no capítulo sobre o Squid). Basta chamá-lo como root:

# webalizer

Por padrão, a página de estatísticas é armazenada na pasta “webalizer/”, dentro do seu servidor web. Se o Apache estiver configurado para armazenar as páginas dentro do diretório “/var/www”, então as estatísticas vão para a pasta “/var/www/webalizer”.

O arquivo de configuração do Webalizer é o “/etc/webalizer.conf“. É importante que você revise o arquivo de configuração, indicando pelo menos a localização correta do arquivo de log do Apache e alterando a pasta onde as estatísticas ficarão armazenadas, caso não queira que elas fiquem disponíveis ao público. Você pode armazená-las em uma pasta isolada no servidor web, como, por exemplo, “/var/webalizer”, de forma que elas fiquem disponíveis apenas localmente ou através de um script. As duas opções “essenciais” dentro do arquivo são:

LogFile /var/log/apache/access.log
OutputDir /var/www/webalizer

Para não precisar executar o comando “webalizer” manualmente sempre que precisar atualizar as estatísticas, você pode configurar o cron para executá-lo automaticamente uma vez por dia ou uma vez por hora. Para isso, basta criar um script dentro da pasta “/etc/cron.daily/” ou “/etc/cron.hourly/“, contendo o comando “webalizer“.

Todos os scripts colocados dentro dessas pastas são, respectivamente, executados todos os dias de manhã, ou uma vez por hora. Para que funcione, é importante verificar se o serviço “cron” ou “crond” está ativo. No caso do Debian, o script para execução do webalizer através do cron é criado automaticamente e configurado para ser executado uma vez por dia.

Em um servidor Apache com vários virtual hosts, é possível fazer com que o Webalizer gere estatísticas separadas para cada um, com uma configuração um pouco mais cuidadosa. Em primeiro lugar, você deve configurar o Apache para gerar arquivos de log separados para cada site hospedado, como no exemplo que vimos há pouco:

<VirtualHost *:80>
ServerAdmin joao@joao.com.br
ServerName www.joao.com.br
ServerAlias joao.com.br
DocumentRoot /var/www/joao/html
ErrorLog /var/www/joao/logs/error.log
CustomLog /var/www/joao/logs/access.log combined

</VirtualHost>

Configurando dessa forma, os logs do site “joao.com.br” ficarão armazenados no arquivo “/var/www/joao/logs/access.log”, os do “maria.com.br” no “/var/www/maria/logs/access.log” e assim por diante, sempre separados dos arquivos disponíveis ao público, que vão na pasta “html”.

O próximo passo é criar um arquivo de configuração do Webalizer separado para cada um. Para manter as coisas organizadas, crie o diretório “/etc/webalizer” e crie uma cópia do arquivo webalizer.conf original para cada site, dentro da pasta, como em:

# mkdir /etc/webalizer
# cd /etc/webalizer
# cp webalizer.conf joao.conf
# cp webalizer.conf maria.conf

Precisamos agora editar cada um dos arquivos, informando o arquivo de log, domínio e diretório onde ficarão armazenados os relatórios de cada site. No arquivo “/etc/webalizer/joao.conf”, por exemplo, você teria (além das outras linhas do arquivo padrão) as linhas:

LogFile /var/www/joao/logs/access.log
OutputDir /var/www/joao/html/webalizer
HostName joao.com.br

Depois de gerar os arquivos de configuração para todos os sites, falta fazer com que o Webalizer processe todos automaticamente. Uma forma rápida de fazer isso (dica do próprio FAQ do webalizer) é usar o comando:

# for i in /etc/webalizer/*.conf; do webalizer -c $i -q; done

Esse é, na verdade, um mini-script, que vai executar o Webalizer uma vez para cada arquivo “.conf” encontrado no diretório “/etc/webalizer”, gerando todas as estatísticas em uma tacada só. Para que o comando seja executado todos os dias automaticamente, coloque-o dentro de um script no diretório “/etc/cron.daily“.

No Debian, temos o script “/etc/cron.daily/webalizer“, que é criado automaticamente durante a instalação do pacote e se encarrega de gerar as estatísticas diariamente, lendo o arquivo “/etc/webalizer.conf”. Podemos modificá-lo para que ele leia também os arquivos dentro do diretório “/etc/webalizer”. Para isso, edite o arquivo e substitua as linhas:

# Run webalizer quietly
${WEBALIZER_BIN} -c ${WEBALIZER_CONF} -q
${WEBALIZER_BIN} -c ${WEBALIZER_CONF} -q ${nonrotatedlog}

Por:

# Run webalizer quietly
${WEBALIZER_BIN} -c ${WEBALIZER_CONF} -q
${WEBALIZER_BIN} -c ${WEBALIZER_CONF} -q ${nonrotatedlog}

for i in /etc/webalizer/*.conf; do ${WEBALIZER_BIN} -c $i -q; done
for i in /etc/webalizer/*.conf; do ${WEBALIZER_BIN} -c $i -q ${nonrotatedlog}; done

Um problema comum é como restringir o acesso às estatísticas, afinal, na maioria dos casos, elas não devem ficar disponíveis ao público. A solução mais simples nesse caso é usar um arquivo .htaccess, que permite restringir o acesso ao diretório, exigindo login e senha.

O primeiro passo é criar um arquivo de senhas, usando o comando “htpasswd“, que faz parte do pacote “apache2-utils” (o mesmo que utilizamos para gerar as senhas do Squid). O arquivo de senhas deve, preferencialmente, ser armazenado em uma pasta fora do diretório com os arquivos do site. Se possível, use um arquivo separado para cada site hospedado. Vou usar como exemplo a pasta “/etc/apache2/auth”:

# mkdir /etc/apache2/auth
# cd /etc/apache2/auth
# touch joao.auth
# htpasswd joao.auth joao

New password:
Re-type new password:

Aqui, criamos o arquivo “/etc/apache2/auth/joao.auth”, contendo o usuário “joao” e a senha digitada, armazenada de forma encriptada. Você pode armazenar vários logins no mesmo arquivo, executando o comando uma vez para cada usuário.

Com o arquivo de senhas criado, crie um arquivo de texto chamando “.htaccess” no raiz do diretório das estatísticas, contendo o seguinte:

AuthName “Acesso Restrito”
AuthType Basic
AuthUserFile /etc/apache2/auth/joao.auth
require valid-user

A linha “AuthName” contém o texto que será mostrado na tela de login exibida para o cliente, enquanto o “AuthUserFile” contém o arquivo de senhas gerado.

Concluindo, embora o webalizer ofereça bons recursos, o uso de relatórios de estatísticas locais está saindo um pouco de moda devido à popularização do Google Analytics, o serviço de geração de estatísticas oferecido pelo Google, que permite gerar estatísticas muito mais detalhadas e pode ser integrado ao AdSense e ao AdWords: https://www.google.com/analytics/.

Enquanto o Webalizer trabalha gerando os relatórios a partir das estatísticas do Apache, o Analytics os gera a partir de um pequeno javascript que é incluído nas páginas e executado diretamente pelos clientes. Isso faz com que os relatórios do Analytics acabem oferecendo números mais próximos da realidade, já que excluem o tráfego gerado pelos crawlers dos mecanismos de busca e outros tipos de tráfego automatizado, que acabam inflando bastante as estatísticas do Webalizer.

Um ponto negativo do Analytics é que ele não computa acessos de visitantes que bloqueiam a execução de javascript no navegador (como os visitantes usando a extensão NoScript do Firefox) ou que acessam o site usando navegadores primitivos, sem suporte a javascript, como no caso de muitos navegadores móveis.

Com isso, os números mostrados pelo Webalizer acabam sempre ficando bem acima dos acessos reais, enquanto os do Analytics ficam sempre um pouco abaixo. Como nenhuma das duas ferramentas é perfeita, muitos preferem simplesmente usar as duas.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X