В этой статье мы разобрали как развернуть прокси-сервер 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
exclude_hosts — вносим IP адреса тех людей которых не хотим отображать в отчете
exclude_users — вносим пользователей который не хотим отображать в отчете
С установкой 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 и наслаждаемся автоматическим формированием отчетов.
Понравилась или оказалась полезной статья, поблагодари автора
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА
Привет!
А как формировать такие отчеты, как на картинках 2, 3.
Ну чтоб красивенько было, в табличке.
Добрый вечер !
Делайте все как в статье, вот так и получится. И будет все красивенько )))
Таблицы не формируются, полей и цветов нет.
Делаю по этой статье, но при том как я ставлю свой конфиг sarg.conf уже ничего не работает.
Делаю все по статье, если использую ваш sarg.conf, то все работает, пытаюсь в стандартом конфиге менять все функции как в вашем конфиге, то уже не работает.
Вы вероятно что то упускаете, поэтому и не получается. Статья 100% рабочая, т.к. писалась для себя и писалась она на основе проделанной работы.
Я все копировать->вставить делал, упустить просто ничего не возможно было.
Статья работает, но у меня почему-то нет оформления (таблиц, цветов). И до этого вам написали об этом.
Закоментил эти строчки, теперь формируются таблицы:
# Путь к исключаемым из отчета пользователей
#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
То что вы закоментили, как раз и есть стиль страницы. Но если у вас так работает то хорошо 🙂
Еще есть вопрос, ни как не хочет русский шрифт ставиться
Строчку закоментил:
Комментируем ее
#export LC_ALL=C
В sarg.conf кодировка таже:
# Кодировка отчета
charset UTF-8
В некоторых статьях в конфиге пигут строчку language Russian_UTF-8, но при формировании отчета sarg ругается на эту строчку
У меня отсутствует данный путь:external_css_file /sarg/default.css, в /etc/sarg/так же отсутствует файл default.css, где взять его?)
Здравствуйте.
Устанавливал SARG по Вашим рекомендациям, столкнулся с проблемой. В папке www/sarg не появился index.html и при подключении к серверу не выдает таблицы. В папках по датам индекс есть, но показывает только заголовки таблицы без наполнения. При этом сквидовские логи подхватываются и учитываются в отдельных файлах. В чем может быть косяк?
Видимо что то все таки не так сделали, не могу знать из за чего у вас так все установилось.
Подскажите, возможно сделать чтобы отчеты формировались в течении дня по времени, к примеру: в 9:01 был посещен сайт qqq.ru, в 9:07 был посещен сайт fff.ru и так далее за целый день?
Это вам надо переписать или изменить sarg, сам по себе sarg так не умеет
А у меня не пишет в папку Daily
Вместо нее создает рядом Daily. (c точкой) и кидает в неё.
А если без скрипта команду эту выполнить, то все как положено.
Добрый день!
Подскажите, пожалуйста, как заставить 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.