При переводе пользователей на прокси-сервер Squid3 хотелось бы видеть информацию о количестве работающих через прокси пользователей на данный конкретный момент времени. Для этого есть ряд инструментов, один из которых мы рассмотрим в данной заметке. Речь пойдёт о скрипте SqStat, позволяющем в режиме реального времени просматривать активные сессии пользователей прокси через веб-интерфейс.
На данный момент последняя доступная версия скрипта SqStat 1.20 может быть загружена с адреса samm.kiev.ua – sqstat. В одной из прошлых заметок нами был установлен web-сервер Apache2 с модулем php5, который здесь-то нам и пригодится.
Итак, скачиваем SqStat, распаковываем и копируем в каталог веб-сервера:
mkdir /home/user/downloads cd downloads wget http://samm.kiev.ua/sqstat/sqstat-1.20.tar.gz tar xvfz sqstat-1.20.tar.gz sudo mkdir /var/www/html/sqstat sudo cp -R sqstat-1.20/* /var/www/html/sqstat/ rm -fr /home/user/downloads/sqstat-1.20 ls -la /var/www/html/sqstat/ total 48 drwxr-xr-x 3 root root 4096 Jun 11 17:25 . drwxr-xr-x 4 root root 4096 Jun 11 17:25 .. -rw-r--r-- 1 root root 871 Jun 11 17:25 arrow.gif -rw-r--r-- 1 root root 981 Jun 11 17:25 config.inc.php.defaults drwxr-xr-x 2 root root 4096 Jun 11 17:25 docs -rw-r--r-- 1 root root 11324 Jun 11 17:25 sqstat.class.php -rw-r--r-- 1 root root 1170 Jun 11 17:25 sqstat.css -rw-r--r-- 1 root root 2708 Jun 11 17:25 sqstat.php -rw-r--r-- 1 root root 4355 Jun 11 17:25 zhabascript.js
Копируем файл config.inc.php.defaults в файл config.inc.php и открываем получившийся файл на редактирование с подсветкой синтаксиса в стиле php
sudo cp /var/www/html/sqstat/config.inc.php.defaults /var/www/html/sqstat/config.inc.php sudo nano -Y php /var/www/html/sqstat/config.inc.php
Привожу для примера только раскомментированные строки файла:
$use_js=true; DEFINE("SQSTAT_SHOWLEN",60); $squidhost[0]="kom-ad01-squid.holding.com"; $squidport[0]=3128; $cachemgr_passwd[0]="StrOnG_PaZsZw0rD"; $resolveip[0]=false; $group_by[0]="username";
Здесь мы указали имя и порт прокси, пароль к менеджеру кэша Squid (Cachemgr), и поменяли порядок группировки с группировки по ip (используется по умолчанию) на группировку по пользователям.
***
Так как SqStat использует данные менеджера кэша Squid, в конфигурационном файле squid.conf должны присутствовать соответствующие настройки для доступности Cachemgr. В используемой у нас версии Squid 3.3.8 в конфигурационном файле squid.conf отдельно выполнять объявление Cachemgr в виде ACL не требуется (как это было в ранних версиях Squid), поэтому всё что нам нужно сделать, это разрешить доступ к Cachemgr и убедиться в том, что пароль доступа указанный в параметре cachemgr_passwd и в файле config.inc.php совпадают. Фрагмент squid.conf:
... # ACLs all, manager, localhost, and to_localhost are predefined. acl localnet src 10.0.0.0/8 # RFC1918 possible internal network ... http_access allow manager localhost http_access allow manager localnet http_access deny manager
...
cachemgr_passwd StrOnG_PaZsZw0rD all ...
***
Теперь попробуем открыть URL http://kom-ad01-squid.holding.com/sqstat/sqstat.php
До версии Squid 3.2 проделанных настроек было достаточно, но так как мы используем версию 3.3, - столкнёмся с ошибкой при попытке доступа к указанной веб-странице:
SqStat error Error (1): Cannot get data. Server answered: HTTP/1.1 200 OK
Для решения этой проблемы воспользуемся патчем предложенным в заметке Руслан Кидун - Чиним мониторинг реального времени SqStat после обновления Squid до версии 3.2.
Создаём пустой файл sqstat_squid32.patch, открываем его на редактирование…
sudo touch /var/www/html/sqstat/sqstat_squid32.patch sudo nano -Y sh /var/www/html/sqstat/sqstat_squid32.patch
…и наполняем его с содержимым:
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"],":")));
Патчим предварительно сохранив оригинальный файл sqstat.class.php:
cd /var/www/html/sqstat/ sudo cp sqstat.class.php sqstat.class.php.default sudo patch sqstat.class.php sqstat_squid32.patch patching file sqstat.class.php
Обновляем страницу и смотрим что получилось:
Оформление веб-страницы SqStat можно при желании подправить отредактировав оригинальный файл CSS, как всегда предварительно сохранив исходный файл.
sudo cp sqstat.css sqstat.css.default sudo nano -Y css sqstat.css
При желании доступ к SqStat можно ограничить установив в Apache2 пароль на доступ к веб-каталогу /sqstat/.
***
Предыдущие части цикла заметок:
Часть 1. Установка ОС на ВМ Hyper-V Gen2
Часть 2. Настройка диска для кэша Squid
Часть 3. Конфигурация DNS , NTP и установка Squid
Часть 4. Конфигурация Kerberos и NTLM
Часть 5. Конфигурация Squid 3
Часть 6. Настройка Proxy Auto Configuration (WPAD)
Часть 7. Кастомизация страниц ошибок
Следующие части цикла заметок:
Добрый день! При попытке войти на страницу мониторинга выдаёт следующее:
SqStat error
Error (1): Cannot get data. Server answered: HTTP/1.1 403 Forbidden
Сверяйте cachemgr_passwd в config.inc.php и squid.conf. Проверяйте наличие "http_access allow manager ..." в squid.conf. В статье всё написано.
Ошибся с описание локальной сети acl localnet src 192.168.0.0/24
Теперь всё ок. Отличная статья, спасибо!
Здравствуйте! Такая проблема к странице отчета могут подключится все http://testproxe/sqstat/sqstat.php. Как ограничить доступ к отчетом только админамм???
Это можно сделать средствами Apache. Самый простой пример здесь http://www.lissyara.su/articles/freebsd/programms/squid_sams/#sqstat. Помимо этого, Apache можно интегрировать с доменной аутентификацией, но это уже будет посложнее.
Спасибо. А еще такой вопрос. По вашему мнению каким способом лучше резать скорость для пользователей???
Не могу сказать. Не изучал эту тему.
Когда настраивал Sqstat выдовало постоянно ошибку разнес запись
http_access allow manager localhost
на две
http_access allow manager
http_access allow localhost
Все заработало. Это не критичное изменение?
Это разные вещи, то что было и то, что стало. Читайте документацию по директиве http_access, чтобы понять что вы сделали.
Добрый день,
Все сделал как указано - на выходе получаю следующую ошибку -
SqStat error
Error (0): php_network_getaddresses: getaddrinfo failed: Name or service not known
Как проверить работоспособность squid?
Я вижу что access.log пустой.
wpad.dat работает - в браузере открывается и парсером настройки проверил - все верно.
Тестирую на своей машине - должен идти через проксю, но похоже не идет.
Я же не должен проксю прописывать в браузере напрямую?
доброго времени суток, после установки и настройки SQStat (как указанно выше) при открытии в браузере сразу выдается ошибка ERROR 111 ... Проверил весь конфиг, и ни как не могу найти причину. Надежда на Вас,
Добрый день. Решил помочь с вопросом. Такая же была ошибка, но помимо этой статьи я еще воспользовался статьей https://habrahabr.ru/post/56886/. Можно сказать я объединил их, сделал как у автора данной статьи и позаимствовал пару настроек из статьи на хабре и все заработало.
Уважаемые, подтолкните в нужном направлении. Суть вопроса - два компика у меня, один на винде другой на убунте оба ходят в мир через сквид при создании отчета в лайтсквиде вижу обе машинки, а вот в сквид стате только машинку на винде ... подскажите с чем может быть связано данное поведение.
уточню - статистику выдает только о том компе с которого я просматриваю
разобрался ... посещение сайта крайне мимолетно для сквидстата и фиксирует он походу только на момент подключения или если долго качать что-то. В связи с чем крайне сложно отследить все 100500 вкладок которые на данный момент открыты у пользователя да и хттпс не фиксирует, хотя тут наверно есть костыль для того чтоб исправить ситуацию
Обратная ссылка: Настройка прокси сервера Squid 3.3 на Ubuntu Server 14.04 LTS. Часть 4. Конфигурация Kerberos и NTLM | Блог IT-KB /
Обратная ссылка: Настройка прокси сервера Squid 3.3 на Ubuntu Server 14.04 LTS. Часть 9. Конфигурация LightSquid | Блог IT-KB /
Отличный цикл статей.
Здравствуйте! Во-первых, спасибо за отличный цикл статей по Squid.
Вопрос у меня по SQStat. Все работает замечательно, но у одного и того же пользователя отображается одновременно две статистики, первая - по открытым веб-сайтам, причем имя учетки там - с регистром букв как в AD, например PavlovAS, и другая - судя по адресам, представляющая собой открытые соединения Скайпа, но имя учетки там почему-то уже в нижнем регистре, например pavlovas. Видимо, из-за этой разницы в регистрах SQStat не показывает все эти соединения как соединения одного пользователя, и разделяет на 2 разных учетки. Почему такое происходит, и как в SQStat убрать зависимость от регистра, и возможно ли это вообще?
SQUID настраивал по вашим статьям.
Здравствуйте, Александр.
Предположу, что у Вас пользователь в браузере аутентифицирется на прокси прозрачно через NTLM или Kerberos, поэтому учётка видна в реальном регистре, а вторая сессия из Skype c иным регистром, так как имя пользователя так прописано в явном виде в настройках самого клиента Skype.
То что SqStat не понимает, что это одно и тоже имя возможно баг, а возможно и умышленная фича, так как в Linux-системах регистр имеет значение.
SqStat это всё-таки скрипт, и никто Вам не мешает подпилить его под свои Windows-ориентированные нужды. Если у Вас для этого нет навыков/терпения/времени, то можно отыскать тех, кто за это возьмётся. Например, на GitHub c пол-пинка можно найти такой форк https://github.com/lorf/sqstat
Можете попробовать написать товарищу Issue и, возможно, он Вам поможет.
Разумней было бы сделать какой-то параметр, который бы определял работу скрипта - без учёта регистра имён и с учётом.
Я понял, спасибо. Да, в браузере, по-видимому, прозрачно, но в Скайпе я специально ничего не прописывал, настройки там стоят по умолчанию.
Буду, значит, пытаться перепиливать скрипт...
Добрый день. Все настроил, все работает, но почему то скорость у всех кроме нескольких ПК пишет =0 по всем колонкам. Почему такое может быть?
Доброго времени суток.
Что нужно прописать в патче, чтобы формат времени стал отображаться как 24
П.С. То что нашёл патчиться с ошибками https://wiki.rtzra.ru/software/squid/squid-sqstat