Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Kurumin - versão do kernel
Por fabylima
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

Fazendo rotate do Squid automaticamente
Linux user
Publicado por Sérgio Abrantes Junior em 11/07/2008

Login: pelo, 252948 pontos
[ Hits: 7623 ]

Fazendo rotate do Squid automaticamente

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
etc

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.

Crontab

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.

Script rotate_squid

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

Logs

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. : )

Conclusão

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!

Sérgio Abrantes

[]'s


Outras dicas deste autor

Leitura recomendada
   Dica Linux recomendada Live CDs, uma boa sugestão para os iniciantes
   Dica Linux recomendada Chaveiro padrão bloqueado no Ubuntu - Como se livrar
   Dica Linux recomendada Novo driver para placa wireless BCM4312
   Dica Linux recomendada OpenDNS FamilySHield - Aprenda, em 10 passos, a barrar a pornografia no seu navegador
   Dica Linux recomendada Instalando e configurando softmodem no Slackware 12

Comentários
[1] Comentário enviado por jeferson_roseira em 13/07/2008 - 21:50h:

cara boa dica

ja foi para o favoritos

[2] Comentário enviado por removido em 14/07/2008 - 10:03h:

Lembrando que o Squid não consegue gerenciar mais do q 2GB de log (em um unico arquivo de log). Se ele atingir os 2GB, o daemon do Squid simplesmente para e não consegue mais subir. Portanto, vale a pena fazer um levantamento antes pra ver se o log vai atingir esse tamanho antes do final de cada mês.
No mais, ótima dica.


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.