Наверняка каждый системный администратор рано или поздно сталкивается с необходимостью сбора статистики использования сети интернет пользователями. Подобная информация позволит предоставлять руководству информацию о том, кто куда ходил и чем занимался.
Лично мне это ни когда не было интересно, однако ситуации и требования бывают разные. В своей практике я всегда опирался на unix подобные ОС, в данном случае все действия будут проводится на Ubuntu Server 14.04.
В статье подразумевается, что Squid3 у вас уже установлен и весь http трафик идет через него, лично я использую его в режиме прозрачного прокси, что позволяет избавиться от необходимости бегать и настраивать каждую рабочую станцию отдельно.
Если сквид у вас уже работает, это значит, что логи о использовании сети у вас уже есть, осталось только получить инструмент, который в удобной форме будет их представлять.
Подобных инструментов множество, однако я остановил свой выбор на SARG (Squid Analysis Report Generator).
Установка Веб-сервера
Перед тем, как начать установку и настройку SARG, давайте установим простенький веб-сервер, он необходим для того, чтобы иметь возможность просматривать сгенерированные «саржем» HTML отчеты. Для этих целей можно использовать и Apache, однако, если он не установлен можно обойтись более простым решением — lighttpd.
sudo apt-get install lighttpd
После установки необходимых пакетов lighttpd готов работать, для проверки наберем в адресной строке браузера адрес сервера. Если все сделано правильно, должна открыться стандартная страница, которая поздравит вас с тем, что веб-сервер работает.
Однако есть нюанс — конфиг из коробки настроен таким образом, что веб-сервер будет обрабатывать запросы со всех доступных ему интерфейсов, но нам оно надо?
Давайте ограничим его работу только локальной сетью, открываем файл конфигурации:
sudo nano /etc/lighttpd/lighttpd.conf
Найдем и раскомментируем строку:
server.bind = "10.0.0.1", где 10.0.0.1 адрес для примера, меняем на свой.
Перезагрузим свежеустановленный веб-сервер для вступления изменений в силу:
sudo /etc/init.d/lighttpd restart
Установка и настройка SARG
Пришла очередь Sarg, произведем его установку следующей командой:
sudo apt-get install sarg
Sarg как и lighttpd готов сразу начать работу, однако стандартная конфигурация меня несколько не устраивает, отмечу, что конфиг саржа позволяет вносить множество изменений в его внешний вид.
Настройка SARG производится в файле — /etc/sarg/sarg.conf. Откроем его для внесения правок:
sudo nano /etc/sarg/sarg.conf
Вносим требуемые изменения:
language Russian_UTF-8 graphs yes graph_days_bytes_bar_color orange output_dir /var/www/squid-reports charset UTF-8
Далее в конфиге ищем и комментируем строку:
#site_user_time_date_type table
Запустить генерацию отчетов Sarg можно следующей командой (заодно давайте проверим как он работает):
sudo /usr/bin/sarg
В зависимости от объема логов, время требуемое для генерации отчетов может значительно меняться, у меня это заняло около 5 секунд.
Обращаю внимание на то, что в зависимости от версии сквида путь до логов меняется, это одна из причин, по которой логи могут не преобразовываться саржем в наглядные списки.
Для того, чтобы все заработало пришлось дописать в этой строке "3" (тройку). access_log /var/log/squid3/access.log
После сообщения о завершении генерации отчетов открываем адрес:
http://10.0.0.1/squid-reports, должна открыться примерно такая страница
SARG сгенерирует отчеты исходя их всех доступных ему логов, готовый отчет будет содержать в себе следующую информацию:
- Детализация по пользователям;
- Детализация по одному конкретному пользователю (список сайтов, время,дата и количество обращений к
адресу); - Список наиболее популярных сайтов;
- Потребляемый трафик;
- Общее количество трафика потребляемое за сутки, неделю, месяц;
- Сводку за день, неделю, месяц.
Настраиваем Cron SARG
После проведенных нами действий Sarg уже работает должным образом, однако я преследую еще одну цель — автоматизацию.
Ранее я писал, что SARG может генерировать отчеты по заданным интервалам, однако этот функционал в нем работает крайне плохо, у меня в свое время он генерировал только ежедневные отчеты, но наотрез отказывался формировать еженедельные и месячные. Решение оказалось очень простым.
Настроим Cron для SARG, выполняем команду:
sudo nano /etc/crontab
Вносим расписание:
00 08-18 * * * root sarg-reports today
00 22 * * * root sarg-reports daily
30 22 * * 0 root sarg-reports weekly
30 23 1 * * root sarg-reports monthly
Теперь крон настроен таким образом, что будет формировать отчеты каждый час в течении рабочего дня (с 8:00 до 18:00), в 22:00 генерируется полный отчет за сутки, по воскресеньям генерируется отчет за неделю и наконец 1го числа каждого месяца будет появляться отчет о пользовании интернетом за месяц.
Далее по очереди настроим каждый файл (до внесения изменений в них, отчеты за длительные промежутки времени у меня не формировались).
Генерирование отчетов за день (если файла нет, то создаем):
sudo nano /etc/cron.daily/sarg
Мои значения:
if [ -x /usr/sbin/sarg-reports ]; then /usr/sbin/sarg-reports daily fi
Или
sarg -d day-1 -w /tmp/sarg.daily -o /var/www/squid-reports/Daily /var/log/squid3/access.log*
Крон отвечающий за генерирование отчетов за неделю:
sudo nano /etc/cron.weekly/sarg
Значения по умолчанию:
#!/bin/sh if [ -x /usr/sbin/sarg-reports ]; then /usr/sbin/sarg-reports weekly fi
Вписываем эти строки (старые удаляем, на всякий случай сделайте бекап)
#!/bin/sh sarg -d week-1 -w /tmp/sarg.weekly -o /var/www/squid-reports/Weekly /var/log/squid3/access.log*
Генерирование отчетов за месяц:
sudo nano /etc/cron.monthly/sarg
Значения по умолчанию:
#!/bin/sh if [ -x /usr/sbin/sarg-reports ]; then /usr/sbin/sarg-reports monthly fi
Вписываем эти строки (старые удаляем, на всякий случай сделайте бекап)
#!/bin/sh sarg -d month-1 -w /tmp/sarg.monthly -o /var/www/squid-reports/Monthly /var/log/squid3/access.log*
chmod 755 /etc/cron.daily/sarg /etc/cron.weekly/sarg /etc/cron.monthly/sarg
Обращаю внимание на то, что в задаче строго прописаны пути, адаптируйте их под свои нужды при надобности.
Для запуска создания отчетов вручную используем следующие команды:
- sudo sarg
- sudo /etc/cron.daily/sarg
- sudo /etc/cron.weekly/sarg
- sudo /etc/cron.monthly/sarg
В случае, если для ротации логов squid используется logrotate обязательно проверьте охватываемый период времени в
sudo nano /etc/logrotate.d/squid3
UPD после некоторого времени перешел на lightsquid. Установка к слову очень простая, все требуемое выполняет.