O SARG é a ferramenta que iremos analisar e que foi desenvolvida pelo
brasileiro Pedro Orso (http://web.onda.com.br/~orso) e que tem como função
gerar relatórios de análise de acesso dos usuários a sites
através do Squid.
Trata-se de uma ferramenta essencial para todos os administratores que desejam
obter maiores informações sobre como os usuários estão
se comportando em sua rede.
Dentro dos relatórios normalmente existem informações como:
Usuários, IPs, Bytes,
Sites e Periodicidade nos mesmos.
O SARG pode ser obtido no seguinte endereço: http://web.onda.com.br/orso/sarg.html.
Depois de baixado, descompacte-o utilizando o comando:
# tar -xzvf sarg-1.3-PRE2.tar.gz
Em seguida, no diretório em que o programa foi descompactado, digite:
# ./configure
# make
# make install
Por padrão, o SARG é instalado no diretório /usr/local/sarg.
Neste lcoal é que
encontraremos o arquivo de configuração sarg.conf. Vamos comentar
as opções mais importantes
para seu funcionamento:
# TAG: language
#
#
#language English
Esta opção permite escolher o idioma do SARG: tire a # da linha
#language English e mude para
language Portuguese.
Nesta opção nada precisa ser modificado, pois trata-se do tipo
de relatório de acordo com o tipo
de acesso ao site. Existem as seguintes opções:
Topsites - Sites mais visitados por conexão e bytes trafegados.
Sites_users - Mostra quais os usuários acessam um site específico.
Users_sites - Mostra sites acessados por um usuário específico.
Date_time - Bytes utilizados/trafegados por dia e hora.
Denied - Mostra tentativas de acesso a sites proibidos pelas ACLs.
Auth_failures - Mostra tentativas de autenticação (erro na digitação
de senha de autenticação)
falhas de um usuário.
Esta opção é muito importante, ja que com ela podemos
visualizar como está o tráfego de nosso site.
Agora esta pronto seu SARG, lembra-se de instalar adequadamente seu apache,
e outra dica seria
interessante adicionar no crontab para que diariamente o SARG gerasse um novo
relatório de acesso.
Para isto adcione ao contrab a seguinte linha de comando:
0 * * * * * /usr/bin/sarg
Com isto teremos sempre nosso sistema de relatórios atualizados.
Elaborado por William
Referências: Squid - Configurando o proxy para Linux (Antonio Marcelo)
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://sarg.sourceforge.net/
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:
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:
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:
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!
Artigo Original: http://www.devin.com.br/eitch/sarg/
Hugo Cisneiros,
Comentários
Somente usuários registrados podem escrever comentários. Por favor faça o login ou registre-se.