Eu tenho um servidor proxy que executa o Ubuntu Server 11.10, Squid 2.7.STABLE9. Eu instalei o sarg (versão 2.3.1 Sep-18-2010) para gerar relatórios usando a instalação comum do apt-get e adicionei um cron job para gerar um relatório do dia a cada 5 minutos (que sobrescreverá os 5 minutos mais antigos um):
*/5 * * * * /root/proxy_report.sh
E o conteúdo de /root/proxy_report.sh
é:
#!/bin/bash
/usr/bin/sarg -nd 'date +"%d/%m/%Y"' > /dev/null 2>&1
E adicionei outro trabalho cron para gerar um relatório completo a cada hora em: 32 (para não colidir com o trabalho de 5 minutos):
*/32 * * * * /root/proxy_report_full.sh
E o conteúdo de /root/proxy_report_full.sh
é:
#!/bin/bash
/usr/bin/sarg -n > /dev/null 2>&1
E adicionei um pequeno script para remover o relatório completo de ontem (o relatório completo que termina em ontem e não será substituído pelo novo relatório completo hoje) em /etc/rc.local
para ser executado na inicialização:
/usr/bin/rm_yesterday.sh &>> /var/log/rm_yesterday
Onde /usr/bin/rm_yesterday.sh
:
#!/bin/bash
find /var/www/sarg/ | grep 'date -d Apr1 +"%Y%b%d"'-* | grep -v 'date +"%Y%b%d"' | xargs rm -rf
* Apr1 é a data de início do proxy ...
** Coloquei em /usr/bin
para ser montado logo na inicialização ...
Esse arranjo foi OK por cerca de um mês e meio, exceto que uma vez eu notei que alguns erros e relatórios não foram gerados, e consertei isso fazendo um offset (os dois minutos em 32 do segundo cron job). No entanto, começou a não gerar mais relatórios. Ao tentar gerá-lo manualmente, apresenta o seguinte erro:
root@proxy-server:~# sarg -n
SARG: getword_atoll loop detected after 3 bytes.
SARG: Line="154 192.168.10.40 TCP_MISS/200 39 CONNECT www.google.com"
SARG: Record="154 192.168.10.40 TCP_MISS/200 39 CONNECT www.google.com"
SARG: searching for 'x2f'
SARG: getword backtrace:
SARG: 1:sarg() [0x8050a4a]
SARG: 2:sarg() [0x8050c8b]
SARG: 3:sarg() [0x804fc2e]
SARG: 4:/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf3) [0x129113]
SARG: 5:sarg() [0x80501c9]
SARG: Maybe you have a broken date in your /var/log/squid/access.log file
Quando olhei para a pasta /var/log/squid/
, notei que ela contém alguns logs girados:
root@proxy-server:~# ls /var/log/squid/
access.log access.log.1 cache.log cache.log.1 store.log store.log.1
Então talvez o sarg tenha instalado o logrotate com ele? Ou vem com o Ubuntu padrão? Não me lembro de ter instalado manualmente.
A questão é : o que poderia ter corrido mal? Tem algo a ver com a rotação do log? Como posso rastrear o erro e começar a gerar relatórios novamente?