Анализируем трафик Squid с помощью Sarg
В этой статье мы разобрали как развернуть прокси-сервер Squid 3.5.19 на Ubuntu 14.04 Trusty Tahr . В этой статье мы разберем как развернуть анализатор логов прокси-сервера Squid и просмотр сформированных с помощью Sarg логов в удобном для нас виде через Web браузер.
Разворачивать я буду Sarg на той же машине где и стоит Squid, ОС используемая Ubuntu 14.04 Trusty Tahr. Устанавливать Sarg будем из репозитариев Ubuntu. На момент написания статьи в репозитария доступна 2.3.6 версия Sarg.
Первым делом обновляем систему до актуального состояния
sudo apt-get update && sudo apt-get upgrade
Устанавливаем Sarg
sudo apt-get install sarg
После установки выполним конфигурацию Sarg. Выполним резервное копирование файла конфигурации.
sudo cp /etc/sarg/sarg.conf /etc/sarg/sarg.conf.backup
Я делаю конфигурацию на чистом файле, мне так удобней. Но на всякий случай у нас есть бекап оригинального файла конфигурации. Удаляю оригинальный файл конфигурации.
sudo rm /etc/sarg/sarg.conf
И создаю пустой файл конфигурации
sudo nano /etc/sarg/sarg.conf
Вот мой итоговый конфиг Sarg
# Заголовок title "Squid - Анализ использования интернета" # Кодировка отчета charset UTF-8 # Путь к логам SQUID’а. access_log /var/log/squid/access.log # Путь хранения временных файлов temporary_dir /tmp # Путь размещения отчётов output_dir /var/www/sarg # Путь к исключаемым из отчета пользователей exclude_users /etc/sarg/exclude_users # Путь к исключаемым из отчета хостов exclude_hosts /etc/sarg/exclude_hosts # Путь к исключаемым HTTP-кодам exclude_codes /etc/sarg/exclude_codes # Путь к подключаемому CSS-файлу external_css_file /sarg/default.css # Перезаписываем отчёты overwrite_report yes # Очищаем временную папку remove_temp_files yes # Формат даты в отчете: e (European=dd/mm/yy), u (American=mm/dd/yy), w (Weekly=yy.ww) date_format e # Преображать IP адреса в DNS имена resolve_ip yes # Использование IP адреса вместо идентификаторов пользователей user_ip yes # Параметры сортировки (A - По порядку, D - В обратном порядке) index_sort_order D # Если нет USERID в access.log (ignore — игнор, ip — записать ip, everybody — вместо userid "everybody") records_without_userid ip # Сортировка ТОП-пользователей (USER CONNECT BYTES TIME) topuser_sort_field CONNECT reverse # Сортировка пользовательского отчета (USER CONNECT BYTES TIME) user_sort_field CONNECT reverse # Кол-во сайтов в ТОП topsites_num 50 # Параметры сортировки (CONNECT / BYTES)(A - По порядку, D - В обратном порядке) topsites_sort_order CONNECT D # ТОП пользователей topuser_num 0 # Список формируемых отчетов report_type topusers topsites sites_users users_sites date_time denied auth_failures site_user_time_date downloads # Отображаем только название домена long_url no # Неограниченное количество отчетов lastlog 0 # Создаем индексную странцу при создании отчета index yes # Тип генерируемого индекса index_tree file # Запятую вместо десятичной точки use_comma yes # При формировании и сортировке ориентир на полученные байты date_time_by bytes # Детальная статистика по завершении создания отчета show_read_statistics yes # Параметры выводимых в отчёте сравнительной активности пользователей topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE # Параметры выводимых в отчёте индивидуальной активности user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE # Расширения скачиваемых файлов download_suffix "zip,arj,bzip,gz,ace,doc,iso,adt,bin,cab,com,dot,drv$,lha,lzh,mdb,mso,ppt,rtf,src,shs,sys,exe,dll,mp3,avi,mpg,mpeg"
Теперь создадим файлы зависимости которые мы указывали в нашем конфигурационном файле.
touch /etc/sarg/exclude_codes touch /etc/sarg/exclude_hosts touch /etc/sarg/exclude_users
[stextbox id=’warning’]exclude_codes — вносим коды из файла логов Squid, которые игнорировать при формировании отчета.
exclude_hosts — вносим IP адреса тех людей которых не хотим отображать в отчете
exclude_users — вносим пользователей который не хотим отображать в отчете[/stextbox]
С установкой Sarg и его настройкой разобрались. Теперь нужно настроить apache чтобы удобно просматривать сформированные отчеты через Web браузер. Если при установке Ubuntu 14.04 вы не указывали устанавливать LAMP сервер, то его нужно установить.
[tip]Подсказка: Для установки LAMP выполним команду:
sudo tasksel install lamp-server
При установке будет запрошен пароль для создания администратора БД MySQL.[/tip]
Первым делом в конфиге apache пропишем имя сервера, дабы он не ругался на его отсутствие.
sudo nano /etc/apache2/apache2.conf
И вписываем в него
ServerName srv-squid
[tip]Заметка: Вместо srv-squid пишите свое название вашей машины[/tip]
Создадим необходимые каталоги
sudo mkdir /var/www/sarg sudo mkdir /var/www/sarg/log
И назначим права на него
sudo chown -R www-data:www-data /var/www/sarg/
Создадим виртуальный хост
sudo nano /etc/apache2/sites-available/sarg.conf
Вписываем следующее
<virtualhost *:80> ServerAdmin webmaster@domain.com ServerName sarg DirectoryIndex index.html DocumentRoot /var/www/sarg/htdocs LogLevel warn ErrorLog /var/www/sarg/log/error.log CustomLog /var/www/sarg/log/access.log combined </virtualhost>
Отредактируем файл настройки виртуальных хостов, открываем файл
sudo nano /etc/apache2/sites-available/000-default.conf
Находим строку
DocumentRoot /var/www/html
и приводим к виду
DocumentRoot /var/www/
Сохраняем и закрываем файл конфигурации Ctrl+O и Ctrl+X
Включаем созданный нами вирутальный хост
sudo a2ensite sarg.conf
И перезапускаем apache
sudo service apache2 reload
Все готово, apache настроен. Теперь запустим создание отчета Sarg и проверим что у нас получилось.
sudo sarg
Открываем браузер и переходим на http://<ip-машины>/sarg. И смотрим что у нас получилось.
Таблица с пользователями Squid, если нажать на IP адрес, то можно увидеть детальную статистику по каждой машине.
Вывод детальной статистике посещений сайтов.
Мы и разобрали как формировать и удобно просматривать отчеты работы Squid через утилиту Sarg.
Теперь немного разберем как создавать ежедневные, еженедельные и ежемесячные отчеты. Для этого случая у Sarg имеется утилита sarg-reports. Первым делом настроим ее. Открываем для правки конфигурационный файл /etc/sarg/sarg-reports.conf
sudo nano /etc/sarg/sarg-reports.conf
Конфиг приводим к виду
SARG=/usr/bin/sarg # Путь к конфигурационному файлу Sarg CONFIG=/etc/sarg/sarg.conf # Путь куда выгружать сформированные отчеты HTMLOUT=/var/www/sarg # Название страницы отчета PAGETITLE="Access Reports $hostname" # путь к изображению логотипа Sarg LOGOIMG=/images/sarg.png # Линк перехода если нажать на логотип LOGOLINK="http://10.7.7.158/sarg" # Ежедневно DAILY=Daily # Еженедельно WEEKLY=Weekly # Ежемесячно MONTHLY=Monthly # Текст ошибок в случае неудачи формирования отчета EXCLUDELOG1="SARG: No records found" EXCLUDELOG2="SARG: End"
По большому счету в данном конфиге нас интересуют только вот эти важные пункты SARG= (путь к исполняемому файлу Sarg), CONFIG= (путь к конфигурационному фалу Sarg), HTMLOUT= (путь куда выгружать сформированные отчеты). Все остальные носят только косметический и информационных характер, не влияющий на процесс формирования отчета.
Если вы хотите что бы в сформированных отчетах посредством sarg-reports было все на русском, то нужно поправить исполняемый файл sarg-reports. Изначально sarg-reports использует системную локаль, а нам нужно чтобы при формировании отчета использовалась та локаль, которая у нас указана в файле /etc/sarg/sarg.conf. А у нас она там указана русская.
Откроем его для редактирования
sudo nano /usr/sbin/sarg-reports
Находим строку
export LC_ALL=C
Комментируем ее
#export LC_ALL=C
Сохраняем и закрываем файл конфигурации Ctrl+O и Ctrl+X.
Команды для формирования отчета:
sudo sarg-reports today - За сегодняшний день, на текущий момент sudo sarg-reports daily - За прошедший день sudo sarg-reports weekly - За прошедшую неделю sudo sarg-reports monthly - За прошедший месяц
Для автоматизации процесса создания отчетов, открываем планировщик заданий Cron
sudo crontab -e
и вписываем следующее
0 5 * * * sarg-reports daily 10 5 * * 1 sarg-reports weekly # Формировать в последний день каждого месяца, в случае если настроена ротация логов Squid каждый месяц. 30 21 * * * root if ( `date -v +1d "+%d"` == 01 ) sarg-reports monthly
Расшифровка данного расписания означает, что каждый день в 6 утра формируется статистка за прошлый день, в 6:10 утра Воскресенья формируется статистка за прошедшую неделю и и первого числа каждого месяца в 6:20 статистика за прошедший месяц. В комментарии — формировать отчета в последний день каждого месяца в 21:30 статистика за прошедший месяц.
Теперь у нас создание отчетов автоматизировано и нам лишь остается следить и контролировать пользователей.
Так же отчеты можно формировать не прибегая к sarg-reports, ниже приведу примеры аналогии формирования отчетов sarg-reports daily, weekly, monthly
sarg -d day-1 -w /tmp/sarg.daily -o /var/www/sarg/Daily /var/log/squid/access.log* sarg -d week-1 -w /tmp/sarg.weekly -o /var/www/sarg/Weekly /var/log/squid/access.log* sarg -d month-1 -w /tmp/sarg.monthly -o /var/www/sarg/Monthly /var/log/squid/access.log*
Хочу отметить что данный способ формирования отчетов, не генерирует стартовую index страницу HTML, а без нее в браузере вы не увидите сформированные отчеты. Поэтому по мимо формирования отчета еще нужно формировать страницу HTML. Ниже представлен приме скрипт который, формирует стартовую страницу HTML и отчет за прошлый день.
Создаем текстовый файл
sudo nano daily.sh
И пишем в него следующее
#!/bin/bash # Создание стартовой страницы create_index_html () { echo -e " <html> <head> <title>Access Reports $hostname</title> </head> <body> <div align=center> <a href=http://10.7.7.158/sarg><img border=0 src=/images/sarg.png></a> <table border=0 cellspacing=6 cellpadding=7> <tr> <th align=center nowrap><b><font face=Arial size=4 color=green>Access Reports $hostname</font></b></th> </tr> <tr> <td align=center bgcolor=beige><font face=Arial size=3><a href=$DAILY>Daily</a></font></td> </tr> <tr> <td align=center bgcolor=beige><font face=Arial size=3><a href=$WEEKLY>Weekly</a></font></td> </tr> <tr> <td align=center bgcolor=beige><font face=Arial size=3><a href=$MONTHLY>Monthly</a></font></td> </tr> </table> </div> </body> </html>" > /var/www/sarg/index.html } # Выполняем создание стартовой страницы и следом выполняем формирование отчета за прошлый день create_index_html sarg -d day-1 -w /tmp/sarg.daily -o /var/www/sarg/Daily /var/log/squid/access.log*
Делаем скрип исполняемым
sudo chmod +x /home/admin/daily.sh
По аналогии делаем такие же скрипты для формирования отчета за прошлую неделю и месяц и забиваем в crontab и наслаждаемся автоматическим формированием отчетов.
Понравилась или оказалась полезной статья, поблагодари автора
Пробую формировать за прошедший день — появилась папка /sarg. в ней пустая папка /Daily. При выполнении sudo sarg-reports daily вообще ничего не происходит, делал всё по вашему. Что не так? Вручную (команда sudo sarg) отрабатывает нормально.
Добрый день!
Подскажите, пожалуйста, как заставить sarg выводить отчеты на русском, как у вас в примерах? У меня все заголовки таблиц и «шапка» отчета на английском, по-русски только название отчета, т.е. то, что в настройках (sarg.conf) было в title (у вас: title «Squid — Анализ использования интернета»).
В sarg.conf кодировка charset UTF-8.
locale:
LANG=ru_RU.UTF-8
LANGUAGE=
LC_CTYPE=»ru_RU.UTF-8″
LC_NUMERIC=»ru_RU.UTF-8″
LC_TIME=»ru_RU.UTF-8″
LC_COLLATE=»ru_RU.UTF-8″
LC_MONETARY=»ru_RU.UTF-8″
LC_MESSAGES=»ru_RU.UTF-8″
LC_PAPER=»ru_RU.UTF-8″
LC_NAME=»ru_RU.UTF-8″
LC_ADDRESS=»ru_RU.UTF-8″
LC_TELEPHONE=»ru_RU.UTF-8″
LC_MEASUREMENT=»ru_RU.UTF-8″
LC_IDENTIFICATION=»ru_RU.UTF-8″
LC_ALL=ru_RU.UTF-8
cat /etc/default/locale
# File generated by update-locale
LANG=ru_RU.UTF-8
LC_ALL=»ru_RU.UTF-8″
ОС Ubuntu 18.04.2 LTS.
А у меня не пишет в папку Daily
Вместо нее создает рядом Daily. (c точкой) и кидает в неё.
А если без скрипта команду эту выполнить, то все как положено.
Здравствуйте.
Устанавливал SARG по Вашим рекомендациям, столкнулся с проблемой. В папке www/sarg не появился index.html и при подключении к серверу не выдает таблицы. В папках по датам индекс есть, но показывает только заголовки таблицы без наполнения. При этом сквидовские логи подхватываются и учитываются в отдельных файлах. В чем может быть косяк?
Видимо что то все таки не так сделали, не могу знать из за чего у вас так все установилось.
Подскажите, возможно сделать чтобы отчеты формировались в течении дня по времени, к примеру: в 9:01 был посещен сайт qqq.ru, в 9:07 был посещен сайт fff.ru и так далее за целый день?
Это вам надо переписать или изменить sarg, сам по себе sarg так не умеет
У меня отсутствует данный путь:external_css_file /sarg/default.css, в /etc/sarg/так же отсутствует файл default.css, где взять его?)
В некоторых статьях в конфиге пигут строчку language Russian_UTF-8, но при формировании отчета sarg ругается на эту строчку
Еще есть вопрос, ни как не хочет русский шрифт ставиться
Строчку закоментил:
Комментируем ее
#export LC_ALL=C
В sarg.conf кодировка таже:
# Кодировка отчета
charset UTF-8
Простите, только эту строчку закоментил:
# Путь к подключаемому CSS-файлу
#external_css_file /sarg/default.css
То что вы закоментили, как раз и есть стиль страницы. Но если у вас так работает то хорошо 🙂
Закоментил эти строчки, теперь формируются таблицы:
# Путь к исключаемым из отчета пользователей
#exclude_users /etc/sarg/exclude_users
# Путь к исключаемым из отчета хостов
#exclude_hosts /etc/sarg/exclude_hosts
# Путь к исключаемым HTTP-кодам
#exclude_codes /etc/sarg/exclude_codes
Я все копировать->вставить делал, упустить просто ничего не возможно было.
Статья работает, но у меня почему-то нет оформления (таблиц, цветов). И до этого вам написали об этом.
Делаю все по статье, если использую ваш sarg.conf, то все работает, пытаюсь в стандартом конфиге менять все функции как в вашем конфиге, то уже не работает.
Вы вероятно что то упускаете, поэтому и не получается. Статья 100% рабочая, т.к. писалась для себя и писалась она на основе проделанной работы.
Таблицы не формируются, полей и цветов нет.
Делаю по этой статье, но при том как я ставлю свой конфиг sarg.conf уже ничего не работает.
Привет!
А как формировать такие отчеты, как на картинках 2, 3.
Ну чтоб красивенько было, в табличке.
Добрый вечер !
Делайте все как в статье, вот так и получится. И будет все красивенько )))