Free-SA, Squid и FreeBSD. Считаем Internet-траффик
Проблема учета использования Internet встает почти перед каждой, даже самой небольшой организацией, особенно, когда интернет не безлимитный, да и оценить насколько сотрудники заняты работой, а не сидят в рабочее время с умным видом в социальных сетях, на музыкальных или порно сайтах, стоит тоже не на последнем месте.
Существует сножество анализаторов журналов прокси-серверов как под Windows, так под *NIX. Squid, на сегодняшний день наиболее гибок из свободных прокси-серверов в настройке и богат по возможностям, хотя и у него есть недостатки. Имея большой опыт организации корпоративного доступа в Интернет, и опробовав разные анализаторы, для себя остановился на двух готовых решениях Free-SA и SARG + одном самописном. Используются для различных решений.
В основном ставлю заказчикам Free-SA. Какие же у него преимущества?
- более внятная архитектура и код (C/HTML/CSS);
- скорость формирования отчетов в 7-20 раз выше по сравнению с SARG (7х — для файла access.log объемом в 50 Мб, 20x — для 1 Гб);
- поддержка различных форматов файлов журналов (Squid, CLF, Postfix, QMail, CommuniGate Pro);
- дополнительные отчеты (в т.ч. для оценки эффективности сервера);
- изменяемые «на-лету» темы оформления. возможность делать свои, при наличии даже начальных знаний CSS
Сначала обновим порты, далее идем в директорию с портами и устанавливаем
программу. Опции конфигурирования при сборке во FreeBSD отсутствуют.
cd /usr/ports/www/free-sa/ && make install clean
Настройка программы:
vi /usr/local/etc/free-sa/free-sa.conf
[code lang=bash]
# Sample configuration file for free-sa(1)
# copy to /usr/local/etc/free-sa/free-sa.conf
#########
# FILES #
#########
#полный путь к анализируемому журналу сервера
log="/var/squid/logs/access.log"
#полный путь к файлу преобразования имен
#(заменяет логин или IP пользователя на его имя)
usertab="/usr/local/etc/squid/users"
#Полный путь к файлу, содержащему расширения для отчета "Закачки".
#В комплекте идет несколько образцов таких файлов, включая образцы
#с расширениями аудио, видео, исполняемых файлов.
#downloads="/usr/local/etc/free-sa/downloads.sample"
#local_filter=""
#global_filter=""
###############
# DIRECTORIES #
###############
#корневая директория для размещения отчетов
targetdir="/var/squid/reports"
#Полный путь к директории, где Free-SA хранит рабочие файлы
#во время генерации отчета. При старте Free-SA очищает
#полностью данный каталог
tmpdir="/var/cache/free-sa"
#####################
# REPORTS SELECTION #
#####################
ts="true" #Формировать отчет Top Sites.
#Формировать отчет "Ошибки аутентификации на прокси" (код 407).
paf="false"
#Формировать отчет "Ошибки аутентификации на сайтах" (код 401).
saf="false"
#Формировать отчет "Запрет на прокси" (код 403). Попадают только
#URL блокированные, при помощи списков контроля доступа (ACL).
pdn="true"
#Формировать отчет "Запрет на сайтах" (код 403).
sdn="false"
#Формировать отчет "Метод прямого соединения CONNECT".
cct="true"
#Формировать отчет "Метод отправки данных PUT/POST".
pst="false"
#Формировать отчет "Закачки". Закачки определяются согласно файла
#расширений, указываемого через опцию downloads.
dld="false"
#Создавать отчет на каждого пользователя, в котором будут
#полные URL посещенных пользователем ссылок. Общее время
#генерации отчета за период увеличивается.
fullurl="true"
#Создавать отчет на каждого пользователя, в котором будут
#отображаться только URL посещенных пользователем сайтов.
users="true"
#Отправить текстовый отчет "Пользователи" на e-mail.
#Если в качестве e-mail '-', отчет выводится на stdout.
#email=""
##################
# REPORTS LIMITS #
##################
#Количество отображаемых URL на одного пользователя в отчетах.
#0 - отсутствие лимита. По умолчанию: 50.
#paf_limit="50"
#saf_limit="50"
#pdn_limit="50"
#sdn_limit="50"
#cct_limit="50"
#pst_limit="50"
#dld_limit="50"
#lcf_limit="50"
#Ограничить количество символов видимой части URL в отчете.
#0 - отсутствие лимита. По умолчанию: 50.
#url_limit="50"
#ограничение кол-ва сайтов в отчете top sites.
#0 - отсутствие лимита (по умолчанию).
ts_limit=100
#Интервал обновления страницы для отчета реального времени
#(free-sa.cgi),указывается в миллисекундах.
#по умолчанию: 5000 (5 секунд)
#rtr_timeout="5000"
####################
# OTHER PARAMETERS #
####################
#Имя отчета за период. Отображается в списке всех отчетов
#за период. (по умолчанию: полный путь к файлу конфигурации)
#name="free-sa.conf"
#Пропускать ошибочные записи в журнале. По умолчанию Free-SA
#останавливает анализ журнала и начнет генерировать отчеты.
#skip_errors="false"
#autorecords="5"
#Формат журнала. 0 - формат журнала Squid.
logformat="0"
#Создать отчет с полной информацией. В отчет включаются попадания
#в кэш, локальный трафик и реальный трафик.
#fulltraffic="false"
#Отображать в отчетах имена пользователей, когда в журнале есть и
#имена пользователей и IP адреса.
#inameuser="true"
#Отображать справа индикаторы соответствующие присутствие ссылок в
#paf/saf/и.т.п. отчетах к пользователям, URL сайтов и полным URL.
#indicators="true"
#Удалять старые файлы при создании нового файла отчетов.
#1 - означает удалять все старые отчеты, диапазон дат которых
#соответствует диапазону нового отчета с точностью в 1 день.
#2 - означает удалять все старые отчеты, диапазон дат которых лежит
#внутри диапазона нового отчета с точностью в 1 секунду.
#Удаление происходит после создания нового отчета или при запуске
#Free-SA с опцией -F.
overwrite="1"
#Преобразовывать IP адрес в имя. Опция замедляет создание отчета.
#resolveip="false"
#Отображение информации о Free-SA внизу страницы каждого отчета
#showinfo="true"
#Префикс для адреса сайта.
#site=""
#Картинка или логотип, отображаемая наверху страницы каждого отчета
#logo=""
#Переключает локаль при разборе опций командной строки
locale="ru_RU.KOI8-R"
#Удалять отчеты, старше указанного времени в секундах. Можно
#использовать ключевые слова: year, quarter, month, week, day.
#Удаление происходит после создания нового отчета или при запуске
#Free-SA с опцией -F.
rotate="quarter"
#Единицы измерения, используемые в файле отчета (байты, килобайты,
#магабайты и т. д.).
#"v" - адаптивный механизм: 1 байт отобразится как 1, а 1024 - 1к.
#(по-умолчанию: байты)
divisor="M"
[/code]
Пример файла преобразования имен /usr/local/etc/squid/users.
admin Администратор ivanov_i Иванов Иван 172.16.140.11 Трофимова Людмила Николаевна
Для ежедневного формирования отчетов добавим в cron такую строку:
55 23 * * * /usr/local/etc/squid/stat.sh > /dev/null 2>&1
Вот содержимое самого файла stat.sh. Он занимается формированием отчета и чистит лишние запси за текущий месяц. Сам Free-SA бывает не работает в этом плане.
#!/usr/local/bin/bash
curr_month=`date +%m.%Y`
for i in $(ls /var/squid/reports/ | grep $curr_month ); do rm -r /var/squid/reports/$i; done
mv /var/squid/reports/index.html" /var/squid/reports/index" &&
cat /var/squid/reports/index | grep -v $curr_month > /var/squid/reports/index.html &&
rm /var/squid/reports/index
/usr/local/bin/free-sa
Комментариев: 13
Замечательно! Спасибо!
Весь день в поиске.. Но лучше поздно, чем никогда! Спс.
Сенкс за пост, а ведь это тема :) В мемориз однозначно, пригодится! :)
Кажется, это подойдет.
Добрый день
Скажите пожалуйста, а написаный вами скрипт рабочий на 100%
Вполне. Работает уже третий год :) проверяйте только пути для bash
как free-sa добавить в репозиторий убунты?
Для его работа нужен ли server apache ??? Как его запустит ???
Для работы необходим web-сервер, не обязательно Apache, хотя лично у меня работает именно он.
Не понятен вопрос о том кого запустить... ФОБОС-ГРУНТ вот не получилось :)
Какой веб-сервер у тебя ?? Я установил Free-sa но не знаю как проверит. OS у меня Freebsd
Что может быть? не работает free-sa, просто в браузере появляется спискок файлов из папки /var/www/free-sa
Просто у вас не правильно настроен apache. Вообще не плохо бы увидеть конфиг апача, если он у вас в качестве web-сервера используется.
Все, заработало.Теперь другая проблема,
Ввожу команду
free-sa -d 15.01.2014-15.01.2014
и ошибка
SAERROR: [LoadUsertab] Incorrect file format
Файл Usertab существует в этой же папке, там одна запись через один пробел.