SCROLL
Среднее время на прочтение: 5 мин.

Анализируем трафик 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. И смотрим что у нас получилось.1

Таблица с пользователями Squid, если нажать на IP адрес, то можно увидеть детальную статистику по каждой машине.

2

Вывод детальной статистике посещений сайтов.

3

Мы и разобрали как формировать и удобно просматривать отчеты работы 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&nbsp;$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 &nbsp;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 и наслаждаемся автоматическим формированием отчетов.

 

Понравилась или оказалась полезной статья, поблагодари автора

 

Обсуждение

19 комментариев
  • Пробую формировать за прошедший день — появилась папка /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 и так далее за целый день?

        • Это ответ на комментарий Rob

          Это вам надо переписать или изменить 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.
    Ну чтоб красивенько было, в табличке.

    • Это ответ на комментарий hmuriy

      Добрый вечер !
      Делайте все как в статье, вот так и получится. И будет все красивенько )))