Установка Sarg для Squid на Ubuntu
Пакет Sarg генерирует отчеты из логов Squid в читабельный формат
html, а далее нам просто нужно открыть страничку с данными отчетами в
нашем браузере.
Уверен что каждому сисадмину рано или поздно приходится сталкиваться с
необходимостью сбора статистики использования сети интернет
пользователями. Подобная информация позволит предоставлять руководству
информацию о том, кто куда ходил и чем занимался.
И так имеем операционную систему Ubuntu Server 16.04 с установленными пакетами Squid и Apache. Весь http трафик идет через наш squid, также настроен режим прозрачного прокси, что позволяет избавиться от необходимости бегать и настраивать каждую рабочую станцию отдельно.
Если сквид у вас уже работает, это значит, что логи о использовании
сети у вас уже есть, осталось только получить инструмент, который в
удобной форме будет их представлять.
Подобных инструментов множество, но сегодня мы остановимся на пакете SARG (Squid Analysis Report Generator).
Установка SARG
Установим Sarg следующей командой:
sudo apt-get install sarg
Sarg сразу готов начать работу, однако стандартная конфигурация меня несколько не устраивает, отмечу, что конфиг саржа позволяет вносить множество изменений в его внешний вид.
Настройка SARG
Настройка SARG производится в файле /etc/sarg/sarg.conf
. Но сперва сделаем резервную копию и уберем из файла все закомментированные строки и пробелы:
cp sarg.conf sarg.conf.bak grep -v '^#' sarg.conf.bak | sed '/^$/d' > sarg.conf
Теперь откроем sarg.conf для внесения правок:
sudo nano /etc/sarg/sarg.conf
Вносим требуемые изменения:
graphs yes # Добавляем данную строчку в файл для построения графиков graph_days_bytes_bar_color orange # Добавляем данную строчку в файл для построения графиков в цвети
output_dir /var/www/http/squid-reports # Изменить на свой путь куда будут скидываться отчеты charset UTF-8 # Задаем кодировку Latin1 или UTF-8 resolve_ip yes user_ip yes
Запустить генерацию отчетов Sarg можно следующей командой (заодно давайте проверим как он работает):
sudo /usr/bin/sarg
В зависимости от объема логов, время требуемое для генерации отчетов может значительно меняться, у меня это заняло около 3 секунд.
Обращаю внимание на то, что в зависимости от версии сквида путь до
логов меняется, это одна из причин, по которой логи могут не
преобразовываться sarg’ем в наглядные списки.
Для того, чтобы все заработало пришлось дописать в этой строке «3» (тройку) после слова squid (в старых версии squid).
access_log /var/log/squid3/access.log
После сообщения о завершении генерации отчетов открываем адрес:
http://IP-адресс_вашего_сервера/squid-reports
, должна открыться примерно такая страница
SARG сгенерирует отчеты исходя их всех доступных ему логов, готовый отчет будет содержать в себе следующую информацию:
- Детализация по пользователям;
- Детализация по одному конкретному пользователю (список сайтов, время,дата и количество обращений к
адресу); - Список наиболее популярных сайтов;
- Потребляемый трафик;
- Общее количество трафика потребляемое за сутки, неделю, месяц;
- Сводку за день, неделю, месяц.
Настраиваем Cron SARG
После проведенных нами действий Sarg уже работает должным образом, однако я преследую еще одну цель — автоматизацию.
Ранее я писал, что SARG может генерировать отчеты по заданным
интервалам, однако этот функционал в нем работает крайне плохо, у меня в
свое время он генерировал только ежедневные отчеты, но наотрез
отказывался формировать еженедельные и месячные. Решение оказалось очень
простым.
Настроим Cron для SARG, выполняем команду:
sudo nano /etc/crontab
Вносим расписание:
00 07-23 * * * root sarg-reports today 59 23 * * * root sarg-reports daily 59 23 * * 0 root sarg-reports weekly 59 23 1 * * root sarg-reports monthly
Теперь крон настроен таким образом, что будет формировать отчеты каждый час в течении рабочего дня (с 7:00 до 23:00), в 23:59 генерируется полный отчет за сутки, по воскресеньям генерируется отчет за неделю и наконец 1-го числа каждого месяца будет появляться отчет о пользовании интернетом за месяц.
Далее можно посмотреть каждый файл для генерации отчетов, а также настроить каждый файл если вдруг отчеты за длительные промежутки времени у Вас не формируются.
Генерирование отчетов за день (если файла нет, то создаем):
sudo nano /etc/cron.daily/sarg
Значения по умолчанию:
#!/bin/sh if [ -x /usr/sbin/sarg-reports ]; then /usr/sbin/sarg-reports daily fi
Можно изменить так:
#!/bin/sh sarg -d day-1 -w /tmp/sarg.daily -o /var/www/squid-reports/Daily /var/log/squid/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/squid/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/squid/access.log*
Теперь установим файлам права на выполнение:
chmod 755 /etc/cron.daily/sarg /etc/cron.weekly/sarg /etc/cron.monthly/sarg
Обращаю внимание на то, что в задаче строго прописаны пути, адаптируйте их под свои нужды при надобности.
Для запуска создания отчетов вручную используем следующие команды:
sudo sarg-report today sudo sarg-report daily sudo sarg-report weekly sudo sarg-report monthly
Редактируем файл sarg-report.conf
Значения по умолчанию:
SARG=/usr/bin/sarg CONFIG=/etc/sarg/sarg.conf HTMLOUT=/var/lib/sarg PAGETITLE="Access Reports on $(hostname)" LOGOIMG=/sarg/images/sarg.png LOGOLINK="http://$(hostname)/" DAILY=Daily WEEKLY=Weekly MONTHLY=Monthly EXCLUDELOG1="SARG: No records found" EXCLUDELOG2="SARG: End"
Здесь нас интересуют строки HTMLOUT, LOGOIMG и LOGOLINK. Отредактируем их например так:
HTMLOUT
— Путь куда будут скидываться репорты, в нашем случае /var/www/html/squid-reports
LOGOIMG
— Ваша картинка на главной страницы с репортами.
LOGOLINK
— Ссылка на Вашей картинке (куда переходим при нажатии на картинке)
SARG=/usr/bin/sarg CONFIG=/etc/sarg/sarg.conf HTMLOUT=/var/www/html/squid-reports PAGETITLE="Access Reports on $(hostname)" LOGOIMG=images/ns.jpg LOGOLINK="IP_адрес_вашего_сервера/squid-reports" #LOGOLINK="http://$(hostname)/" DAILY=Daily WEEKLY=Weekly MONTHLY=Monthly EXCLUDELOG1="SARG: No records found" EXCLUDELOG2="SARG: End"
Что бы Ваша картинка появилась, её надо закинуть по пути куда у Вас скидываются репорты, в моем случае они по пути /var/www/html/squid-report/images/
Устанавливаем IP адресам имена
И так вместо непонятных для вашего руководства IP адресов, можно будет увидеть имена тех за кем закреплен определенный IP адрес.
В файле конфигурации саржа /etc/sarg/sarg.conf
по умолчанию уже стоит значение usertab
если же нет то раскомментируем строку и сохраняем изменения
usertab /etc/sarg/usertab
Открываем сам юзертаб:
sudo nano /etc/sarg/usertab
Вносим в него дополнения по аналогии с примером:
192.168.0.100 KATYA 192.168.0.101 LERA 192.168.0.102 IGOR 192.168.0.103 MARAT
Для проверки работы запускаем скрипт создания отчета еще раз, в новом списке вместо айпи адресов будут красоваться указанные вами имена.