AWSTATS Instalando e configurando para Apache2 e NGINX
De gutocarvalho.net
Tabela de conteúdo |
um pouco sobre o awstats
O Awstats é um analisador de LOGS avançado, ele pode analisar vários tipos de LOGS, os principais são WEB, MAIL e FTP.
Vejas os principais recursos da ferramenta: http://awstats.sourceforge.net/#FEATURES
Veja alguns demos do awstats: http://awstats.sourceforge.net/#DEMO
Aqui vamos aprender a configurar o AWSTATS para gerar estatísticas de um servidor APACHE2.
Por enquanto vou abordar a configuração de estatísticas WEB.
instalando a aplicação
vire root
sudo -s -H
agora vamos instalar o programa
apt-get install awstats
programa instalado, veja a estrutura de arquivos e diretórios
dpkg -L awstats
configurações para monitoramento de um servidor web
deu para perceber que os arquivos ficam no diretório: /etc/awstats
lá encontrarmos 2 arquivos, são eles:
awstats.conf awstats.conf.local
vamos nos basear nas configurações do arquivo awstats.conf, primeiro vamos copiar e logo depois editá-lo
cp /etc/awstats/awstats.conf /etc/awstats/awstats.www.seudominio.com.br.conf
agora vamos editar o arquivo
vim /etc/awstats/awstats.www.seudominio.com.br.conf
essas são as variáveis mais importantes
LogFile="/var/log/apache/access.log" LogFormat=4 DNSLookup=1 SiteDomain="hostname"
vamos fazer uma configuração rápida, ajustes as variáveis abaixo de acordo com a sua estrutura
LogFile="/var/log/apache/www.seudomonio.com.br-access.log" LogFormat=1 DNSLookup=1 SiteDomain="www.seudominio.com.br"
O formato padrão de log vem com a configuração 4, porém com a configuração 1 temos mais informações, poderemos saber quais sistemas operacionais estao acessando o seu site, quais navegadores estão sendo utilizados e muito mais.
Vale lembrar que o arquivo de configuração do awstats é extensamente comentado e muito fácil de entender, basta ter paciência e qualquer problema pode-se recorrer ao google ;)
Cuidado com a variável DNSLookup, se ela estiver com o valor 1, o awstats vai solicitar uma busca recursiva de DNS com cada domínio mencionado no arquivo de log, se você tem um grande volume de acessos, terá um extenso arquivo de log, caso queira velocidade na geração das estatísticas pode ser interessante desligar esse recurso, principalmente se o seu link estiver saturado.
Existe uma variável chamada HostAliases que pode ser utilizada para CNAMES e redirects do Apache2, pro exemplo, se www.meudominio.com.br, portal.meudomonio.com.br, meudominio.com.br e 200.x.x.x apontam para o meus rootdir, você pode usá-la para não perder nenhum tipo de estatística, aliás, além dos CNAMES, Redirects, isso só vai funcionar se o arquivo de logs para todos for o mesmo, claro ;)
HostAliases=”www.domain.tld localhost 127.0.0.1″
Se você tem mais de um domínio, crie um outro arquivo e ajuste de acordo com o nome do seu outro domínio, crie e monitore quantos domínios forem necessários.
gerando as estatísticas do servidor web
para rodar programa e extrair as estatísticas use o comando abaixo
/usr/lib/cgi-bin/awstats.pl -config=www.meudominio.org.br -update
saída do comando
Create/Update database for config "/etc/awstats/awstats.www.meudominio.org.br.conf" by AWStats version 6.6 (build 1.887) From data in log file "/var/log/nginx/www.meudomonio.org.br-access.log"... Phase 1 : First bypass old records, searching new record... Direct access after last parsed record (after line 14554) Jumped lines in file: 14554 Found 14554 already parsed records. Parsed lines in file: 18 Found 0 dropped records, Found 0 corrupted records, Found 0 old records, Found 18 new qualified records.
caso não queria ver esta saída descarte a saída
/usr/lib/cgi-bin/awstats.pl -config=www.meudominio.com.br -update > /dev/null
acessando suas estatísticas
As estatísticas ficam disponíveis via web, tudo é gerado através de CGI PERL.
estatísticas de servidor web
vá em seu navegador preferido (firefox ?) e digite o endereço abaixo:
http://hostname/cgi-bin/awstats.pl?config=domain
troque hostname pelo ip ou host do seu servidor e domain pelo seu domínio, veja o exemplo:
http://www.gutocarvalho.net/cgi-bin/awstats.pl?config=www.gutocarvalho.net
agendando as estastísticas
é possível agendar as estatísticas usando o sistema cron, entre no agendamento cron do seu usuário
crontab -e
agendando estatísticas web
adicione as seguintes linhas
# gerando estatísticas com o awstats */10 * * * * /usr/lib/cgi-bin/awstats.pl -config=www.meudominio.com.br -update >/dev/null */10 * * * * /usr/lib/cgi-bin/awstats.pl -config=www.outrodominio.com.br -update >/dev/null */10 * * * * /usr/lib/cgi-bin/awstats.pl -config=www.terceirodomonio.com.br -update >/dev/null
aqui estou supondo que você tem 3 arquivos no /etc/awstats e que todos foram configurados corretamente, vale lembrar que o parâmetro que passamos para o scritp perl do awstats é o mesmo conteúdo da variável SiteDomain do arquivo de configuração criado.
dicas importantes
Algumas dicas que fazem a diferença
evitando perda de dados estatísticos do apache2 com o logrotate
Como os logs do Apache2 são manipulados pelo logrotate, é possível que possamos perder dados caso um rotate aconteça antes de um update do awstats, para evitar isto vamos fazer uma configuração no include do apache para o logrotate.
vamos ver o conteúdo do include do apache, use o cat ;)
cat /etc/logrotate.d/apache2
saída
/var/log/apache2/*.log {
weekly
missingok
rotate 52
compress
sharedscripts
prerotate
endscript
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
if [ -f /var/run/apache2.pid ]; then
/etc/init.d/apache2 restart > /dev/null
fi
endscript
}
veja as opçoes pre-rotate e post-rotate, ali está o pulo do gato ;)
vamos fazer algumas mudanças para executarmos o awstats antes do rotate.
/var/log/apache2/*.log {
weekly
missingok
rotate 52
compress
sharedscripts
prerotate
/usr/lib/cgi-bin/awstats.pl -config=www.meudominio.com.br -update >/dev/null
/usr/lib/cgi-bin/awstats.pl -config=www.outrodominio.com.br -update >/dev/null
/usr/lib/cgi-bin/awstats.pl -config=www.terceirodomonio.com.br -update >/dev/null
endscript
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
if [ -f /var/run/apache2.pid ]; then
/etc/init.d/apache2 restart > /dev/null
fi
endscript
}
e se eu uso o NGIX como proxy-http, como faço para gerar os logs corretamente?
Bom aqui usamos o NGINX (http://nginx.net/) como proxy HTTP, aliás ele é uma ferramenta excelente, através dele podemos rodar aplicações web em diversas portas 81,8000,8001 pois ele redireciona as conexões que entram na porta 80 de forma transparente para os outros aplicativos web, vale a pena conhecer.
O problema do NGINX é que nos logs do APACHE2 fica constando acesso partindo de apenas 1 endereço IP/HOST, que é o NGINX. Para resolver este problema, temos que habilitar o log no NGIX, vou mostar um sample do NGIX.conf
cat /usr/local/ngix/conf/nginx.conf
veja uma parte do arquivo de configuração
server {
listen 80;
server_name www.meudominio.com.br;
client_max_body_size 1000M;
location = / {
rewrite ^(.*)$ /dotlrn/clubs/meudominio/one-community permanent;
}
location / {
proxy_pass http://200.000.000.000:8000;
include /usr/local/nginx/conf/proxy-openacs.conf;
}
}
habilitando os logs
server {
listen 80;
server_name www.meudominio.com.br;
access_log /var/log/nginx/www.meudomonio.com.br-access.log;
client_max_body_size 1000M;
location = / {
rewrite ^(.*)$ /dotlrn/clubs/meudominio/one-community permanent;
}
location / {
proxy_pass http://200.000.00.000:8000;
include /usr/local/nginx/conf/proxy-openacs.conf;
}
}
bom não se esqueça de criar o diretório /var/log/nginx e logo após reinicie a aplicação.
depois disto bastará configurar o awstats para ler o logo do diretório do NGIX, assim você terá todas as informações necessárias.
colocando logs do ngix no rotate do servidor
Caso você use o NGINX ao invés do apache, precisará configurar o rotate para o log dele, o mesmo macete para o apache, porém apontando para o log do nginx.
primeiro vamos criar o arquivo
vim /etc/logrotate.d/nginx
coloque o seguinte conteúdo no arquivo
/var/log/nginx/*.log {
daily
missingok
rotate 52
compress
sharedscripts
prerotate
/usr/lib/cgi-bin/awstats.pl -config=www.meudominio.com.br -update >/dev/null
/usr/lib/cgi-bin/awstats.pl -config=www.outrodominio.com.br -update >/dev/null
/usr/lib/cgi-bin/awstats.pl -config=www.terceirodomonio.com.br -update >/dev/null
/usr/lib/cgi-bin/awstats.pl -config=www.pendurado.com.br -update >/dev/null
endscript
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
endscript
}
verifique certinho o local onde esta o arquivo de pid do nginx, dependendo da forma como voce compilou ele pode estar em locais diferentes, observe também o arquivo /etc/init.d/nginx
pronto seus logs serão tratados e não haverá perda de dados.
referências
ubuntu + awstats
- http://ubuntu-tutorials.com/2008/01/16/configuring-awstats-on-ubuntu-server/
- http://www.debuntu.org/2006/04/21/33-how-to-setting-up-awstats-with-apache-2-on-debianubuntu
- http://www.mneylon.com/blog/archives/2005/08/03/configuring-awstats-with-apache-2-on-ubuntu/
- http://www.petersblog.org/node/697
ngix + awstats

