De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Sérgio Abrantes
Data de Publicação: 09 de Abril de 2009
Mostrarei como fazer um rodízio dos arquivos de log do Squid que crescem enormemente ao final de todo o mês, colocando-os na crontab para fazer esse trabalhinho sujo. : D
O arquivo de log do Squid (access.log) cresce enormemente devido aos acessos externos. O próprio Squid tem sistema de rotacionamento dos logs através do comando "squid -k rotate". Com esse comando, os arquivos vão ficando no seguinte formato:
access.log.0 access.log.1 ...
A idéia é fazer um rotacionamento ao final de todo o mês, criando um arquivo de log com o mês e gerar um relatório mensal utilizando o SARG.
Porque fazer isso? Assim tiramos um relatório com o acesso de todo o mês e geramos um arquivo com os acessos daquele mês. Caso seja necessário um relatório de todo o mês, basta apenas juntar os logs e gerar.
Devemos inserir as datas e o script na crontab para realizar a tarefa. Segue abaixo o conteúdo da crontab:
# Faz um logrotate do Squid 59 23 31 1 * /home/bkp_server/scripts/rotate_squid 59 23 28 2 * /home/bkp_server/scripts/rotate_squid 59 23 31 3 * /home/bkp_server/scripts/rotate_squid 59 23 30 4 * /home/bkp_server/scripts/rotate_squid 59 23 31 5 * /home/bkp_server/scripts/rotate_squid 59 23 30 6 * /home/bkp_server/scripts/rotate_squid 59 23 31 7 * /home/bkp_server/scripts/rotate_squid 59 23 31 8 * /home/bkp_server/scripts/rotate_squid 59 23 30 9 * /home/bkp_server/scripts/rotate_squid 59 23 31 10 * /home/bkp_server/scripts/rotate_squid 59 23 30 11 * /home/bkp_server/scripts/rotate_squid 59 23 31 12 * /home/bkp_server/scripts/rotate_squid
Ele executará o script que está em /home/bkp_server/scripts/rotate_squid
ao
final do último dia de cada mês.
Segue o conteúdo do script:
#!/bin/bash data=`date +%m` ano=`date +%y` if [ $data == "01" ] ;then /usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/01/$ano-31/01/$ano cp -p /var/log/squid/access.log /var/log/squid/access.log-janeiro cp -p /var/log/squid/cache.log /var/log/squid/cache.log-janeiro cp -p /var/log/squid/store.log /var/log/squid/store.log-janeiro cat /dev/null > /var/log/squid/access.log cat /dev/null > /var/log/squid/cache.log cat /dev/null > /var/log/squid/store.log fi if [ $data == "02" ] ;then /usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/02/$ano-28/02/$ano cp -p /var/log/squid/access.log /var/log/squid/access.log-fevereiro cp -p /var/log/squid/cache.log /var/log/squid/cache.log-fevereiro cp -p /var/log/squid/store.log /var/log/squid/store.log-fevereiro cat /dev/null > /var/log/squid/access.log cat /dev/null > /var/log/squid/cache.log cat /dev/null > /var/log/squid/store.log fi if [ $data == "03" ] ;then /usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/03/$ano-31/03/$ano cp -p /var/log/squid/access.log /var/log/squid/access.log-marco cp -p /var/log/squid/cache.log /var/log/squid/cache.log-marco cp -p /var/log/squid/store.log /var/log/squid/store.log-marco cat /dev/null > /var/log/squid/access.log cat /dev/null > /var/log/squid/cache.log cat /dev/null > /var/log/squid/store.log fi if [ $data == "04" ] ;then /usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/04/$ano-30/04/$ano cp -p /var/log/squid/access.log /var/log/squid/access.log-abril cp -p /var/log/squid/cache.log /var/log/squid/cache.log-abril cp -p /var/log/squid/store.log /var/log/squid/store.log-abril cat /dev/null > /var/log/squid/access.log cat /dev/null > /var/log/squid/cache.log cat /dev/null > /var/log/squid/store.log fi if [ $data == "05" ] ;then /usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/05/$ano-31/05/$ano cp -p /var/log/squid/access.log /var/log/squid/access.log-maio cp -p /var/log/squid/cache.log /var/log/squid/cache.log-maio cp -p /var/log/squid/store.log /var/log/squid/store.log-maio cat /dev/null > /var/log/squid/access.log cat /dev/null > /var/log/squid/cache.log cat /dev/null > /var/log/squid/store.log fi if [ $data == "06" ] ;then /usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/06/$ano-30/06/$ano cp -p /var/log/squid/access.log /var/log/squid/access.log-junho cp -p /var/log/squid/cache.log /var/log/squid/cache.log-junho cp -p /var/log/squid/store.log /var/log/squid/store.log-junho cat /dev/null > /var/log/squid/access.log cat /dev/null > /var/log/squid/cache.log cat /dev/null > /var/log/squid/store.log fi if [ $data == "07" ] ;then /usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/07/$ano-31/07/$ano cp -p /var/log/squid/access.log /var/log/squid/access.log-julho cp -p /var/log/squid/cache.log /var/log/squid/cache.log-julho cp -p /var/log/squid/store.log /var/log/squid/store.log-julho cat /dev/null > /var/log/squid/access.log cat /dev/null > /var/log/squid/cache.log cat /dev/null > /var/log/squid/store.log fi if [ $data == "08" ] ;then /usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/08/$ano-31/08/$ano cp -p /var/log/squid/access.log /var/log/squid/access.log-agosto cp -p /var/log/squid/cache.log /var/log/squid/cache.log-agosto cp -p /var/log/squid/store.log /var/log/squid/store.log-agosto cat /dev/null > /var/log/squid/access.log cat /dev/null > /var/log/squid/cache.log cat /dev/null > /var/log/squid/store.log fi if [ $data == "09" ] ;then /usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/09/$ano-30/09/$ano cp -p /var/log/squid/access.log /var/log/squid/access.log-setembro cp -p /var/log/squid/cache.log /var/log/squid/cache.log-setembro cp -p /var/log/squid/store.log /var/log/squid/store.log-setembro cat /dev/null > /var/log/squid/access.log cat /dev/null > /var/log/squid/cache.log cat /dev/null > /var/log/squid/store.log fi if [ $data == "10" ] ;then /usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/10/$ano-31/10/$ano cp -p /var/log/squid/access.log /var/log/squid/access.log-outubro cp -p /var/log/squid/cache.log /var/log/squid/cache.log-outubro cp -p /var/log/squid/store.log /var/log/squid/store.log-outubro cat /dev/null > /var/log/squid/access.log cat /dev/null > /var/log/squid/cache.log cat /dev/null > /var/log/squid/store.log fi if [ $data == "11" ] ;then /usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/11/$ano-30/11/$ano cp -p /var/log/squid/access.log /var/log/squid/access.log-novembro cp -p /var/log/squid/cache.log /var/log/squid/cache.log-novembro cp -p /var/log/squid/store.log /var/log/squid/store.log-novembro cat /dev/null > /var/log/squid/access.log cat /dev/null > /var/log/squid/cache.log cat /dev/null > /var/log/squid/store.log fi if [ $data == "12" ] ;then /usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/12/$ano-31/12/$ano cp -p /var/log/squid/access.log /var/log/squid/access.log-dezembro cp -p /var/log/squid/cache.log /var/log/squid/cache.log-dezembro cp -p /var/log/squid/store.log /var/log/squid/store.log-dezembro cat /dev/null > /var/log/squid/access.log cat /dev/null > /var/log/squid/cache.log cat /dev/null > /var/log/squid/store.log fi
Agora veremos como os LOGs ficam após serem rotacionados.
# cd /var/log/squid # ls -lrth total 1.2G -rwxr-xr-x 1 nobody users 22K 2008-02-28 16:35 cache.log-fevereiro* -rwxr-xr-x 1 nobody users 111M 2008-02-28 22:59 store.log-fevereiro* -rwxr-xr-x 1 nobody users 109M 2008-02-28 22:59 access.log-fevereiro* -rwxr-xr-x 1 nobody users 46K 2008-03-31 16:50 cache.log-marco* -rwxr-xr-x 1 nobody users 136M 2008-03-31 22:59 store.log-marco* -rwxr-xr-x 1 nobody users 121M 2008-03-31 22:59 access.log-marco* -rwxr-xr-x 1 nobody users 64K 2008-04-30 18:12 cache.log-abril* -rwxr-xr-x 1 nobody users 160M 2008-04-30 23:58 store.log-abril* -rwxr-xr-x 1 nobody users 102M 2008-04-30 23:58 access.log-abril* -rwxr-xr-x 1 nobody users 229M 2008-06-12 17:17 store.log* -rwxr-xr-x 1 nobody users 42K 2008-06-12 17:17 cache.log* -rwxr-xr-x 1 nobody users 184M 2008-06-12 17:17 access.log*
Assim fica mais tranquilo para o SARG trabalhar também e os teus logs mais organizados. : )
Cuidar dos logs sempre é triste. Os scripts vão surgindo conforme a necessidade de administração do servidor.
Esta foi uma alternativa que achei mais interessante para o meu caso. Caso tentam sugestões de melhoria ou outras alternativas para solucionar este caso, todas serão bem vindas.
Vivendo e aprendendo!
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários