Gerenciando relatórios do SARG

Sabemos que os relatórios periódicos do SARG ocupam um espaço significativo em disco, portanto, como deletar relatórios N dias antigos? Como automatizar a criação de relatórios diários? Neste artigo explico como criar scripts que se encarregam de resolver tais problemas de maneira fácil.

[ Hits: 167.659 ]

Por: Rodrigo Polesso em 11/09/2004


Removendo relatórios N dias antigos



Bom, na página anterior agendamos a criação do relatório diário. Não seria inteligente de nossa parte implementar uma solução que nos trará dor-de-cabeça futura, logo precisamos gerenciar estes relatórios gerados, excluindo antigos, pois os mesmos ocupam um espaço considerável em disco.

Abaixo segue o script encarregado da tarefa, logo após explico como funciona:

#!/bin/bash
# Script by Rodrigo Polesso
# 24/08/2004
# Este script se encarrega de excluir relatórios SARG antigos, afim de manter a integridade do sistema futuramente.


# Na variável abaixo coloque o diretório no qual os relatórios
# são gerados

DIRETORIO_SARG="/var/www/proxy/"

# Preencha esta variável abaixo para dizer ao script quantos dias um relatório irá permanecer em disco.
NUMERO_DE_DIAS_ANTIGO=5

PAR1=$(date --date "$NUMERO_DE_DIAS_ANTIGO day ago" +%Y-%m-%d)
PAR2=$(ls $DIRETORIO_SARG --time-style=long-iso -l | grep $PAR1 | grep -v "total [0-9]*" | cut -d ":" -f 2 | cut -d " " -f 2)

for i in $PAR2
do
    rm -R ./$i
done

Existem N maneiras de fazer isso, portanto sinta-se à vontade em modificar o script.
  • Guardamos na variável PAR1 a data atual - NUMERO_DE_DIAS_ANTIGOS, tudo no formato aaaa-mm-dd, o qual é o mesmo do ls --time-style=long-iso.
  • Guardamos na variável PAR2 os arquivos e diretórios contidos em DIRETORIO_SARG que possuem a data de modificação igual a data contida em PAR1.
  • Executo um laço de repetição FOR para executar o comando "rm -R" em todos os arquivos e diretórios encontrados com a data especificada.

Bom, o funcionamento é bastante simples como podem ver. Isso pode ajudar na manutenção de seu SQUID. Claro que você pode adicionar este script para ser executado logo após o script criador de relatórios na crontab.

Espero que tenha sido útil.

Abraço
Rodrigo Polesso

Página anterior    

Páginas do artigo
   1. Automatização diária
   2. Removendo relatórios N dias antigos
Outros artigos deste autor

Snort_INLINE: Proteção total

IMHear, Sniffer de mensagens do MSN

VMWare - 3 mãos na roda

Leitura recomendada

Squid com autenticação básica + Gerador de relatórios Sarg - Instalação e configuração

Instalando o Lusca Cache (Squid) + Thunder Cache 3

Configurando o Squid no Slackware

Squid no FreeBSD

Squid avançado + OpenLDAP

  
Comentários
[1] Comentário enviado por y2h4ck em 11/09/2004 - 11:15h

O Sarg e muito bacana, mas tem um probleminha que deve ser lembrado aqui, eu ja tive esse problema e muitaaaaaaaaaaa gente que usou ele tambem teve o mesmo.

bom quando o log access do squid vai aumentando o SARG ja nao consegue gerar relatorios, entao se vc quer que ele gere relatorios diarios e bom vc montar um sistema de rotate diario para seus logs ou entao
colocar no cron para ele gerar o primeiro relatorio, e depois limpar o log, para iniciar um outro relatorio no dia seguinte e limpar dinovo... assim se previne o acumulo e o sarga vai funcionar perfeitinho.

Cara ficou da hora o artigo paravens :)

abraços

Anderson

[2] Comentário enviado por SantAnna em 12/09/2004 - 12:20h

Ficou muito bacana!

Eu já tive que criar um script para o mesmo problema, mas para o servidor de e-mails...
Depois descobri que o comando find faz tudo isso...

T+

[3] Comentário enviado por astrodyum em 12/09/2004 - 12:53h

Exatamente, como disse no artigo, existem varias formas de fazer. O find é uma otima alternativa a solução do problema.

Obrigado pelos elogios
Um abraco

[4] Comentário enviado por tgrunge em 11/02/2005 - 09:36h

cara muito legal a sua matéria mas ainda to começando no linux e gostaira de saber uma coisa, esses scripts são rodados uma vez e daí funcionam, ou eu tenho q colocar algum comando pra eles serem executados sempre q o linux for iniciado, eu uso o kurumim 3.

valew

[5] Comentário enviado por astrodyum em 11/02/2005 - 13:08h

Opa, obrigado. No kurumin nao sei como funciona a auto inicializacao, mas eh dentro de /etc/rc.d/ ai dentro vc tem arquivos que contem oq sera inicializado automaticamente. Abraco cara

[6] Comentário enviado por mfreddo em 24/03/2005 - 08:03h

Ola, gostei muito das dicas que você forneceu, e gostaria de colaborar.
Este script é bem bacana, muito util e evita um grande problema que é lotar o disco de coisas velhas, mas existe uma maneira um pouco mais facil de se fazer isso:
O Sarg possui um item no arquivo de configuração ( sarg.conf ) que limita a quantidade de "relatorios" .

# TAG: lastlog n
# How many reports files must be keept in reports directory.
# The oldest report file will be automatically removed.
# 0 - no limit.
#
lastlog 90

Neste caso, o sarg deixaria "90" "dias" ( se ele fosse gerado diariamente ) ou 90 "semanas" se ele fosse gerado semanalmente ..... )
Um Abraco

[7] Comentário enviado por reimassupilami em 06/05/2005 - 16:58h

eu to mexendo com sarg aki pra gerar relatorios do squid... parece que por padrão ele gera os relatorios a partir do dia primeiro do mes até o dia corrente, tipo do dia 01/05 até 06/05 q é hoje... mas eu preciso gerar os antigos tb... tem como informar para o sarg o periodo, ou algo assim?

o parametro -d parecia resolver meu problema, assim:

sarg -d 03/05/2005-06/05/2005

isso funciona... porém se eu informar o início em um mês anterior ao atual, mesmo assim ele vai pegar apenas no dia 1 do mês atual... eita... tipo, se eu informar pra pegar desde o dia 01/03:

sarg -d 01/03/2005-06/05/2005

ele vai pegar a partir do dia 01/05... pq isso?

[8] Comentário enviado por reimassupilami em 06/05/2005 - 17:35h

outra duvidazinha... se eu quisesse a data de ontem ao invez da data de hoje bastaria colocar o 1 no luga do 0? é isso?

[9] Comentário enviado por dexters em 25/12/2005 - 12:57h

Olá amigo, muito bom sua Materia este script resolve, agora eu gostaria de saber se eu poderia usa-lo para apagar tambem os logs do squid access.log onde eu resolveria meu problema do sarg parar de fazer relatorio por causa do tamanho do log do squid, eu teria que mudar so o diretorio do logo do Par2 para o diretorio do log squid? so isso resolveria?

[10] Comentário enviado por exercitobr em 02/02/2006 - 10:48h

Como instalo o sar no SUSE 10.0? Quais comandos?

[11] Comentário enviado por daniel_rg em 14/02/2006 - 19:50h

Cara, para instalar no suse, basta baixar o pacote do SuSe no site (http://sarg.sourceforge.net/), e depois instalar com:
yast -i <PATH_DO_PACOTE>

falou...

[12] Comentário enviado por pcnmota em 22/02/2006 - 17:24h

Legal cara... bem util..

flw!

[13] Comentário enviado por edsonrodsilva em 23/02/2006 - 15:47h

Cara Parebens!! Exelente materia
Este script vai resolver meu problema!! mas quando o executo ele não remove os relatorios antigos!!
da o sequinte erro:
rm: imposivel remover "23FEB2006-23Feb2006" : Arquivo ou diretorio não encontrado

for i in $PAR2
do
rm -R $i
done


Gostaria de saber o significado do $i no script!!

Obrigado!!!

[14] Comentário enviado por astrodyum em 23/02/2006 - 16:58h

Ola, o $i recebe os nomes dos diretorios a serem apagados. Voce pode fazer um script com a mesma funcao utilizando o comando find e rm.

Atenciosamente
Rodrigo Polesso

[15] Comentário enviado por glaucoslv em 11/05/2006 - 15:07h

Dexters, para apagar os relatórios do squid, vc pode usar um script como segue abaixo:


#!/bin/bash

#Parar o Squid
cds
./squid stop

#Gerar o relatório no Sarg
sarg

#Zerar os arquivos gerados pelo squid
> /var/log/squid/access.log
> /var/log/squid/store.log
> /var/log/squid/cache.log

# Reiniciar o Squid
cds
./squid start

Assim, cada vez q vc gerar um relatório, o arquivo de access.log será zerado.

Abraços
Glauco

[16] Comentário enviado por fag_oliv em 16/05/2006 - 15:41h

cara e como eu faria pra gerar o relatorio do dia, semana e mes ? vc sabe ?

[17] Comentário enviado por HilarioTI em 15/08/2006 - 15:52h

ou cara voce poderia me dar uma ajudar pois nao esta deletando os arquivos antigos, embora ja verifiquei o script e nao me resolveu tens alguma dica?

[18] Comentário enviado por mariadejesus em 24/10/2006 - 16:44h

cOMO FAÇO PARA SABER SE TENHO O SARG INSTALADO EU USO kURUMIN.

[19] Comentário enviado por ducksjr em 16/02/2007 - 14:15h

# No sarg.conf se for configurado a linha a seguir como funcionaria:

lastlog 3

# Eu tenho relátorios diarios, semanais e mensais.
# Seriam excluidas os ultimos 3 meses, as ultimas 3 semanas ou os ultimos 3 dias

# Outra duvida seria necessario dar um restart no sarg ou algo parecido ou ele le o arquivo de configuração no momento em que gera os relatórios

# Caso eu faça um script para apagar os arquivo de acordo com um determinado tempo
# Como faria para alterar de também as paginas index.html (de forma automatica)?

[20] Comentário enviado por diegofsousarn em 29/08/2007 - 20:22h

Para solucionar esse problema do nosso amigo edsonrodsilva, enfrentado tambem por mim eu fiz o seguinte, coloquei uma variavel indicando onde esta o script ficando assim:
#!/bin/bash
# Script by Rodrigo Polesso
# 24/08/2004
# Este script se encarrega de excluir relatórios SARG antigos, afim de manter a integridade do sistema futuramente.

Programa=/etc/init.d/sarg-descart
# Na variável abaixo coloque o diretório no qual os relatórios
# são gerados
DIRETORIO_SARG="/home/public/squid-reports/"

# Preencha esta variável abaixo para dizer ao script quantos dias um relatório irá permanecer em disco.
NUMERO_DE_DIAS_ANTIGO=0

PAR1=$(date --date "$NUMERO_DE_DIAS_ANTIGO day ago" +%Y-%m-%d)
PAR2=$(ls $DIRETORIO_SARG --time-style=long-iso -l | grep $PAR1 | grep -v "total [0-9]*" | cut -d ":" -f 2 | cut -d " " -f 2)

for i in $PAR2
do
rm -R ./$i
done

espero ter ajudado
Falow

[21] Comentário enviado por jefferson.gava em 14/09/2007 - 15:35h

Amigos.. nao consigo instalar o Sarg aqui..

[22] Comentário enviado por vmm@vmm em 19/09/2007 - 07:54h

Instalei o sarg, porém quero apagar os relatórios que gravou e começar zerado novamente, como faço ?

[23] Comentário enviado por alex_a_souza em 28/11/2007 - 14:58h

?comentario=eu tenho o sarg instalado e funcionando.
Eu gero o relatorio manualmente quando preciso dele.
Tem dias que preciso filtrar, só gerar do dia anterior ao atual, sempre funciona.
ex: sarg -f /usr/local/etc/sarg/sarg.conf -d 27/11/2007/-25/11/2007
Agora eu estou precisando gerar um relatorio som com os sites PORNO e os IPs.
Tentei colocar dessa forma
ex: sarg -f /usr/local/etc/sarg/sarg.conf -s sex
Mas só aparece um site acessado por IP, quando gero sem o "-s sex", ele alem de mostrar todos os sites mostra que tem varios sites porno.
Então alguem sabe como eu faço pra gerar esse relatorio com todos os sites PORNOS acessados???
Desde já muito obrigado

[24] Comentário enviado por Deuz em 11/01/2008 - 10:37h

Bom dia! é um assunto muito bacana pra quem gosta e precisa monitorar os acessos, até por questão de serguraça, eu tenho o sarg rodando normalmente, gera os relatorios todos os dias sem dor de cabeça, mas o que eu queria e sempre quiz, era gerar relatorios mensal e anual, já procurei pela net mas nao achei nada, ouve umas dicas, mas nos testes nao funcionou. Se alguem puder me dar uma ajuda nisso, fico muito agradecido, o comando que uso pra gerar diario é esse:
/usr/sbin/sarg -f /etc/sarg/sarg.conf -p
cp /var/log/squid/access.log /var/log/squid/copia`date +%d%m%y`access.log
echo "" > /var/log/squid/access.log

grato!!

[25] Comentário enviado por clovisclerice em 12/02/2008 - 04:18h

ai galera e tenho o sarg instalado e o squid funcionando perfeitamente mais não sei o pq o meu sarg não ta gerando os relatórios do squid não sei se eu não soube instalar ou se é algum bug quando entro em http://192.168.1.2/squid-reports ai tem Daily,Weekly,Montly mais dentro deles não tem nada e eu não consigo descobrir o pq estou usando o ubuntu 7.10 server.

[26] Comentário enviado por Nikitiuk em 22/09/2008 - 16:39h

Só um comentário que pode ajudar alguns de vocês:
Para que o sarg consiga gerar um relatório de um determinado período é necessário que o access.log do squid contenha este período.
Como normalmente temos o logrotate configurado, provavelmente teremos os relatórios do sarg com um período limitado.
Isso parece lógico, mas às vezes esquecemos...

Até mais

[27] Comentário enviado por evandromagnago em 27/09/2008 - 14:20h

qual a versao do sarg para o ipcop 1.4.21

[28] Comentário enviado por thiagou319 em 01/10/2008 - 14:26h

Como eu faco para o sarg gerar index.php ao inves de gerar
index.html?
Estou tendo problemas quanto ao acesso, quero restringir estes acessos.

Obrigado!

[29] Comentário enviado por darkglobe em 11/11/2008 - 17:33h

Aqui vai uma dica de script para apagar os relatorios do SARG e reindexar o index.html.

#!/bin/bash
# Apagar Relatorios do Sarg com mais de 6 meses
# Wagner Andre
# 10/11/2008

sarg_dir=/var/www/sarg/daily

echo "----- Procurando por arquivos com mais de 6 meses..."
mais_de_6meses=`find $sarg_dir -type d -ctime +180 |cut -d / -f6 |uniq |grep ^[0-3]`

echo "----- Excluindo arquivos..."
for a in $mais_de_6meses; do
rm -rvf $sarg_dir/$a
done
echo "----- Arquivos excluidos!"

echo "----- Reparando index.html..."
for b in $mais_de_6meses; do
grep -v $b $sarg_dir/index.html > $sarg_dir/index.tmp
mv -vf $sarg_dir/index.tmp $sarg_dir/index.html
done
echo "----- Removida as entradas no arquivo index.html"
echo "----- Concluido!"

exit 0

[30] Comentário enviado por georgejales em 21/05/2009 - 17:30h

BOM DIA A TODOS. ALGUEM JÁ EDITOU O RELATÓRIO DO SARG PARA EXIBIR O IP DA MAQUINA E O USUÁRIO USADO NO ACESSO??? ALGUEM TEM ALGUMA IDÉIA DE COMO FAZER ISSO??? EU ACREDITO QUE O PRIMEIRO PASSO É EDITAR O ARQUIVO SARG.CSS. OBRIGADO.

[31] Comentário enviado por alerocha79 em 14/06/2010 - 15:02h

Georgejales,

Você pode criar relatórios no sarg facilmente, por padrão ele exibe ip, mas você pode configurar DDNS, DHCP e BIND9 para carregar automaticamente por nomes de computadores. Mais informações em

http://www.vivaolinux.com.br/artigo/Configurando-DHCP-com-DNS-%28Bind9%29-na-rede-local-Debian-Linux...

[32] Comentário enviado por paulopmt1 em 03/05/2011 - 09:29h

Perfeito amigo, era exatamente o que eu procurava.
Muito obrigado.

[33] Comentário enviado por emanum em 29/12/2011 - 09:13h

######## DUVIDA #########
Pessoal seguinte como sou novo preciso de um grande help, cada dia que o sarg gera um relatorio fica dentro de um diretorio com o nome do dia e seu index.
Minha Duvida é a seguinte como posso ter um index com todos os dias do mes ? tipo
dia 01 os dados principais
dia 02 os dados principais
.
.
.
?

[34] Comentário enviado por thiaguin em 18/07/2012 - 11:30h

Alguem saberia me informar como gerar um relatorio no sarg com somente as paginas digitadas no browser pelos usuarios?
eu encaminho os relatorios para diretoria da empresa, e fica muito confuso de entender os relatorios com tanta subpagina e cache nos relatorios.

Alguem teria alguma dica?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts