Установка Sarg для Squid на Ubuntu Server

Установка 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

Для проверки работы запускаем скрипт создания отчета еще раз, в новом списке вместо айпи адресов будут красоваться указанные вами имена.

Установка Sarg для Squid на Ubuntu Server
3 (60%) 2 votes

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *