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