Просмотр access log squid. Сравнение свободных программ учета трафика SQUID. Установка и настройка Squid

Каждый, кто поднимает проксю, потом хочет смотреть кто её пользуется, кто сколько качает. И иногда бывает очень полезным просмотр в режиме реального времени, кто что качает. В данном топике будут рассмотрены следующие программы:
SqStat - Real Time статистика через web
- Анализатор логов Squid с последующей генерации HTML
SquidView - Интерактивный консольный монитор логов Squid

0. Введение

Я не буду здесь рассказывать как настроить Apache. В инете и так много мануалов на эту тему, так что вперед и с песней, я буду рассказывать про те фичи, которые внедрял у себя.
Да, рассказывать буду на примере Debian Etch, у вас могут отличаться пути, имейте ввиду…
Поехали…

1. SquidView

Данная программа работает в консоли, и выводит там же все что делает Squid.
Установка:

Aptitude install squidview

Подождем пару секунд, если у вас быстрый интернет. Все, теперь мы можем смотреть кто, что качает. Если у вы не меняли расположение логов, и оставили большинство параметров squid дефолтными, то для просмотра необходимо только запустить его, но с правами root"а, потомучто логи сквида пишутся им…

Sudo squidview

Я думаю что этого вполне хватит вам, но также сообщу очень полезные вещи, нужно нажимать кнопки, и смотреть:

  • h - помощь, здесь мы можем узнат ь еще больше;)
  • l - enter - генерация отчета, вы также можете настроить дополнительные настройки
  • T - начинется учет статистики по размеру скачиваемого
  • O - просмотре кто чё качал по юзерам, после T

По SquidView вроде бы все, если что нибудь не до рассказал, пишиите, добавлю!

2. SqStat

Это скрипт который позволяет смотреть активные соединения, загрузку канала, и среднюю загрузку канала.
Я предполагаю что у вас уже настроен апач.
Скачиваем последнюю версию,

Wget -c samm.kiev.ua/sqstat/sqstat-1.20.tar.gz
tar xvfz sqstat-1.20.tar.gz
cd ./sqstat-1.20
mkdir /var/www/squid-stat
cp -R * /var/www/squid-stat*

Всё, теперь нам необходимо настроить Squid-cgi или cachemgr.cgi, Ставим:
aptitude install squid-cgi

Теперь необходимо настраивать доступ…

Nano /etc/squid/squid.conf

Добавляем
acl manager proto cache_object
http_access allow manager localhost
http_access deny manager
#Данная строка задает пароль secret и разрешает делать все
cachemgr_passwd secret all

Сейчас необходимо поправить /etc/squid/cachemgr.conf
echo "*" >> /etc/squid/cachemgr.conf
Вместо * можете поставить адрес сетевой которую прослушивает squid

У меня почему то не получилось завести при адресе 127.0.0.1 и ввел 192.168.0.1 и все заработало. теперь вам необходимо ввести в поле Cache Host адрес внещней сетевой. Порт какой у вас стоит, в поле логин, если вы делали всё по мануалу, можно ничего не водить, и в поле пароля пишем secret. Если всё прошло удачно, то вы увмидете список доступных параметров… Можете посмотреть, а мы переходим к настройке SqStat…

Nano /var/www/squid-stat/config.inc.php
//Это адрес на котором слушает ваш сквид
$squidhost="192.168.0.1";
$squidport=3128;
$cachemgr_passwd="secret";
//Этот параметр разрешает резолвить имена записями в ващей системе
$resolveip=false;
//В этом файле содержится айпи и имена кмопьютеров, можно использовать кирилицу:)
$hosts_file="hosts";
$group_by="host";

В принципе, сам конфиг хорошо документирован, изучайте, благо там изучать нечего))

Теперь делаем поддомен, так намного удобнее)

Nano /etc/apache2/sites-enabled/sqstat

ServerAdmin [email protected]
DocumentRoot /var/www/squid-stat/
ServerName proxy.server.local

Для резолвинга пишем в /etc/hosts

Nano /etc/hosts
192.168.0.1 proxy.server.local

Вот и всё :) почти все

Squid -k reconfigure
/etc/init.d/apache2 reload

3. Sarg

Эта программа генерирует html отчеты, риcует графики, и тд…
Ставим:

Aptitude install sarg

Nano /etc/squid/sarg.conf
language Russian_koi8
graphs yes
title "Squid User Access Reports"
temporary_dir /tmp
output_dir /var/www/sarg
max_elapsed 28800000
charset Koi8-r

Kонечно же никто Вам не запрещает поизгаляться над стилем отображения всего этого хозяйства - конфиг снабжён очень подробными комментариями.

Crontab -u root -e
* 08-18/1 * * * /usr/sbin/sarg-reports today
* 00 * * * /usr/sbin/sarg-reports daily
* 01 * * 1 /usr/sbin/sarg-reports weekly
* 02 1 * * /usr/sbin/sarg-reports monthly

Эпилог

Всё :)) Если хотите, можете создать и для него поддомен! Это уже описано…
Сам я пользуюсь всеми тремя программами и доволен.

UPD. Для решения проблемы со скивдом 3-ей версии неоходимо сделать мягкую ссылку:

Ln -s /var/log/squid3/access.log /root/.squidview/log1

UPD.2. В следующей статье будет идти разговор о delay pools

Каждый, кто поднимает проксю, потом хочет смотреть кто её пользуется, кто сколько качает. И иногда бывает очень полезным просмотр в режиме реального времени, кто что качает. В данном топике будут рассмотрены следующие программы:
SqStat - Real Time статистика через web
- Анализатор логов Squid с последующей генерации HTML
SquidView - Интерактивный консольный монитор логов Squid

0. Введение

Я не буду здесь рассказывать как настроить Apache. В инете и так много мануалов на эту тему, так что вперед и с песней, я буду рассказывать про те фичи, которые внедрял у себя.
Да, рассказывать буду на примере Debian Etch, у вас могут отличаться пути, имейте ввиду…
Поехали…

1. SquidView

Данная программа работает в консоли, и выводит там же все что делает Squid.
Установка:

Aptitude install squidview

Подождем пару секунд, если у вас быстрый интернет. Все, теперь мы можем смотреть кто, что качает. Если у вы не меняли расположение логов, и оставили большинство параметров squid дефолтными, то для просмотра необходимо только запустить его, но с правами root"а, потомучто логи сквида пишутся им…

Sudo squidview

Я думаю что этого вполне хватит вам, но также сообщу очень полезные вещи, нужно нажимать кнопки, и смотреть:

  • h - помощь, здесь мы можем узнат ь еще больше;)
  • l - enter - генерация отчета, вы также можете настроить дополнительные настройки
  • T - начинется учет статистики по размеру скачиваемого
  • O - просмотре кто чё качал по юзерам, после T

По SquidView вроде бы все, если что нибудь не до рассказал, пишиите, добавлю!

2. SqStat

Это скрипт который позволяет смотреть активные соединения, загрузку канала, и среднюю загрузку канала.
Я предполагаю что у вас уже настроен апач.
Скачиваем последнюю версию,

Wget -c samm.kiev.ua/sqstat/sqstat-1.20.tar.gz
tar xvfz sqstat-1.20.tar.gz
cd ./sqstat-1.20
mkdir /var/www/squid-stat
cp -R * /var/www/squid-stat*

Всё, теперь нам необходимо настроить Squid-cgi или cachemgr.cgi, Ставим:
aptitude install squid-cgi

Теперь необходимо настраивать доступ…

Nano /etc/squid/squid.conf

Добавляем
acl manager proto cache_object
http_access allow manager localhost
http_access deny manager
#Данная строка задает пароль secret и разрешает делать все
cachemgr_passwd secret all

Сейчас необходимо поправить /etc/squid/cachemgr.conf
echo "*" >> /etc/squid/cachemgr.conf
Вместо * можете поставить адрес сетевой которую прослушивает squid

У меня почему то не получилось завести при адресе 127.0.0.1 и ввел 192.168.0.1 и все заработало. теперь вам необходимо ввести в поле Cache Host адрес внещней сетевой. Порт какой у вас стоит, в поле логин, если вы делали всё по мануалу, можно ничего не водить, и в поле пароля пишем secret. Если всё прошло удачно, то вы увмидете список доступных параметров… Можете посмотреть, а мы переходим к настройке SqStat…

Nano /var/www/squid-stat/config.inc.php
//Это адрес на котором слушает ваш сквид
$squidhost="192.168.0.1";
$squidport=3128;
$cachemgr_passwd="secret";
//Этот параметр разрешает резолвить имена записями в ващей системе
$resolveip=false;
//В этом файле содержится айпи и имена кмопьютеров, можно использовать кирилицу:)
$hosts_file="hosts";
$group_by="host";

В принципе, сам конфиг хорошо документирован, изучайте, благо там изучать нечего))

Теперь делаем поддомен, так намного удобнее)

Nano /etc/apache2/sites-enabled/sqstat

ServerAdmin [email protected]
DocumentRoot /var/www/squid-stat/
ServerName proxy.server.local

Для резолвинга пишем в /etc/hosts

Nano /etc/hosts
192.168.0.1 proxy.server.local

Вот и всё :) почти все

Squid -k reconfigure
/etc/init.d/apache2 reload

3. Sarg

Эта программа генерирует html отчеты, риcует графики, и тд…
Ставим:

Aptitude install sarg

Nano /etc/squid/sarg.conf
language Russian_koi8
graphs yes
title "Squid User Access Reports"
temporary_dir /tmp
output_dir /var/www/sarg
max_elapsed 28800000
charset Koi8-r

Kонечно же никто Вам не запрещает поизгаляться над стилем отображения всего этого хозяйства - конфиг снабжён очень подробными комментариями.

Crontab -u root -e
* 08-18/1 * * * /usr/sbin/sarg-reports today
* 00 * * * /usr/sbin/sarg-reports daily
* 01 * * 1 /usr/sbin/sarg-reports weekly
* 02 1 * * /usr/sbin/sarg-reports monthly

Эпилог

Всё :)) Если хотите, можете создать и для него поддомен! Это уже описано…
Сам я пользуюсь всеми тремя программами и доволен.

UPD. Для решения проблемы со скивдом 3-ей версии неоходимо сделать мягкую ссылку:

Ln -s /var/log/squid3/access.log /root/.squidview/log1

UPD.2. В следующей статье будет идти разговор о delay pools

Squid - программный пакет, реализующий функцию кеширующего прокси-сервера для протоколов HTTP, FTP, Gopher и (в случае соответствующих настроек) HTTPS. Разработан сообществом как программа с открытым исходным кодом (распространяется в соответствии с GNU GPL). Все запросы выполняет как один неблокируемый процесс ввода/вывода. Используется в UNIX-системах и в ОС семейства Windows NT. Имеет возможность взаимодействия с Active Directory Windows Server путём аутентификации через LDAP, что позволяет использовать разграничения доступа к интернет ресурсам пользователей, которые имеют учётные записи на Windows Server, также позволяет организовать «нарезку» интернет трафика для различных пользователей.

Sarg (Squid Analysis Report Generator) — генератор отчетов на основании анализа лог-файла прокси сервера Squid. Отчеты позволяют выяснить какой пользователь в какое время обращался к какому сайту.Суммарный отчет может оказать большую помощь в тарификации работающих через Squid пользователей, так как включает в себя суммарный трафик и число коннектов для каждого пользователя за определенный период времени.

Установка и настройка Squid

Существует две версии Squid — 2.x и 3.x. Последняя бета версия — 3.1. Мы будем ставить третью ветку прокси-сервера. На момент написания статьи, стабильной версией была 3.0.STABLE15.

# cd /usr/ports/www/squid30/ # make install clean

Пока искал описания всех опций на английском, понял, что если опция не будет использована в течении месяца, то ставить ее нет смысла, т.к. если я правильно понял, то часть опций, начиная с релиза 3.1 будут активироваться в конфиге (например SQUID_PINGER). По этому, я не стал отмечать те опции, которые не планирую использовать после начальной конфигурации. Иными словами, мне нужен простой кеширующий прокси сервер.

В опциях установки я выбрал SQUID_SSL, SQUID_IDENT, SQUID_PF, SQUID_KQUEUE.

Все конфигурационные файлы squid находятся в папке /usr/local/etc/squid/
Директория с кешем: /usr/local/squid/cache/
Логи пишутся в /usr/local/squid/logs/

Добавляем следующую строчку в /etc/rc.conf:

Squid_enable="YES"

Перед началом работы, надо инициализировать директории с кешем. Делается это командой:

# squid -z

Команду надо выполнять от пользователя root или squid. И выполнять ее надо после того, как вы создали готовый конфигурационный файл, а то могут выдаваться ошибки.

По умолчанию, конфигурация Squid будет запрещать всем доступ к proxy-серверу. Чтобы это изменить, надо отредактировать параметры http_access в файле /usr/local/etc/squid/squid.conf.

# squid -f /usr/local/etc/squid/squid.conf -k parse

Первоначальный файл конфигурации представляет из себя файл, где все установлено по умолчанию. Как сказано в документации, если вы не будете менять какую-то опцию и хотите ее значение по умолчанию, то не надо ее раскомментировать. Из-за этого могут быть ошибки во время выполнения. Так же, надо знать, что значение NONE иногда означает, что не надо использовать вообще никакое значение определенной опции, а иногда является валидной опцией. Так что, если есть недопонимания того или иного параметра в конфигурационном файле, следует обратиться к официальной документации (ссылку на сайт с документацией можно найти в самом низу статьи).

В конфигурационном файле предусмотрено использование директивы include для подключения дополнительных конфигурационных файлов, например:

Include /путь/до/файла/конфигурации/squid.acl.config

Следует учитывать, что количество уровней include ограничено 16. Сделано это для того, чтобы предотвратить «петли», когда Squid бесконечно включал файлы конфигурации, указанные в других файлах.

Моя конфигурация будет актуально для сетей, где Squid в связке с используется в качестве прозрачного прокси-сервера (transparent proxy). Весь доступ будет открыт из внутренней локальной сети и закрыт всем извне. По этому, никакие параметры авторизации использоваться не будут. Так же, т.к. это прозрачные прокси-сервер, то надо перенаправлять все запросы через PF на порт 3128.

Так же, надо помнить, что по умолчанию Squid принимает запросы на порте 3128.

Теперь, когда покончено с небольшой теоретической частью, пора приступать к конфигурационной части. В целях экономии места, здесь я буду указывать лишь те параметры, которые я менял, и те параметры, на которые стоит обратить внимание. Итак, приступим. Файл конфигурации:

# закомментировал следующие строчки, т.к. этих подсетей у меня нет #acl localnet src 10.0.0.0/8 #acl localnet src 172.16.0.0/12 # так же, закомментировал неиспользуемые порты и добавил нужные # я не знаю на сколько это верно, может правильнее было бы их оставить acl WEBMIN_ports port 10000 acl Safe_ports port 8080 # www acl Safe_ports port 10000 # webmin #acl Safe_ports port 70 # gopher (сетевой протокол распределенного поиска и передачи документов) #acl Safe_ports port 210 # wais (сетевая информационная поисковая система) #acl Safe_ports port 1025-65535 # незарегистрированные порты #acl Safe_ports port 280 # http-mgmt #acl Safe_ports port 488 # gss-http #acl Safe_ports port 591 # filemaker (кросс-платформенные реляционные базы данных) #acl Safe_ports port 777 # multiling http (какой-то доисторический протокол, о котором никто ничего не знает) # если это не указать, то нельзя будет покдлючиться к Webmin через адрес https://webmin_address:10000 http_access allow CONNECT WEBMIN_ports # раскомментируем следующую строку... она отвечает за то, чтобы на прокси-сервере не осуществлялся доступ # к http://localhost через сам прокси-сервер # это рекомендуем параметр, но не обязательный http_access deny to_localhost # т.к. это у нас будет прозрачный прокси-сервер, то надо изменить значение по умолчанию на следующее # а еще я добавляю ip-адрес на котором принимать запросы, т.к. в компьютере две сетевые карты http_port 192.168.0.10:3128 transparent # сколько памяти могут занимать процессы Squid; по умолчанию 8 Мб, но в версии 3.1 # этот параметр будет увеличен до 256 Мб - увеличим и мы cache_mem 256 MB # максимальный размер объектов в памяти... опять же, в версии 3.1 этот параметр будет увеличен # с 8 кб до 512 кб; делаем так же maximum_object_size_in_memory 512 KB # указываем директорию с кешем. параметр имеет вид: # cache_dir ufs Directory-Name Mbytes L1 L2 , где # Directory-Name - это сама директория # Mbytes - количество мегабайт, которые выделены для директории (я выделяю 2 гига) # L1 - количество директорий, которое может быть создано в папке с кешем (по умолчанию 16) # L2 - количество поддиректорий, которое может быть в каждой директории (по умолчанию 256) cache_dir ufs /usr/local/squid/cache 2048 256 512 # параметр я не трогал, но хочу сделать небольшое пояснение по нему # максимальный размер объектов, который будет сохранен в кеш # если вы хотите сэкономить траффик, то стоит увеличить этот параметр # если хотите производительность - понизить # maximum_object_size 4096 KB # если свободное место в директории с кешем израсходовано на 90% (cache_swap_low), то # начинается постепенная утилизация (замещение) сохраненных объектов # когда процент занятого пространства достигает отметки 95% (cache_swap_high), утилизация # происходит более "агрессивно" # так же стоит учитывать, то если под кеш директорию выделено много пространства, то разница # между 90% и 95% может быть сотни мегабайт... стоит задуматься о уменьшении разницы между # этими параметрами # cache_swap_low 90 # cache_swap_high 95 # этот лог отвечает за то какие объекты удаляются из кеша, какие сохраняются и на сколько # т.к. нет утилит для создания отчетов по этим данным, то их можно смело отключить cache_store_log none # указываем какую часть ip-адреса клиента указывать в логе. по умолчанию указывается весь адрес. # но если, например, указать значени 255.255.255.0, то в логе будут отображены три первые октета # ip-адреса. т.е. если клиент (192.168.0.15 делает запрос), то в логе будет отображено - 192.168.0.0 # я не менял параметр, т.к. хитрый и хочу знать кто куда ходит # client_netmask 255.255.255.255 # закомментируем это, т.к. не используем этот протокол #refresh_pattern ^gopher: 1440 0% 1440 # e-mail человека, который отвечает за кеш. сюда будет выслано письмо, если с кешем что-то случится cache_mgr av3nger # имя сервера visible_hostname имя_компьютера # не используем это #icp_port 3130 # в самом низу конфига есть раздел DNS OPTIONS. можно с ним еще поиграться, если нужна большая "стандартизация"

И вот теперь стоит инициализировать директории с кешем. Чтобы его сделать «прозрачным», надо в конфигурационный файл Packet Filter /etc/pf.conf добавить следующую строчку:

Rdr on $int_if proto tcp from $int_if:network to !(self) port 80 -> ip_адрес_прокси_сервера port 3128

Напоминаю, что пример настройки PF можно посмотреть .

Проблемы, с которыми я столкнулся

1. При переадресации заменяется ip-адрес отправителя, адресом сервера. Т.е. например, если я (192.168.0.3) пытаюсь через прокси подключиться к 192.168.0.10:8080 (веб сервер), но при этом, на веб-сервере стоит ограничение на подключение только с IP 192.168.0.3, то подключение НЕ произойдет. Т.к. в логах будет написано, что подключение шло с адреса 192.168.0.10. Способа решения два. Первый — это заморачиваться с NAT, второй — просто поправить конфиг Apache. Ведь прокси сервер все равно запрещен для пользования из вне. Мы лишь теряем защиту сайта в локальной сети. Что, конечно же, не очень хорошо, но терпимо.

Установка и настройка Sarg

Сразу приступим к установке:

# cd /usr/ports/www/sarg/ # make install clean

Единственная доступная опция установки — GD. Отмечаем ее. GD — это графическая библиотека, скорее всего отвечает за отображение красивых графиков. Если выскочет окошко, где надо будет выбрать опции установки для GD, то не надо ничего выбирать.

Все конфигурационные файлы лежат в /usr/local/etc/sarg/. Нам нужен файл sarg.conf, открываем его в любом редакторе и приводим примерно вот к такому виду:

# язык (из русских есть еще Russian_windows1251 и Russian_UTF-8) language Russian_koi8 # указываем, где лежат логи Squid access_log /usr/local/squid/logs/access.log # используем графики, где это возможно graphs yes # указываем название страниц title "Статистика использования Squid" # директория для временных файлов temporary_dir /tmp # куда кидать отчеты (у меня так) output_dir /usr/local/www/secure/squid-reports # если хочется, чтобы репорты приходили вам на почту, то можно воспользоваться следующим параметром # при этом, отчеты в папку, указанную вышу, сохраняться не будут # output_email ваш_email # преобразовываем ip в адрес resolve_ip yes # по какому полю и как сортируем отчеты для страницы с топовыми пользователями # поля бывают USER, CONNECT, BYTES и TIME # способы сортировки - normal и reverse topuser_sort_field BYTES reverse # тоже самое, но для страницы пользователи user_sort_field BYTES reverse # европейский формат дат date_format e # удаляем временные файлы remove_temp_files yes # генерируем файл index.html index yes # если папка с отчетом уже создана, то мы ее перезаписываем overwrite_report yes # удаляем из отчета записи, содержащие следующие коды (400, 404 и т.д.) # кода надо вписать в указанный файл exclude_codes /usr/local/etc/sarg/exclude_codes # я раскомментировал следующую строчку, чтобы получить все отчеты # строчку полностью не привожу, т.к. она длинновата report_type ... # в следующем файле мы указываем пары ip-адрес - пользователь # формат следующий: 192.168.0.1 Василий Пупкин # в конце обязательно должны быть символы конца строки (иными словами - надо нажать Enter) usertab /usr/local/etc/sarg/users # кодировка создаваемых отчетов charset Koi8-r # убираем лого; оно только мешается show_sarg_logo no # заменяем байты на более понятные величины (кб и мб) displayed_values abbreviation

Все! Теперь, чтобы сгенерировать отчеты, надо лишь выполнить команду:

Чтобы постоянно не выполнять эту команду, можно добавить следующую запись в crontab. Sarg будет запускаться каждый день в полночь.

@daily /usr/local/bin/sarg

1. Официальный сайт Squid (на английском)
2. (на английском)
3. (опять же, на английском)

Недавно в нашей компании возникла необходимость перевести прокси-сервера с MS ISA Server на свободное ПО. Прокси-сервер долго выбирать не пришлось (squid). Воспользовавшись несколькими практическими рекомендациями, настроил прокси под наши нужды. Некоторые затруднения возникли при выборе программы для учета трафика.

Требования были такие:

1) свободное ПО
2) возможность обработки логов с различных прокси на одном сервере
3) возможность построения стандартных отчетов с отправкой по почте, либо ссылка на веб-сервере
4) построение отчетов по отдельным подразделениям и рассылка таких отчетов руководителям подразделений, либо предоставление доступа по ссылке на веб-сервере

По программам учета трафика разработчиками представлена весьма скудная информация: лаконичное описание назначение программы плюс необязательным бонусом пара скриншотов. Да, понятно, что любая программа подсчитает количество трафика за сутки/неделю/месяц, а вот дополнительные интересные возможности, отличающую одну программу от других - не описаны.

Я решил написать этот пост, в котором попытаюсь описать возможности и недостатки таких программ, а так же некоторые их ключевые «фишки», чтобы немного помочь в выборе тем, кому его предстоит сделать.

Наши кандидаты:

SARG
free-sa
lightsquid
squidanalyzer
ScreenSquid

Отступление

Информация о «возрасте» программы и выходе последнего релиза не является параметром сравнения и приводится только для сведения. Постараюсь сравнить исключительно функционал программы. Так же я намеренно не стал рассматривать слишком старые программы, которые не обновлялись много лет.

Логи передаются на обработку анализатору в том виде, как их создал squid и не будут подвергаться какой-либо предварительной обработке с целью внесения в них изменений. Обработка некорректных записей и всевозможные преобразования полей логов должны вноситься самим анализатором и присутствовать только в отчете. Данная статья не является инструкцией по настройке. Вопросы конфигурирования и использования могут быть освещены в отдельных статьях.

Итак, приступим.

SARG - Squid Analysis Report Generator

Старейшина среди поддерживаемых программ такого класса (разработка начата в 1998 году, прежнее название - sqmgrlog). Последний релиз (версия 2.3.10) - апрель 2015 года. После этого было несколько доработок и исправлений, которые доступны в master-версии (можно скачать с помощью git с sourceforge).

Запуск программы производится вручную либо по cron-у. Запустить можно без параметров (тогда все параметры будут взяты из файла конфигурации sarg.conf), либо можно указать параметры в командной строке или скрипте, например даты, за которые строится отчет.

Отчеты создаются в виде html-страниц и складываются в каталог /var/www/html/squid-reports (по умолчанию). Можно задать параметр, задающий количество хранимых отчетов в каталоге. Например, 10 ежедневных и 20 недельных, более старые будут автоматически удаляться.

Возможно использование несколько config-файлов с разными параметрами для различных вариантов отчетов (например, для ежедневных отчетов можно создать свой конфиг, в котором будет отключена опция создания графиков и будет указан другой каталог для вывода отчета).

Подробно

При входе на главную страницу с отчетами можем выбрать период, за который он создан (определяется в параметрах создания отчета), дата его создания, количество уникальных пользователей, суммарный трафик за период, среднее количество трафика на пользователя.

При выборе одного из периодов сможем получить отчет topusers за этот период. Далее приведу описания и примеры всех типов отчетов, которые умеет делать SARG.

1) topusers - суммарный трафик по пользователям. Под пользователем понимается либо имя хоста, которому предоставлен доступ в Интернет, либо логин пользователя. Пример отчета:

Здесь отображаются IP-адреса. При настройке включении соответствующей опции IP-адреса преобразуются в доменные имена.

Используете аутентификацию? Учетные записи преобразуются в реальные имена:

Внешний вид может быть настроен в css-файле. Выводимые столбцы тоже настраиваются, ненужные можно убрать. Поддерживается сортировка столбцов (sorttable.js).

При нажатии на иконку с графиком слева увидим подобный график:

При нажатии на иконку справа получим отчет 5.

2) topsites - отчет по самым популярным сайтам. По умолчанию выводится список из 100 самых популярных сайтов (значение корректируется). С помощью регулярных выражений или задания псевдонимов можно объединить трафик доменов 3-го и более высоких уровней до домена 2-го уровня (как на скриншоте) или задать любое другое правило. Для каждого домена можно задать правило отдельно, например, для yandex.ru и mail.ru объединять до 3-го уровня. Значение полей вполне очевидно.

3) sites_users - отчет о том, кто заходил на определенны сайт. Тут все просто: имя домена и кто к нему обращался. Трафик тут не отображается.

4) users_sites - отчет о посещенных сайтах каждым пользователем.

Тут тоже все понятно. Если нажать на иконку в первом столбце, получим отчет viii).

5) date_time - распределение трафика пользователя по дням и часам.

6) denied - заблокированные squid-ом запросы. Здесь отображается кому, когда и куда в доступе было отказано. Количество записей настраивается (по умолчанию - 10).

7) auth_failures - отказы в аутентификации. HTTP/407.
Количество записей настраивается (по умолчанию - 10).

8) site_user_time_date - показывается в какое время на какой сайт и с какой машины заходил пользователь.

9) downloads - список загрузок.

10) useragent - отчет об используемых программах

В первой части отчета отображается IP-адрес и использованные useragent’ы.

Во второй - общий список useragent’ов с распределением в процентах с учетом версий.

11) redirector - отчет показывает кому был заблокирован доступ средствами блокировщика. Поддерживаются squidguard, dansguardian, rejik, формат логов настраивается.

У SARG более 120 параметров настройки, поддержка языков (на русский язык переведено 100% сообщений), поддержка регулярных выражений, работа с LDAP, возможность предоставления пользователям доступа только к своим отчетам на web-сервере (через.htaccess), возможность преобразования логов в свой формат для экономии места, выгрузка отчетов в текстовый файл для последующего заполнения базы данных, работа с файлами логов squid (разбиение одного или нескольких лог-файлов по дням).

Возможно создание отчетов по определенному набору заданных групп, например, если требуется сделать отдельный отчет по подразделению. В дальнейшем доступ к веб-странице с отчетами подразделения можно предоставить, например, руководителям средствами веб-сервера.

Можно отправлять отчеты по e-mail, правда, пока поддерживается только отчет topusers, а само письмо будет простым текстовым без поддержки HTML.

Можно исключить из обработки определенных пользователей или определенных хосты. Можно задавать псевдонимы для пользователей, объединяя трафик нескольких аккаунтов в один, например, всех аутстафферов. Также можно задать псевдонимы для сайтов, например, объединить в некий псевдоним несколько социальных сетей, в этом случае все параметры по указанным доменам (количество соединений, объем трафика, время обработки) будут просуммированы. Или с помощью регулярного выражения можно «отбросить» домены выше 3-го уровня.
Возможна выгрузка в отдельные файлы списка пользователей, превысившие определенные объемы за период. На выходе будет несколько файлов, например: userlimit_1G.txt - превысившие 1 Gb, userlimit_5G.txt - превысившие 5 Gb и так далее - всего 16 лимитов.

Еще SARG имеет в своем арсенале пару PHP-страниц: просмотра текущих подключений к squid и для внесения доменных имен в списки блокировки squidguard.

В общем, это очень гибкий и мощный инструмент, несложен в освоении. Все параметры описаны в дефолтном конфигурационном файле, в проекта на sourceforge есть более подробное описание всех параметров в wiki-разделе, разбитое по группам, и примеры их использования.

free-sa

Отечественная разработка. С ноября 2013 года новых версий не было. Заявлено более быстрое создание отчетов по сравнению с конкурирующими программами и меньший объем занимаемого места для готовых отчетов. Проверим!

Ближе всего по логике работы эта программа к SARG (да и автор сам сравнивает с этой программой (например, )), поэтому и мы сравнивать будем с ним.

Порадовало наличие нескольких тем оформления. Тема представляет собой 3 css-файла и 4 png-иконки, им соответствующие.

Отчеты действительно делаются быстрее. Дневной отчет создался за 4:30, когда у SARG за 12 минут. Правда, с занимаемым объемом оказалось не так: объем, занимаемый отчетами - 440 МБ (free-sa) и 336 МБ (SARG).

Попробуем дать задание посложнее: обработать лог-файл объемом 3,2 ГБ за 10 дней, в котором 26,3 млн строк.

Free-sa также сделал отчет быстрее, за 46 минут, отчет занимает 3,7 ГБ на диске. SARG потратил 1 час 10 минут, отчет занимает 2,5 ГБ.

Но оба эти отчета будет неудобно читать. Кому, например, захочется вручную считать, какой домен популярнее - vk.com или googlevideo.com и подсчитывать вручную трафик всех их поддоменов? Если в настройках SARG оставить только домены 2-го уровня, то создание отчета займет примерно столько же времени, но теперь уже сам отчет занимает на диске 1,5 ГБ (дневной с 336 МБ уменьшился до 192 МБ).

Подробно

При входе на главную страницу видим примерно следующее (выбрана тема blues):

Честно говоря, непонятно назначение вывода года и месяцев, при нажатии на них ничего не происходит. В поле поиска можно что-то написать, но опять же ничего не происходит. Можно выбрать интересующий период.

Список заблокированных URL:

Отчет CONNECT metdod:

Отчет PUT/POST metdod:

Популярные сайты:

Интересным показался отчет об эффективности прокси-сервера:

Отчет по пользователям:

При нажатии на значок графика во второй колонке получим график использования сети Интернет конкретным пользователем:

При нажатии на вторую иконку получим таблицу загрузки интернет-канала по часам:

При выборе IP-адреса получим список сайтов по пользователю в порядке убывания трафика:

Вся статистика отображается в байтах. Для переключения на мегабайты необходимо выставить параметр

reports_bytes_divisor=«M»

Программа не принимает сжатые файлы логов, не принимает больше одного файла с параметром -l, не поддерживает отбор файлов по маске. Автор программы предлагает обойти эти ограничения созданием именованных каналов.

Обнаружен досадный глюк - когда длина строки лога слишком большая, вместо адресов вписываются timestamp’ы:

При просмотре трафика этого «пользователя» можно увидеть домен с источником ошибки:

Таким образом, количество пользователей возросло в несколько раз.

Если сравнивать эти две программы, то free-sa создает отчет чуть быстрее. 20-кратного увеличения скорости, как заявлено автором, мне не удалось обнаружить. Возможно, ее можно увидеть при каких-то определенных условиях. Думаю, непринципиально сколько займет создание недельного отчета ночью - 30 минут или 50. По объему занимаемого отчетами места у free-sa преимущества нет.

lightsquid

Пожалуй, самая популярная считалка трафика. Работает быстро, отчеты занимают не много дискового пространства. Хоть эта программа и не обновлялась давно, я все же решил в этой статье рассмотреть ее возможности.

Логика работы программы иная: программа считывает журнал и создает набор файлов с данными, которые потом использует для создания веб-страниц. То есть заранее созданных отчетов с данными здесь нет, страницы с данными генерируются «на лету». Плюсы такого решения очевидны: для получения отчета не обязательно парсить все логи за период, достаточно раз в день «скармливать» lightsquid-у накопившийся журнал. Можно по cron-у делать это несколько даже несколько раз в день, чтобы быстро добавить новую порцию информации.

Не обошлось без минусов: невозможно обработать логи с разных серверов и собрать статистику в одном месте: при обработке журнала за какой-нибудь день с другого сервера уже имеющаяся статистика за этот день стирается.

Есть странное ограничением: lightsquid «воспринимает» как несжатые файлы логов, как и сжатые (gz - точно), но во втором случае имя файла должно быть в таком формате: access.log.X.gz, файлы с форматом имени access.log-YYYYMMDD.gz не воспримет.

Путем нехитрых манипуляций преодолеваем это ограничение и смотрим что получилось.

Подробно

Отчет за месяц (суммарный трафик 3 Тб, 110 млн строк) занял на диске 1 Гб.

На начальной странице видим трафик по дням за текущий месяц.

При выборе дня видим отчет за день по всем пользователям:

Если заданы группы, в правой колонке отображается название группы, к которой принадлежит пользователь. Пользователи, не входящие ни в одну группу, объединяются в группу 00 no in group (в данном отчете они помечены вопросительным знаком).

При выборе на главной странице grp на соответствующую дату попадаем на страницу отчета пользователей, разбитых по группам. Сначала перечисляются не входящие ни в какую группу, затем группы по порядку.

При нажатии на название группы в таблице справа переходим ниже на место в странице, где начинается отчет по данной группе:

При нажатии на «Top sites report» получаем отчет по популярным сайтам за день:

Big files report:

Переходим к таблице справа справа.
Здесь можно получить список топ-сайтов за месяц и за весь год (выглядят они так же, поэтому без скриншота), общую статистику за год и за месяц, а так же статистику за год и за месяц по группам.

Статистика за месяц:

При нажатии на значок с часами сможем увидеть таблицу по сайтам, времени доступа и потребленному в час трафику:

Здесь отображена статистика за день, но за месяц и за год будет выглядеть примерно так же, часовые статистики по доменам просуммируются.

При нажатии на значок графика можем увидеть потребление трафика пользователем в течение месяца:

Столбцы графика кликабельны: при нажатии на столбец переходим на статистику пользователя за другой день.

При нажатии на [M] получим отчет по потреблению трафика пользователем в течение месяца с указанием объёма за каждый день и за полную неделю.

При нажатии на имя пользователя получаем список сайтов, на которые заходил пользователь в порядке убывания трафика:

Ну вот вроде бы и всё. Все просто и лаконично. IP-адреса могут быть преобразованы в доменные имена. С помощью регулярных выражений доменные имена могут быть объединены в домены 2-го уровня, на всякий случай привожу регулярное выражение:

$url =~ s/(+:\/\/)??(+\.){0,}(+\.){1}(+)(.*)/$3$4/o;

При навыках в perl можно доработать под себя.

squidanalyzer

Схожая с lightsquid программа и тоже написана на Perl. Более симпатичное оформление. Последняя на текущий момент версия 6.4 выпущена в в середине декабря этого года, сделано много улучшений. Сайт программы: squidanalyzer.darold.net .

Squidanalyzer может использовать несколько процессоров компьютера (параметр -j), благодаря чему отчеты делаются быстрее, но это применимо только к несжатым файлам. Для запакованных (поддерживается формат gz) обработка происходит с использованием одного ядра процессора.

И еще одно сравнение с lightsquid: тот же самый отчет на том же самом сервере делался около суток, на диске занимает 3,7 ГБ.

Так же как и lightsquid, squidanalyzer не сможет объединить два и более лог-файла с разных серверов за один и тот же период.

Подробнее

Главная страница - можно выбрать год отчета.

При выборе любого периода (год, месяц, неделя, день) внешний вид веб-страниц будет схожим: сверху меню со следующими отчетами: MIME types, Networks, Users, Top Denied, Top URLs, Top Domains. Чуть ниже статистика прокси за выбранные период: Requests (Hit/Miss/Denied), Megabytes (Hit/Miss/Denied), Total (Requests/Megabytes/Users/Sites/Domains). Далее график по количеству запросов за период и по трафику.

В правом верхнем углу есть календарь. При выборе какого-нибудь месяца можно увидеть краткую статистику и график загрузки по дням:

В календаре есть возможность выбора недели. При выборе увидим похожую статистику:

При выборе дня видим статистику по часам:

Отчет по типу контента:

Отчет по сетям.

Отчет по пользователям.

При выборе пользователя получаем его статистику за период.

Запрещенные ресурсы:

Отчет по доменам 2-го уровня.

От себя бы хотел отметить очень медлительную работу программы по мере накопления информации. С каждым новым логом пересчитывается статистика за неделю, месяц и год. Поэтому рекомендовать эту программу для обработки логов с сервера с большим количеством трафика я бы не стал.

screensquid

У этой программы другая логика: журнал импортируется в базу данных MySQL, затем данные запрашиваются из нее при работе в веб-интерфейсе.

Подробнее

Программа не может импортировать файлы логов с произвольным именем, привязка только к access.log.

Главная страница:

Краткая статистика:

Для IP-адресов можно создать псевдонимы:

… а потом их можно объединить в группы:

Переходим к основному - отчетам.

Слева меню с типами отчетов:

Трафик пользователей логины
Трафик пользователей IP адреса
Трафик сайтов
Топ сайтов
Топ пользователей
Топ IP адресов
По времени суток
Трафик пользователей логины расширенный
Трафик пользователей IP адреса расширенный
Трафик IP адреса с резолвом
Популярные сайты
Кто качал большие файлы
Трафик по периодам (дни)
Трафик по периодам (имя дня)
Трафик по периодам (месяцы)
HTTP статусы
IP адреса логинов
Логины с IP адресов

Примеры отчетов.

Трафик пользователей IP адреса:

Трафик сайтов:

Топ сайтов:

… далее, если честно, не хватило терпения для изучения возможностей, поскольку страницы стали генерироваться по 3-5 минут. Отчет «по времени суток» за день, лог за который вообще не импортировался, создавался боле 30 секунд. За день с трафиком - 4 минуты:

На этом все. Надеюсь, этот материал кому-нибудь пригодится. Всем спасибо за внимание.

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

Журнальные файлы прокси-сервера Squid даже для небольших предприятий могут быть очень объёмны. Их разбор вручную малоэффективен, а ведение статистики или какого-либо учёта просто не возможны. Для этого используют вспомогательные программы. Мы рассмотрим три из них: Sarg , Calamaris и LightSquid .

Рано или поздно мы (системные администраторы) хотим (или нас заставляют) установить контроль над использованием Интернет-трафика. У меня пользователи периодически недоумённо осведомляются, на что истратилась их квота. Конечно, чаще всего они, не глядя, скачали какое-нибудь обновление, но бывают случаи, от них не зависящие. Так, например, несколько раз приходилось сталкиваться со злонамеренными самообновляющимися страницами.

Ясность частично можно внести и штатными средствами, используя команды cat и grep. Например, сделать выборку из журнала для конкретного IP адреса командой:

#cat /var/log/squid/access.log | grep 10.0.0.15 > /tmp/10.0.0.15.txt

а затем перенести файл на компьютер, где есть MS Excel, и там его просматривать.

Или воспользовавшись небольшими скриптами grab_ip_traffic.sh и parse_squid_log.pl получить туже информацию, но отфильтрованную и отсортированную по нужному полю, с преобразованым временем из unix формата в человеческий вид.

Так я и делал, пока не потребовалось проводить более серьёзный анализ и вести статистику.

Подготовительные работы

Прежде чем приступить к установке и рассмотрению возможностей вспомогательных программ, обговорим несколько моментов.

  • Ради универсальности процедуры установки программ под разные операционные системы (семейства Unix) будем устанавливать их из исходных кодов. На сайтах программ указано, где можно взять уже собранные пакеты для определённых ОС. По возможности лучше использовать их, так как в этом случае пакет регистрируется в системе, что весьма полезно при автоматическом обновлении ОС, для получения подробной информации об установленном пакете, для соблюдения зависимостей при установки новых пакетов и в массе других случаев. Примите во внимание, что при установке собранного пакета пути к файлам могут отличаться от указанных в статье.
  • Для просмотра отчётов через веб-интерфейс нам понадобится, соответственно, веб-сервер. Условимся отчёты хранить в каталоге /var/www/html/reports.
  • Calamaris и LightSquid написаны на Perl, поэтому он должен уже стоять в системе. Автор Calamaris рекомендует ставить самую последнюю версию, хотя и упоминает, что некоторые пользователи успешно использовали его программу на Perl 5.001. Требования к Perl для LightSquid не приводятся, так что от себя скажу, что на версии 5.8.7 всё работает отлично.
  • Ну и сам Squid (www.squid-cache.org), конечно, уже должен быть установлен, вести журнал в родном формате (что определяется в squid.conf опцией emulate_httpd_log off) и проводить ежедневную ротацию журналов, не сжимая архивы. Последнюю задачу лучше поручить программе logrotate, указав в файле /etc/logrotate.d/squid следующее:
/var/log/squid/access.log { daily rotate 6 copytruncate nocompress notifempty missingok } … # далее описана ротация cache.log и store.log. Её не трогаем

а сам Squid освободить от этой обязанности, указав опцию logfile_rotate 0

Установка анализаторов

Всё, приступим. См. отдельные статьи Sarg , Calamaris и LightSquid

Заключение

У всех трёх программ есть настройки внешнего вида отчёта, графики. Все поддерживают русский язык. У каждой есть свои отличительные характеристики, заслуживающие внимания, и при наличии возможности можно установить все три, но если такой возможности (или желания) нет, то при выборе стоит учесть:

  1. нужны ли вам те или иные отчёты
  2. достаточно ли у вас дискового пространства, чтобы хранить все желаемые отчёты
  3. позволяет ли существующая нагрузка на процессор добавить генерацию всех желаемых отчётов. Для обработки 140 тысяч строк журнала на компьютере с процессором Pentium 4 с тактовой частотой 3GHz и с 1 Gb оперативной памяти потребовалось для всех трёх программ вместе при их последовательном запуске около 2,5 минут.

Напоследок хочу сказать, что, поискав в Интернете отклики по этим программам, вы обнаружите различные жалобы администраторов на их неудобство или даже частичную неработоспособность. Так, например, Sarg до сих пор останавливается на некоторых записях журнала, отказываясь создавать отчёт (благо, что такие записи у меня попадаются редко). Однако все три проекта довольно активно развиваются и недочёты исправляются, поэтому ставьте свежие версии программ и пользуйтесь!



Понравилась статья? Поделиться с друзьями: