Free-SA, Squid и FreeBSD. Считаем Internet-траффик

Июнь, 22nd 2009
Рубрика: *NIX
Подписаться на комментарии по RSS

Проблема учета использования 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

# 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"

Пример файла преобразования имен /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

  1. 2009-10-12 в 12:29:52 | Толик

    Замечательно! Спасибо!

  2. 2009-10-13 в 17:29:55 | Елена

    Весь день в поиске.. Но лучше поздно, чем никогда! Спс.

  3. 2009-10-23 в 09:54:53 | Владимир Малкин

    Сенкс за пост, а ведь это тема :) В мемориз однозначно, пригодится! :)

  4. 2009-11-08 в 05:56:58 | Смирнов

    Кажется, это подойдет.

  5. 2010-07-23 в 11:31:14 | Anton

    Добрый день

    Скажите пожалуйста, а написаный вами скрипт рабочий на 100%

  6. 2010-07-23 в 11:48:27 | dre@mer

    Вполне. Работает уже третий год :) проверяйте только пути для bash

  7. 2010-10-04 в 16:57:04 | Winston Wolf

    как free-sa добавить в репозиторий убунты?

  8. 2012-03-25 в 16:36:23 | amrullo]]>avatar]]>

    Для его работа нужен ли server apache ??? Как его запустит ???

  9. 2012-03-25 в 22:26:23 | dre@mer]]>avatar]]>

    Для работы необходим web-сервер, не обязательно Apache, хотя лично у меня работает именно он.

    Не понятен вопрос о том кого запустить... ФОБОС-ГРУНТ вот не получилось :)

  10. 2012-03-25 в 23:02:46 | amrullo]]>avatar]]>

    Какой веб-сервер у тебя ?? Я установил Free-sa но не знаю как проверит. OS у меня Freebsd

  11. 2014-01-14 в 18:10:52 | Евгений

    Что может быть? не работает free-sa, просто в браузере появляется спискок файлов из папки /var/www/free-sa

  12. 2014-01-14 в 22:17:10 | dre@mer]]>avatar]]>

    Просто у вас не правильно настроен apache. Вообще не плохо бы увидеть конфиг апача, если он у вас в качестве web-сервера используется.

  13. 2014-01-15 в 16:21:03 | Аноним

    Все, заработало.Теперь другая проблема,

    Ввожу команду

    free-sa -d 15.01.2014-15.01.2014

    и ошибка

    SAERROR: [LoadUsertab] Incorrect file format

    Файл Usertab существует в этой же папке, там одна запись через один пробел.

comments powered by HyperComments
Без регистрации
ваш комментарий будет опубликован после проверки
Регистрация на сайте

На указанный адрес будет отправлено письмо с кодом активации. Вы можете настроить собственный профиль и стать активным участником или автором.