Visualizando acessos dos usuários em tempo real no Squid

Publicado por Pedro Pereira em 17/06/2009

[ Hits: 13.595 ]

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

Obtendo acesso a hosts internos de uma rede remota com SSH

Instalar o Firefox 3.5 no Ubuntu 9.04

OpenFire - Chat corporativo de modo fácil!

Como bloquear o Skype

Autalizando o PORTS do FreeBSD com o portupgrade

Leitura recomendada

Navegador/Suíte SeaMonkey em toda e qualquer distro

Linha de comando pra pegar seu IP

Controle de banda (Qos) no modem Dlink DSL 2640T

Ubuntu Linux com placa wireless Atheros

Disco virtual do GMail pelo Firefox

  

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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts