Анализируем трафик Squid с помощью Sarg

В этой статье мы разобрали как развернуть прокси-сервер Squid 3.5.19 на Ubuntu 14.04.4 x64. В этой статье мы разберем как развернуть анализатор логов прокси-сервера Squid и просмотр сформированных с помощью Sarg логов в удобном для нас виде через Web браузер.

Разворачивать я буду Sarg на той же машине где и стоит Squid, ОС используемая Ubuntu 14.04.5 x64. Устанавливать 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"

Сохраняем и закрываем файл конфигурации

Ctrl+O и Ctrl+X

Теперь создадим файлы зависимости которые мы указывали в нашем конфигурационном файле.

touch /etc/sarg/exclude_codes
touch /etc/sarg/exclude_hosts
touch /etc/sarg/exclude_users

Небольшое пояснение по файлам:

exclude_codes — вносим коды из файла логов Squid, которые игнорировать при формировании отчета.

exclude_hosts — вносим IP адреса тех людей которых не хотим отображать в отчете

exclude_users — вносим пользователей который не хотим отображать в отчете

С установкой Sarg и его настройкой разобрались. Теперь нужно настроить apache чтобы удобно просматривать сформированные отчеты через Web браузер. Если при установке Ubuntu 14.04 вы не указывали устанавливать LAMP сервер, то его нужно установить.

Подсказка: Для установки LAMP выполним команду:

sudo tasksel install lamp-server

При установке будет запрошен пароль для создания администратора БД MySQL.

Первым делом в конфиге apache пропишем имя сервера, дабы он не ругался на его отсутствие.

sudo nano /etc/apache2/apache2.conf

И вписываем в него

ServerName srv-squid

Заметка: Вместо srv-squid пишите свое название вашей машины

Создадим необходимые каталоги

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 $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 и наслаждаемся автоматическим формированием отчетов.

 

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

 

БесполезноСлабоватоПриемлемоОтличноПревосходно (3 голос(ов), в среднем: 5,00 из 5)
Загрузка...

Всего комментариев: 16 Комментировать

  1. hmuriy /

    Привет!
    А как формировать такие отчеты, как на картинках 2, 3.
    Ну чтоб красивенько было, в табличке.

    1. Жаконда / Автор записи

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

  2. Александр /

    Таблицы не формируются, полей и цветов нет.
    Делаю по этой статье, но при том как я ставлю свой конфиг sarg.conf уже ничего не работает.

  3. Александр /

    Делаю все по статье, если использую ваш sarg.conf, то все работает, пытаюсь в стандартом конфиге менять все функции как в вашем конфиге, то уже не работает.

    1. Жаконда / Автор записи

      Вы вероятно что то упускаете, поэтому и не получается. Статья 100% рабочая, т.к. писалась для себя и писалась она на основе проделанной работы.

  4. Александр /

    Я все копировать->вставить делал, упустить просто ничего не возможно было.
    Статья работает, но у меня почему-то нет оформления (таблиц, цветов). И до этого вам написали об этом.

  5. Александр /

    Закоментил эти строчки, теперь формируются таблицы:
    # Путь к исключаемым из отчета пользователей
    #exclude_users /etc/sarg/exclude_users

    # Путь к исключаемым из отчета хостов
    #exclude_hosts /etc/sarg/exclude_hosts

    # Путь к исключаемым HTTP-кодам
    #exclude_codes /etc/sarg/exclude_codes

  6. Александр /

    Простите, только эту строчку закоментил:
    # Путь к подключаемому CSS-файлу
    #external_css_file /sarg/default.css

    1. Жаконда / Автор записи

      То что вы закоментили, как раз и есть стиль страницы. Но если у вас так работает то хорошо 🙂

  7. Александр /

    Еще есть вопрос, ни как не хочет русский шрифт ставиться
    Строчку закоментил:
    Комментируем ее
    #export LC_ALL=C
    В sarg.conf кодировка таже:
    # Кодировка отчета
    charset UTF-8

  8. Александр /

    В некоторых статьях в конфиге пигут строчку language Russian_UTF-8, но при формировании отчета sarg ругается на эту строчку

  9. Евгений /

    У меня отсутствует данный путь:external_css_file /sarg/default.css, в /etc/sarg/так же отсутствует файл default.css, где взять его?)

  10. Илья /

    Здравствуйте.
    Устанавливал SARG по Вашим рекомендациям, столкнулся с проблемой. В папке www/sarg не появился index.html и при подключении к серверу не выдает таблицы. В папках по датам индекс есть, но показывает только заголовки таблицы без наполнения. При этом сквидовские логи подхватываются и учитываются в отдельных файлах. В чем может быть косяк?

    1. Жаконда / Автор записи

      Видимо что то все таки не так сделали, не могу знать из за чего у вас так все установилось.

      1. Rob /

        Подскажите, возможно сделать чтобы отчеты формировались в течении дня по времени, к примеру: в 9:01 был посещен сайт qqq.ru, в 9:07 был посещен сайт fff.ru и так далее за целый день?

        1. Жаконда / Автор записи

          Это вам надо переписать или изменить sarg, сам по себе sarg так не умеет

Оставить ответ

девять + 2 =