SqStat - мониторинг пользовательской активности Squid

SqStat осуществляет мониторинг пользовательской активности в Squid, работает по протоколу cachemgr

Версии ПО на момент написания заметки:

  • sqstat: 1.20
  • squid: 3.3.8

Качаем тут: http://samm.kiev.ua/sqstat/

Разворачиваем в папку веб-сервера

Если стоит Apache - не забываем установить поддержку PHP

# apt-get install libapache2-mod-php5

Правим конфиг Apache /etc/apache2/sites-enabled/000-default.conf:

<Directory "/var/www/sqstat">
    DirectoryIndex sqstat.php
    order deny,allow
    allow from 192.168.0.1/24
</Directory>

Настраиваем Squid:

Вносим дополнения в squid.conf

acl manager proto cache_object
acl webserver src 192.168.0.1
http_access allow webserver manager

Настраиваем SqStat, файл /sqstat/config.inc.php:

$squidhost[0]="192.168.0.1";
$squidport[0]=3128;
$cachemgr_passwd[0]="";
$resolveip[0]=true;

Взято отсюда: http://kidun.ru/index.php/component/content/article?id=165

После обновления Squid до версии 3.2 внезапно перестал работать мониторинг пользовательской активности SqStat. Несмотря на то, что в конфигурации прописан корректно доступ к списку manager, sqstat упорно не видел ответа от сервиса Squid, выдавая следующую ошибку:

SqStat error
Error (1): Cannot get data. Server answered: HTTP/1.1 200 OK

Требуется наложения патча. Что он делает:

  • Меняет HTTP/1.0 на HTTP/1.1
  • Изменяет формат получаемых данных
  • Время отображается в 24-х часовом формате
  • Отображает скорость в Kb/s

107c107
<               if($raw[0]!="HTTP/1.0 200 OK"){
---
>               if($raw[0]!="HTTP/1.1 200 OK"){
131,132c131,132
<                                       if(substr($v,0,5)=="peer:") $parsed["con"][$connection]["peer"]=substr($v,6);
<                                       if(substr($v,0,3)=="me:") $parsed["con"][$connection]["me"]=substr($v,4);
---
>                                       if(substr($v,0,7)=="remote:") $parsed["con"][$connection]["remote"]=substr($v,8);
>                                       if(substr($v,0,6)=="local:") $parsed["con"][$connection]["local"]=substr($v,7);
178c178
<                       $ip=substr($v["peer"],0,strpos($v["peer"],":"));
---
>                       $ip=substr($v["remote"],0,strpos($v["remote"],":"));
189c189
<                               $ip=ip2long(substr($v["peer"],0,strpos($v["peer"],":")));
---
>                               $ip=ip2long(substr($v["remote"],0,strpos($v["remote"],":")));
209c209
<               'Auto refresh: <input name="refresh" type="text" size="4" value="'.$refresh.'"/> sec. <input type="submit" value="Update"/> <input name="stop" type="submit" value="Stop"/> Created at: <tt>'.date("h:i:s d/m/Y").'</tt><br/>'.
---
>               'Auto refresh: <input name="refresh" type="text" size="4" value="'.$refresh.'"/> sec. <input type="submit" value="Update"/> <input name="stop" type="submit" value="Stop"/> Created at: <tt>'.date("H:i:s d/m/Y").'</tt><br/>'.
253c253
<                                                       $curr_speed = ($con['bytes'] - $was_size) / 1024 / $delta;
---
>                                                       $curr_speed = ($con['bytes'] - $was_size) / 1024*8 / $delta;
256c256
<                                               $curr_speed = $con['bytes'] / 1024;
---
>                                               $curr_speed = $con['bytes'] / 1024*8;
260c260
<                                       $avg_speed = $con['bytes'] / 1024;
---
>                                       $avg_speed = $con['bytes'] / 1024*8;

Скачать файлом: sqstat_squid_3.3.8.patch

Применить патч:

# patch sqstat.class.php sqstat_squid_3.3.8.patch

  • software/squid/squid-sqstat.txt
  • Последнее изменение: 2017/05/09 15:34
  • (внешнее изменение)