Проблема учета использования Internet встает почти перед каждой, даже самой небольшой организацией, особенно, когда интернет не безлимитный, да и оценить насколько сотрудники заняты работой, а не сидят в рабочее время с умным видом в социальных сетях, на музыкальных или порно сайтах, стоит тоже не на последнем месте.
Существует сножество анализаторов журналов прокси-серверов как под Windows, так под *NIX. Squid, на сегодняшний день наиболее гибок из свободных прокси-серверов в настройке и богат по возможностям, хотя и у него есть недостатки. Имея большой опыт организации корпоративного доступа в Интернет, и опробовав разные анализаторы, для себя остановился на двух готовых решениях Free-SA и SARG + одном самописном. Используются для различных решений.
В основном ставлю заказчикам Free-SA, какие у него преимущества?:
Сначала обновим порты, далее идем в директорию с портами и устанавливаемпрограмму. Опции конфигурирования при сборке во 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=
#Формировать отчет "Запрет на прокси" (код 403). Попадают только
#URL блокированные, при помощи списков контроля доступа (ACL).
pdn=
#Формировать отчет "Запрет на сайтах" (код 403).
sdn=
#Формировать отчет "Метод прямого соединения CONNECT".
cct=
#Формировать отчет "Метод отправки данных PUT/POST".
pst=
#Формировать отчет "Закачки". Закачки определяются согласно файла
#расширений, указываемого через опцию downloads.
dld=
#Создавать отчет на каждого пользователя, в котором будут
#полные URL посещенных пользователем ссылок. Общее время
#генерации отчета за период увеличивается.
fullurl=
#отображаться только URL посещенных пользователем сайтов.
users
=
#Отправить текстовый отчет "Пользователи" на 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 в отчете.
#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.
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 |
-
v
$curr_month &
gt
; /var/squid/reports/index.html &&
/var/squid/reports/index
/usr/
local
/bin/
free
-sa