Visualizando acessos dos usuários em tempo real no Squid

Publicado por Pedro Pereira em 17/06/2009

[ Hits: 15.037 ]

Blog: http://www.pedropereira.net

 


Visualizando acessos dos usuários em tempo real no Squid



O link na empresa em que trabalho é um pouco limitado e sempre algum usuário acaba abusando um pouco e deixando o acesso mais lento para todos os outros.

Sempre tive dificuldades em conseguir rastrear quem está abusando do link (com o iptraf é possível, mas é um pouco complicado e não é muito exato). Buscando no Google, encontrei o SQStat.

Este script mostra em uma página PHP todos os acessos que estão acontecendo em tempo real e também permite que você configure um tempo para atualização automática da página.

A instalação dele é absurdamente simples:

Primeiro faça o download da versão mais recente no site. Quando escrevi essa dica o link era: sqstat-1.20.tar.gz

Coloque este arquivo no root do servidor web da máquina com o proxy e extraia o arquivo:

# tar xzvf sqstat-1.20.tar.gz

Mude o nome do diretório para sqstat (apenas para facilitar o acesso no navegador, isto é opcional).

Renomeie o arquivo config.inc.php.defaults para config.inc.php;

Edite o arquivo config.inc.php:
  • em "$squidhost[0]=" coloque 127.0.0.1 (se o host que você for monitorar for o host onde você instalou o SQStat);
  • em "$squidport[0]=" coloque a porta onde o Squid está escutando no host;
  • em "$resolveip[0]=" coloque true para que o SQStat resolva os nomes dos hosts;
  • em "$group_by[0]=" você pode colocar "host" se não utilizar autenticação no Squid, o que mostrará os IPs dos clientes; você também pode colocar "username" se utilizar autenticação, assim todas as conexões mostradas na página serão agrupadas por nome de usuário ao invés de host.

Agora é necessário configurar o Squid para que o SQStat consiga analisar os dados. Faça o seguinte no seu squid.conf:

acl manager proto cache_object
acl webserver src 10.0.0.1/255.255.255.255
http_access allow manager webserver
http_access deny manager

Na linha "acl webserver ... ", substitua "10.0.0.1" pelo IP do servidor web que exibirá a página do SQStat.

Reinicie o Squid.

Pronto! O SQStat já está instalado e configurado. Para acessá-lo abra seu navegador e digite:

http://ip-do-servidor-web/sqstat/sqstat.php

Você também pode monitorar mais de um proxy utilizando o mesmo servidor web. Copie o bloco de configuração do host que configuramos acima e substitua os "[0]" por "[1]" para outro host. Para um terceiro, você deveria colocar "[2]" e assim por diante.

Espero que ajude a todos vocês!

[]'s
Pedro
www.pedropereira.net

Outras dicas deste autor

Instalar o Firefox 3.5 no Ubuntu 9.04

OpenFire - Chat corporativo de modo fácil!

Comparando arquivos com o vimdiff

Obtendo acesso a hosts internos de uma rede remota com SSH

Como bloquear o Skype

Leitura recomendada

Falha de plugin no Chromium - Ubuntu 10.10

Discador pppoe no Slackware 10.2

Axel: alternativa ao wget

Ajustando o wvdial para conexão com modem 3G no Linux

Análise de tráfego e estatísticas com network probe

  

Comentários
[1] Comentário enviado por gesousa em 17/06/2009 - 10:21h

Qual a diferença dele para o sarg?

ele é mais rápido do que o tail -f /var/log/squid/access.log ?




[2] Comentário enviado por pogo em 17/06/2009 - 12:45h

gesousa,

O SARG e o SQStat possuem finalidades diferentes. O SARG lê e armazena todos os acessos para gerar relatórios HTML sobre eles. Não é em tempo real.

O SQStat, além de fornecer algumas informações a mais, mostra os acessos no segundo em que eles acontecem. Permitindo que você tome uma ação imediata se algum usuário estiver abusando da banda, por exemplo.

Se ele é mais rápido que o tail -f /var/log/squid/access.log eu não sei, mas que é 1000 vezes mais amigável, isso com certeza absoluta =)

[]'s

Pedro

[3] Comentário enviado por doomk em 17/06/2009 - 17:51h

cara... essa ferramenta é maravilinda ! =)))

testei aqui na empresa e o treco dedura mesmo quem está consumindo banda...

vai mais uma dica, pra quem não tem autenticação no squid, como o meu caso, e quer ter visualizado os nomes em vez dos IPs, é só jogar um txt com os ips e nomes e descomentar a linha $hosts_file[0]="hosts.txt" que ele substitui.

show de bola.


Parabéns.

[4] Comentário enviado por rafagavioes em 18/06/2009 - 01:17h

achei muito legal companheiro.
Parabéns e obrigado. Estou usando e aprovo! nota 10

[5] Comentário enviado por edcomrocha em 19/06/2009 - 20:47h

Show de bola, aqui esta rodando bem....

Só tenho uma duvida.

Como faço pra criar o arquivo de hosts.txt?
Criei o arquivo aqui descomentei a linha que nosso amigo doomk disse mais quando rodo o sqstat ele da um erro estranho e nao vai...

Alguma dica dos colegas

Falow abraços

[6] Comentário enviado por pogo em 19/06/2009 - 22:44h

edcomrocha,

Poste o erro aqui para ficar mais fácil ajudá-lo! Mas talvez, será que você não inverteu a ordem das coisas? Digo, trocou a ordem do IP com o nome do host.

[]'s

Pedro

[7] Comentário enviado por doomk em 22/06/2009 - 08:13h

O arquivo hosts.txt, tem que estar semelhante ao exemplo abaixo:


192.168.0.2 fulado
192.168.0.3 beltrano
192.168.0.4 ze
192.168.0.5 joao


na linha: $hosts_file[0]="hosts.txt", é bom configurar o caminho completo do arquivo, exemplo:


$hosts_file[0]="/etc/httpd/conf/hosts.txt"



com isso vai funfar belezinha.


abrç.

[8] Comentário enviado por WAkky em 30/06/2009 - 14:02h

Galera,

Tou recebendo o seguinte erro:

SqStat error

Error (110): Connection timed out


Valew,

[9] Comentário enviado por pogo em 30/06/2009 - 14:33h

WAkky,

Talvez seu firewall esteja bloqueando alguma coisa. Dê uma olhada se as portas necessárias estão liberadas.

[]'s

Pedro

[10] Comentário enviado por wakky em 30/06/2009 - 17:26h

@Pedro

Vou tentar... mas creio ter feito um flush no Firewall...

[]´s

Wakky

[11] Comentário enviado por Wakky em 01/07/2009 - 06:12h

@pogo

continua nao funcionando...

[12] Comentário enviado por halleybr em 19/08/2010 - 10:57h

Amigos,
quando coloco 127.0.0.1 no squid e no sqstat, ele da erro de "connection refused"
E quando coloco o ip local mesmo no caso 192.168.0.30 ele da "connection timeout"
alguem poderia me ajudar????

To precisando muito disso.... abração amigos

[13] Comentário enviado por juninhomaumau em 23/09/2010 - 14:34h

Boa tarde amigos, oq que acontece é o seguinte: segui o tutorial ao pé da letra, muito bem detalhado e tal, porém qd vou acessar o servidor de uma maquina da rede tipo http://ipdoservidor/sqstat/sqstat.php ele abre no navegador como se seu fosse fazer download deste arquivo, perguntando se eu quero ABRIR OU SALVAR!! este arquivo sqstat.php!!

Sendo assim n consigo vizualizar o log!!

Agradeço desde já pela boa vontade dos Senhores!!

DEBIAN - SQUID

Edmilson

[14] Comentário enviado por hayttle em 29/10/2010 - 23:23h

Olá, muito bom o post, mas se eu tiver uma rede grande com mais de 100 máquinas em DHCP, vou ter que inserir todos os nomes das máquina e IPs no hosts.txt?

Sds,
Hayttle

[15] Comentário enviado por pogo em 30/10/2010 - 09:51h

hayttle,

O ideal é que você utilize o Squid com autenticação para que assim os nomes de usuários apareçam na página, e não o endereço IP. Assim, não importa quantas máquinas ou usuários você tem nada rede: você não vai ter muito trabalho.

[]'s
Pedro Pereira

[16] Comentário enviado por juniorrox em 22/11/2010 - 17:33h

Rapaziada!

Instalei e criei a regras como falaram mas ocorre este erro abaixo toda vez que tento acessar.

SqStat error
Error (1): Cannot get data. Server answered: HTTP/1.0 403 Forbidden

Alguem saberia me dizer o que esta causando este problema.

Hoje utilizo meu squid integrado com AD, pode ser isso?

Abs.
Luiz


[17] Comentário enviado por carlos1984 em 15/02/2013 - 13:50h

Pessoal Boa Tarde!

O meu esta apresentando o seguinte erro abaixo, vcs poderiam me ajudar? Obrigado.

errno=4; $squidclass->errstr="Error in the configuration file.". 'Please, specify $squidhost['.$config.']/$squidport['.$config.']'; $squidclass->showError(); exit(4); } for($i=0;$ierrno=4; $squidclass->errstr="Error in the configuration file.
". '"group_by" can be only "username" or "host"'; $squidclass->showError(); exit(4); } } else{ $squidclass->errno=4; $squidclass->errstr="Configuration file not found.". "Please copy file config.inc.php.defauts to config.inc.php and edit configuration settings."; $squidclass->showError(); exit(4); } // loading hosts file $hosts_array=array(); if(isset($hosts_file)){ if(is_file($hosts_file)){ $handle = @fopen($hosts_file, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 4096); unset($matches); if(preg_match('/^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})[ \t]+(.+)$/i',$buffer,$matches)){ $hosts_array[$matches[1]]=$matches[2]; } } fclose($handle); } else { $squidclass->errno=4; $squidclass->errstr="Hosts file not found.". "Cant read '$hosts_file'."; $squidclass->showError(); exit(4); } } else { $squidclass->errno=4; $squidclass->errstr="Hosts file not found.". "Cant read '$hosts_file'."; $squidclass->showError(); exit(4); } } if(!$squidclass->connect($squidhost,$squidport)) { $squidclass->showError(); exit(1); } $data=$squidclass->makeQuery($cachemgr_passwd); if($data==false){ $squidclass->showError(); exit(2); } // print_r($data); if(!isset($use_js)) $use_js=true; echo $squidclass->makeHtmlReport($data,$resolveip,$hosts_array,$use_js); ?>

[18] Comentário enviado por stringuetta em 10/01/2014 - 12:05h

Estou com o mesmo problema mencionado acima pelo "carlos1984" alguém já descobriu a solução?

[19] Comentário enviado por stringuetta em 10/01/2014 - 17:40h

Para o problema acima é necessário somente configurar o apache para o php no meu caso foi so instalar o "php5 libapache2-mod-php5" porém aqui ele não esta separando por host ele traz somente os logs abaixo de um host 0.0.0.0

Alguém ja passou por isso ?

[20] Comentário enviado por mspaint em 16/10/2015 - 07:33h

Pessoal lembre de verificar se o apache tem o mod_php instalado antes de sair acessando o Sqstat.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts