Gerando relatórios do Squid com o SARG
Neste tutorial você poderá aprender como gerar relatórios completos de acesso ao Squid com o programa SARG, que apropósito é muito bom e feito por um brasileiro :)
O SARG (Squid Analysis Report Generator) é uma ferramenta muito boa desenvolvida por um brasileiro que permite à você ver para “onde” seus usuários estão indo na Internet através da análise do arquivo de log “access.log” do famoso proxy Squid. O poder da ferramenta é incrível, ele pode dizer para você quais usuários acessaram quais sites, em que horas, quantos bytes foram baixados, quantas conexões foram feitas, relatórios de sites mais acessados, usuários que mais acessam, relatório de sites negados, falha de autenticação, entre outros. A gerência que você pode obter com isso é muito boa, principalmente para as empresas que querem economizar o uso da Internet.
Vamos aqui instalar e configurar o SARG para ele gerar relatórios diários de acesso do Squid. Para isso precisaremos de um Squid já configurado e rodando (o que não vou cobrir neste tutorial em si), que gere os logs de acesso no arquivo access.log. Se você desconhece isso, vá ao arquivo de configuração do Squid e veja se existe a linha abaixo. Se não existir, adicione:
cache_access_log /var/log/squid/access.log
Geralmente o arquivo de configuração do Squid está em “/etc/squid/squid.conf”. A linha acima especifica que o arquivo de log deverá estar em “/var/log/squid/access.log”, lembre-se disso para posteriormente informarmos ao SARG. Se você teve que adicionar essa linha no Squid, reinicie-o (ou de um ‘reload’ no serviço) para que as mudanças sejam efetivadas.
Agora vamos ao que interessa. Você precisará baixar o SARG através do endereço:
- SARG - http://web.onda.com.br/orso/
No caso deste tutorial, peguei o codigo-fonte da versão 1.2.2. Você poderá notar também que há links para pacotes pré-compilados, e caso você tenha uma distribuição suportada, você pode pegar os pacotes e instalar através do gerenciador de pacotes. Mas como peguei o código-fonte, vamos compilar o programa:
# tar zpfx sarg-1.2.2.tar.gz # cd sarg-1.2.2 # ./configure --enable-sysconfdir=/etc/sarg [...configurando a compilação...] # make [...compilando...] # make install
Fiz o procedimento como root porque quis, na verdade o root só é requerido no passo “make install”, porque ele instala o programa “sarg” no /usr/bin e o diretório de configuração em “/etc/sarg”. Isso tudo pode ser escolhido através do comando “./configure”, e para você saber de suas opções, digite “./configure –help”.
Agora que o programa foi compilado e instalado, precisaremos configurar para ele rodar. Escolhemos na compilação o diretório /etc/sarg para armazenar os arquivos de configuração, então vamos agora trabalhar nele.
# pwd /etc/sarg # ls exclude_codes languages/ sarg.conf
Veja quais os arquivos padrões que ele cria. Como nossa instalação vai ser um pouco mais complexa, teremos de criar alguns arquivos mais, e organizar os já existentes:
# mv sarg.conf default.conf # touch exclude.hosts # touch exclude.strings # touch exclude.users # ls default.conf exclude.hosts exclude.users exclude_codes exclude.strings languages/
Uma breve explicação sobre os arquivos que criamos:
- exclude.hosts - Aqui cada linha terá um domínio/URL que não será mostrada no relatório. Útil para você colocar, por exemplos, endereços de download da Intranet que passam pelo Squid, mas não gastam banda de Internet nenhuma.
- exclude.strings - Se alguma linha do arquivo de log conter uma das strings deste arquivo (cada string por linha), esta linha do log será ignorada do relatório. Com isso você pode filtrar qualquer coisa do relatório.
- exclude.users - Os usuários que estiverem neste arquivo (separados por linha) não serão incluídos no relatório.
Agora vamos ter que criar um arquivo de configuração para o SARG. Como eu disse anteriormente, este arquivo de configuração será para um relatório diário. Colocaremos essa configuração no arquivo “/etc/sarg/sarg-dia.conf”. Abaixo segue um arquivo de configuração comentado, para posterior análise:
# Relatório Squid por: Dia # Língua Utilizada, coloquei em inglês aqui, mas será tudo em português # do Brasil, veja o porquê depois. language English # Arquivo de LOG do Squid, lembra? Na sua configuração do Squid tem # falando onde se encontra este arquivo. access_log /var/log/squid/access.log # Título da página HTML title "Relatório Diário do Proxy" # --- Visual --- # Aqui tem várias variáveis que você pode mudar para deixar o # visual do relatório (cores, fontes, etc) de acordo com o que # você quiser. Aqui estou usando os valores padrões. font_face Arial header_color darkblue header_bgcolor blanchedalmond header_font_size -1 background_color white text_color black text_bgcolor beige title_color green #--- Fim do Visual --- # Diretório Temporário temporary_dir /tmp # Diretório de Saída para as página de relatório, ou seja, # onde o relatório vai ficar para consulta via um navegador. # "Geralmente" esse diretório tem que estar dentro do root do seu # servidor Web :D output_dir /var/www/html/squid-report/dia # Qual critério de ordem para a seção "TopUser?" USER/CONNECT/BYTES/TIME # Isso irá organizar o relatório na seção de TopUsers, colocando os usuários # que mais baixaram bytes primeiro. topuser_sort_field BYTES reverse # Qual critério de ordem para a seção "User"? SITE/CONNECT/BYTES/TIME # Isso irá organizar a seção de usuários da mesma forma que o item anterior. user_sort_field BYTES reverse # Arquivo com usuários que não devem estar nos relatórios exclude_users /etc/sarg/exclude.users # Arquivo com hosts que não devem estar nos relatórios exclude_hosts /etc/sarg/exclude.hosts # Formato da data (e=dd/mm/yy, u=mm/dd/yy, w=yy/ww) date_format e # Limite de logs até os antigos serem removidos, quando houver mais # de N relatórios, o mais antigo é automaticamente removido. Aqui # estamos indicando para nunca apagar nada. lastlog 0 # Remover arquivos temporários após o uso? remove_temp_files yes # Gerar o index.html? (only = gera só o index.html principal) index yes # Sobrescrever o relatório se já existe? overwrite_report yes # O que fazer com registros sem usuário? (ignore/ip/everybody) records_without_userid ignore # Usar vírgula ao invés de ponto? use_comma no # Qual a quantidade de sites mais visitados à listar? topsites_num 100 # Qual critério de ordem para o topsites? CONNECT/BYTES A/D # Aqui diz para ordenar os sites mais acessados por utilização de banda, # em forma decrescente. topsites_sort_order BYTES D # Arquivo de códigos HTTP para serem ignorados no relatório exclude_codes /etc/sarg/exclude_codes # Tempo de checkagem max_elapsed 28800000 # -- Tipo de Relatorio a ser gerado -- # + topsites - Mostra o site, conexão e bytes # + sites_users - Mostra que usuários estavam acessando um site # + users_sites - Mostra sites acessados pelo usuário # + date_time - Mostra quantidade de bytes usados por dia e hora # + denied - Mostra todos os sites negados com URL completa # + auth_failures - Mostra falhas de autentificação report_typie topsites users_sites sites_users date_time denied auth_failures site_user_time_date # Exibir URLs completas? (Não recomendado) long_url no # Se alguma linha do access.log conter uma das strings, será ignorada exclude_string /etc/sarg/exclude.strings # Mostrar mensagem de sucesso na geração do relatório no fim? show_successful_message no # Campos para a seçao topusers topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE # Quantidade de usuários para listar no relatório topsites topuser_num 0
O arquivo de configuração em si já explica as configurações para você alterar. Mas também há mais opções disponíveis no programa, você pode ver explicações sobre estas novas configurações no arquivo padrão de configuração, que deixamos como “/etc/sarg/default.conf”.
Sobre a língua utilizada, eu verifiquei um erro que aconteceu comigo, então fiz uma solução simples e rápida pra isso. O que acontece é que mesmo mudando a variável language, o programa fica gerando relatórios em Inglês. Se acontecer isso com você, faça o seguinte:
# cd /etc/sarg/languages # mv English English.old # ln -s Portuguese English
O que fiz aqui foi fazer um link simbólico do English para o Portuguese, para que o programa pegue o conteúdo do arquivo Portuguese e não do English original. Repare que eu também fiz um backup do arquivo English, e lembre-se sempre disso: faça sempre backups! Tente nunca apagar algo.
Existe também outro erro em relação à isto, só que este é mais sério. O arquivo de tradução “Portuguese” está incompleto, e por isso ele não gera os links para os relatórios de falhas de autenticação e de sites mais acessados. Para consertar isso, edite o arquivo “/etc/sarg/languages/Portuguese” e adicione as seguintes linhas no final do arquivo:
"Negado" "Topsites"
Assim a tradução não irá faltar, e os links estarão bonitinhos no lugar :) Mas agora falta rodar o programa para gerar o nosso relatório! Vamos supor que hoje seja o dia 05/02/2003 (epa, essa é a data em que estou escrevendo isso :P) e você queira gerar o que até agora acessaram no seu proxy. Execute isto:
# /usr/sbin/sarg -f /etc/sarg/sarg-dia.conf -d 05/02/2003-05/02/2003
E espere… Dependendo da quantidade de acessos ao seu proxy, e o tamanho do arquivo de log, o processo poderá demorar. Quando terminar, acesse o diretório que você configurou o “output” no seu servidor Web para ver o relatório na íntegra. Mas e agora, teremos que ficar rodando este comando todo dia pra ficar gerando? Não! :P Para isso que serve o crontab, vamos configurá-lo para rodar este comando todo dia às 01:01 da manhã.
Nota: Várias distribuições já vem com um crontab diário configurado. Ou seja, todos os arquivos executáveis que estiverem dentro do diretório “/etc/cron.daily” serão executados em um certo horário (geralmente 4 da manhã de todo dia).
Se sua distribuição tiver este diretório, crie o arquivo “/etc/cron.daily/sarg-dia”. Caso ela não tenha, crie um arquivo chamado “/usr/local/bin/sarg-dia”. Coloque o seguinte conteúdo em um desses arquivos:
#!/bin/bash HOJE=$(date --date "1 day ago" +%d/%m/%Y) /usr/sbin/sarg -f /etc/sarg/sarg-dia.conf -d $HOJE-$HOJE exit 0
Se o seu caso foi de criar o arquivo “/usr/local/bin/sarg-dia”, então você terá que configurar também o crontab para rodar este programa às 01:01 da manhã como dissemos. Adicione a seguinte linha no arquivo “/etc/crontab”:
01 1 * * * root /usr/local/bin/sarg-dia
E não se esqueça de dar permissão de executável para o script que criamos:
# chmod +x /usr/local/bin/sarg-dia (ou) # chmod +x /etc/cron.daily/sarg-dia
Pronto. Com isso o crontab irá rodar o nosso script todo dia de madrugada. Para quem não entendeu o script, ele primeiro pega a data de 1 dia antes e coloca no formato DIA/MES/ANO, como queríamos para passar pro SARG, então ele chama e gera o relatório do dia anterior… Legal não?
Para cada dia, o SARG gera um diretório diferente, especificado por data. Experimente gerar os relatórios e verificar no diretório de saída (output), vai aparecer algo como:
# ls 01Feb2003-01Feb2003 03Feb2003-03Feb2003 index.html 02Feb2003-02Feb2003 04Feb2003-04Feb2003
Pronto! Você já pode ser um usuário feliz deste excelente gerador de relatórios :) Se você entendeu direitinho este tutorial, verá que é fácil fazer também relatórios semanais e mensais através dos scripts e crontab. Mas aí vai de exercício pra você.
Aviso: Os relatórios geram muitas páginas, e dependendo do relatório, pode gastar muito e muito espaço em disco, então tome cuidado. Por exemplo, aqui o dia 03 de Fevereiro deu 103MB de relatório. Mas ao compactar este diretório para .tar.bz2, consegui reduzir para 1.2MB :) Faça os relatórios, compacte-os, vá juntando e gravando em um CD, assim você poderá ter um histórico completo de quem acessou o que durante uma certa época. Boa sorte!
Gostou?
Imprimir esta página
Leia também:
- ProFTPd: Como utilizar um chroot e acessar diretórios disponíevis em vários lugares do sistema?
- Novas Seções
- Montando estatísticas com o Webalizer
- Limitando usuários com o PAM
- Manipulação de Usuários




05 de abr de 2008 em 10:06 am
O autor está de parabéns. O Tutorial está simples e eficaz, bem explicado, de forma que fica fácil entender.
Apenas uma observação para o Link de download do SARG, que não funcionou comigo mas, isto não é problema.
Parabéns, e Abração.
Jamilson, Serra - ES.
10 de abr de 2008 em 9:02 am
Bom dia Jamilsom.
Eu tenho o Squid rodando em um servidor Windows 2003 server, eu consigo rodar o sarg nesse squid?
Desde já obrigado pela atenção.
11 de abr de 2008 em 7:08 pm
Muito bem. Segui os passos e correu tudo direitinho. Infelizmente apaguei o log do squid um pouco antes de implantar o SARG, pois tinha um micro com virus na rede e ele travou o squid de tanto log que gerou. Vou ter que esperar alguns dias para poder ver o SARG funcionando a pleno vapor. O script desta página funcionou muito bem e olha que eu baixei o SARG.2.2.5.
Valeu!
Anselmo - Manaus.
28 de abr de 2008 em 8:46 pm
Amigo,
São pessoas assim como você que ainda me faz acreditar na humanidade.
Obrigado por compartilhar os seus conhecimentos conosco.
Um grande abraço
Airton Almeida
São Luis/Maranhão
30 de abr de 2008 em 2:44 pm
Amigo, esta variavel:
+ sites_users - Mostra que usuários estavam acessando um site
..estes usuarios seriam os do squid,nao é?
Eu fiz aqui como vc falou, mas no relatorio so aparece o IP inves do nome dos usuarios do squid. Precisa configurar alguma coisa no squid tbm?
Grato
04 de mai de 2008 em 9:26 am
Ola,
Vc deve editar o arquivo sarg.usertab e colocar o ip depois o nome.Exemplo:
192.168.0.2 neson.
Espero ter ajudado.
Um abraço
09 de jun de 2008 em 4:56 pm
Olá,
estou com um problema estranho: quando “rodo” o sarg em linha de comando, ele só funciona se eu não especificar a data. Quando uso o parâmetro -d com o intervalo de data, ele percorre o arquivo de log e depois dá a mensagem “No records found”. Já testei diversas opções de formato de data e nada faz ele entender o período que eu quero.
O que será? Minha configuração é um FC4 com kernel 2.6.11-1.1369_FC4smp.
Obrigado.
11 de jun de 2008 em 12:48 pm
No entiendo, en que hablan?
14 de jun de 2008 em 11:11 am
Olá,
estou com um problema, o sarg estava rodando normalmente, quando eu dei o comando pra gerar o relatório ele deu um erro de que não tinha nenhuma entrada, ai tentei de tudo, até eu desinstala-lo, mas agora que tento instalar ele não esta nem configurando as Linguagens nem o sarg.conf la em /etc/squid/
se alguem poder me ajudar eu agradeço desde já!!
20 de jun de 2008 em 5:27 pm
Instalei o Sarg, mas estou com um pequeno problema, não está gerando o relatório executo o comando /usr/sbin/sarg -f /etc/sarg/sarg.conf -d 20062008-20062008 e não dá erro nenhum, mas não gera o arquivo. Será que tem alguma coisa a mais para configurar?
Estou usando no Fedora2 o caminho do Output está configurado tudo certo, mas funciona.
se alguem puder me ajudar ficarei muito grato, pois estou apanhando muito deste sarg
22 de jun de 2008 em 12:16 pm
Roberio Rebeca
20 Jun 2008, 17:27
escreva a data e nao somente o ano. como no tutorial. ex:
# /usr/sbin/sarg -f /etc/sarg/sarg-dia.conf -d 05/02/2003-05/02/2003
abraços
11 de jul de 2008 em 12:20 pm
cara parabens… fiz aki uma configuração e fuincionou certinho… sem nenhum erro..
nota 10
Obrigado!!!
22 de jul de 2008 em 9:16 am
Gostaria de saber como fazer para atualizar ele em hora/hora
25 de jul de 2008 em 5:30 pm
Olá Pessoal, ainda estou apanhando do Sarg, pois naõ consigo gerar os relatório de maneira nenhuma, já garimpei na internet inteira e não consigo fazer funcionar, o meu script está igual o do tutorial coloco a data conforme o FALK falou na resposta do dia 22/06/2008, mas não funciona, será que vou ter que desinstalar e tentar tudo denovo?
Alguem poderiame ajudar remover este sarg e instalar novamente.
31 de jul de 2008 em 2:34 pm
Tudo instalado e funcionando… valeu. Mas surgiu uma discussão. Os dados abaixo do IN no campo IN-CACHE-OUT, é o que estava em cache e os dados abaixo do OUT é o que foi baixado da internet, correto? Ou é o inverso?
Obrigado
01 de ago de 2008 em 1:03 pm
Dicas excelentes.
Meus parabéns!!!
Tenho uma dúvida: o que seria o usuário “tcp_miss_200″ no relatório do sarg?
Obrigado!
10 de ago de 2008 em 12:08 pm
TCP MISS significa que ele nao encontrou determinado arquivo no cache e vai precisar baixar do site… HIT significa que encontrou… na memoria cache funciona dessa forma tambem. HIT E MISS.
13 de ago de 2008 em 4:10 pm
PARABÉNS!!!
Realmente é um artigo de qualidade com boa didática.
Wilson
Ps: Seria interessante passar a configuração do apache para o usuário visualizar o relatório.
25 de ago de 2008 em 2:52 pm
Srs. tenho o Suse 10.3 fiz os procedimentos acima não deu nenhum erro de instalação do SARG, o squid já esta funcionando na boa, porém ao tentar gerar o relatório ele me diz que não há registro, mas ao ver o access.log tá cheio de acessos…. fiz a geração do relatório da forma como o colega diz …e nada? alguma dica a respeito disso!
15 de set de 2008 em 12:41 pm
não consigo fazer o sarg mostra relatorio por usuario ou por ip, tudo está instalado e funcionado, qual seria a linha de comamndo cocorreta? obrigado
07 de out de 2008 em 9:11 am
mano esse script eo melhor mesmo funcionou bem aqui e essa regra de usuário nos comentários e uma mão na roda obrigado por compartilha o maior tesouro da raça humana o conhecimento
20 de out de 2008 em 8:21 am
o link de download está quebrado, alguém sabe onde posso baixar o sarg?
21 de out de 2008 em 1:50 pm
Boa tarde. Também achei muito legal, bem explicado. Só que não estou conseguindo visualisar os relatórios no I.E. na rede local. Tenho o apache2 instalado, mas não sei se precisa de alguma configuração especial para rodar o SARG. Se alguém puder me ajudar, ficaria grato.
21 de out de 2008 em 8:24 pm
Olá Colega, quero registrar o meus parabéns pelo tutorial, até agora só tinha achado informaçoes fragmentadas, mas o seu tutorial esta completinho, Parabéns!!!
23 de out de 2008 em 6:31 am
Estou com uma duvida referente a cron.
ela está chamando o arquivo sar-dia.conf, mais o que deve ter neste arquivo? #!/bin/bash
HOJE=$(date –date “1 day ago” +%d/%m/%Y)
/usr/sbin/sarg -f /etc/sarg/”sarg-dia.conf” -d $HOJE-$HOJE
exit 0
Vocês pode me ajudar?
30 de out de 2008 em 11:38 am
Parabéns, fiz uso deste tutorial e obtive 100% de sucesso muito obrigado meu amigo, Deus lhe recompense por compartilhar seu conhecimento conosco!
02 de nov de 2008 em 11:11 am
Não consigo baixar o arquivo pelo site http://web.onda.com.br/orso/, tem algum outro???????? valeu.
02 de nov de 2008 em 11:27 am
explica melhor a parte de instalar, por onde instalo e como instalo o sarg, pelo prompt de comando? como? grato
03 de nov de 2008 em 8:45 am
bom dia amigo no meu caso uso debian 4 etch eu tenho que cria o sarg-dia no etc/cron.daily
e tambem no etc/squid/sarg-dia porque no debian o sarg fica dentro do diretorio do squid e nao entendi se eu tenho que muda a hora ou nao porque no meu caso ja tem o diretorio etc/cron.daily e se for o caso de mudar onde eu mudo a hora e gerar os relatorios
05 de nov de 2008 em 6:58 am
Bom dia pessoal. A minha dúvida é a seguinte: tenho uma gama de usuários. Tenho que gerar um relatório só de alguns… Tipo, há o exclude_users que exclui usuários, mas não haveria um tipo que de arquivo que apenas o que eu colocar lá iram aparecer no relatório? Grato
05 de nov de 2008 em 7:06 am
Bom dia pessoal, segui os passas desse tutorial porém ao executar o sarg-dia ele me devolve o seguinte:
SARG: Records in file: 17393, reading: 100.00%
SARG: Nao ha registros
SARG: Fim
So que na hora que faço a atualização a pagina não aparece nada… o que está acontecendo.
Abraço
05 de nov de 2008 em 8:40 am
Pessoal, pesquisei muito e fiz uma baita de uma volta. Poderia ter lido por inteiro o sarg.conf…
Achei essa TAG:
# TAG: include_users “user1:user2:…:usern”
# Reports will be generated only for listed users.
#
#include_users none
A partir dela poderei incluir somente usuários que quero que apareçam no relatório. Só para compartilhar com o pessoal.
Abraços
07 de nov de 2008 em 3:04 pm
Luiz, no sarg-dia, experimenta utilizar os caminhos no comando ao invés do sarg.conf. Já me safei uma vez assim.