Squid просмотр статистики. SARG - анализируем логи прокси-севера Squid

Недавно в нашей компании возникла необходимость перевести прокси-сервера с 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 минуты:

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

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

Думаю, многим известна утилита tail , которая позволяет просматривать последние строки текстового файла. Удобнейшая вещь при просмотре лог-файлов. Ко всему прочему tail может работать в т. н. follow -режиме. В этом режиме утилита «следит» за изменениями в файле и выводит новые строки в поток вывода по мере их появления в режиме реального времени. Довольно часто необходимо бывает следить одновременно более чем за одним файлом. Согласитесь, переключение между несколькими терминалами - не самый удобный способ. К счастью, существует MultiTail — утилита, основным назначением которой является вывод содержимого одновременно более чем одного файла в одно окно.

Список возможностей MultiTail впечатляет. Назвать его просто улучшенным tail было бы, мягко говоря, неуважительно. Взгляните на некоторые, основные возможности утилиты:

  • вывод более чем одного файла в терминал, который делится на т. н. окна;
  • терминал может разделяться на окна как горизонтально, так и вертикально;
  • окна можно создавать, перемещать, закрывать, объединять и временно скрывать;
  • в одно окно можно выводить более одного файла;
  • поиск как в одном окне, так и во всех сразу;
  • фильтрация строк перед выводом при помощи регулярных выражений;
  • мерцание экрана или звуковое оповещение при обнаружении определённого текста;
  • подсветка цветом текста на основе регулярных выражений;
  • направление вывода в текстовые файлы (работает, подобно tee );
  • работа в режиме syslog-сервера;
  • подавление вывода дублирующихся строк;
  • изменение конфигурации MultiTail «на лету» в ответ на изменения в наблюдаемом файле;
  • наблюдение за потоком стандартного ввода;
  • преобразование IP-адресов в имена хостов, значений errno в текстовые описания, etc;
  • разнообразные варианты обрезки длинных строк: справа, слева, определённую часть;
  • горизонтальная и вертикальная прокрутка, режим переноса длинных строк;
  • и многое, многое другое!

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

$ sudo apt-get install multitail

Во FreeBSD из портов можно установить так:

# portsnap fetch update # cd /usr/ports/sysutils/multitail # make install clean

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

Несколько некрасиво получается с учётом переноса строк. Можно попросить multitail обрезать строки справа (оставлять только начало строки):

или слева (оставлять только конец строки):

Следим за пингом google.com:

$ multitail -l "ping google.com"

Усложняем. Следим за пингом и поглядываем на протокол Squid :

$ multitail -l "ping google.com" -i /var/log/squid/access.log

Наблюдаем за двумя пингами и лог-файлом:

Multitail -l "ping ubuntu.com" -l "ping yandex.ru" -i /var/log/squid/access.log

Вариант с использованием вертикальных областей (опция «-s 2» делит терминал на две вертикальные области):

$ multitail -s 2 -i /var/log/squid/access.log -l "ping ubuntu.com" -l "ping yandex.ru"

Вывод двух команд в одно окно (опция «-L» добавляет вывод команды в окно предыдущей) и просмотр двух лог-файлов:

$ multitail -l "ping ubuntu.com" -L "ping yandex.ru" -p l -i /var/log/squid/access.log -i /var/log/dmesg

Просмотр лога Apache. Опцией «-cS apache» сообщаем multitail , что при выводе лог-файла необходимо использовать цветовую схему «apache». Полный список поставляемых в комплекте цветовых схем можно получить в /etc/multitail.conf .

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

$ multitail -ec ""GET[^"]+"" -cS apache /var/log/apache2/access.log

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

Недавно в нашей компании возникла необходимость перевести прокси-сервера с 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 - отчет о посещенных сайтах каждым пользователем.

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

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-адреса получим список сайтов по пользователю в порядке убывания трафика:

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


Программа не принимает сжатые файлы логов, не принимает больше одного файла с параметром -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, затем данные запрашиваются из нее при работе в веб-интерфейсе. База с обработанным десятидневным логом, упомянутым ранее, занимает 1,5 Гб.

Подробнее

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

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

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

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

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

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

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

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

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

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

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

Топ сайтов:

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

Добавить метки

Отправить анонимно

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. (опять же, на английском)

Одним из насущных вопросов для системного администратора является получение статистики использования интернета в организации. Располагая такими данными всегда можно ответить на вопрос руководства "куда ушел весь интернет", обосновать необходимость расширения канала, своевременно выявлять и пресекать нежелательный трафик. Сегодня мы рассмотрим такое решение для на платформе Ubuntu Server.

Основной интересующий нас тип траффика - HTTP, который составляет львиную долю входящего интернет-трафика в организации и наиболее интересен, так как позволяет судить об активности и предпочтениях пользователей (а также о том, как они проводят рабочее время). Все необходимые нам данные имеются в логах прокси-сервера Squid, но не будем же мы просматривать их вручную! Необходим инструмент, позволяющий анализировать и предоставлять отчеты на основе этих логов. Одним из таких инструментов является SARG - Squid Analysis Report Generator , что и отражено в его названии.

Приступим. Прежде чем браться за установку SARG необходимо подготовить сервер, данная утилита выдает отчеты в формате HTML и для работы с ними потребуется установленный веб-сервер. Если вы не собираетесь использовать роутер в качестве полноценного веб-сервера, то будет вполне достаточно легкого сервера lighttpd :

Sudo apt-get install lighttpd

Сервер начинает работать сразу после установки, для проверки наберите в браузере адрес сервера и вы увидите стандартную страницу. По умолчанию lighttpd принимает соединения на всех интерфейсах, что нас никоим образом не устраивает, ограничим его работу внутренней сетью. Открываем конфигурационный файл /etc/lighttpd/lighttpd.conf , находим и приводим к следующему виду опцию:

Server.bind = "10.0.0.1"

где 10.0.0.1 - внутренний адрес роутера, также не забудьте раскомментировать эту строку и перезагрузить веб-сервер:

Sudo /etc/init.d/lighttpd restart

Устанавливаем SARG:

Sudo apt-get install sarg

Настройка анализатора логов довольно проста и сводится к выбору языка, кодировки и формата отчета, а также пути для его размещения. Все изменения вносим в файл /etc/sarg/sarg.conf :

Language Russian_UTF-8
graphs yes
graph_days_bytes_bar_color orange
output_dir /var/www/squid-reports
charset UTF-8

Также находим и комментируем строку:

#site_user_time_date_type table

Теперь можем проверить работу анализатора:

Sudo /usr/bin/sarg

После того как утилита закончит работу набираем в браузере http://10.0.0.1/squid-reports , вы должны увидеть следующую страницу:

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

По каждому пользователю можно получить исчерпывающую статистику:

Можно также просмотреть график потребления трафика и статистику работы по датам и времени.

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

Анализатор настроен и работает, это хорошо. Но запускать его каждый раз вручную не очень интересно, поэтому настроим систему на получение ежедневных, еженедельных и ежемесячных отчетов. Для этого откроем файл /etc/sarg/sarg-reports.conf и укажем путь для размещения отчетов, а также адрес и ссылку для логотипа.

HTMLOUT=/var/www/squid-reports
LOGOIMG=/sqiud-reports/logo.svg
LOGOLINK="http://10.0.0.1/squid-reports"

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

Теперь зададим расписание для формирования отчетов, которое необходимо добавить в /etc/crontab

00 09-18 * * * root sarg-reports today
00 22 * * * root sarg-reports daily
30 22 * * 0 root sarg-reports weekly
30 23 1 * * root sarg-reports monthly

Данное расписание означает, что каждый час с 9:00 до 18:00 (рабочий день организации) запускается скрипт формирования ежедневной статистики, каждый день в 22:00 формируется статистка за день, в 22:30 Воскресенья - статистка за неделю и первого числа каждого месяца в 23:30 статистика за месяц.