Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Curso de Inglês Online

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Fazendo rotate do Squid automaticamente

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.

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!

Veja a relação completa dos artigos de Sérgio Abrantes

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 2.96/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (1011 votos)

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Treinamentos, Consultorias e Soluçoes em TI. Baseados em softwares livres e padrões abertos para ambientes de missão crítica

Submarino.com.br

Expressões Regulares - Uma abordagem divertida 3ª edição