Генерация отчетов для squid
Раздел : Система. Администрирование
Опубликовано NULL [14/08/2008]
Intro

В данном отчете рассматриваются только программы/скрипты, для работы которых не нужен веб-сервер. Связано это прежде всего с требованиями к безопасности, а также с тем, что для прокси обычно используют не очень мощные компьютеры, а следовательно дополнительная нагрузка очень критична. Ещё одна из причин - «труднодоступность»/удаленнность такого компьютера и/или неудобство работы на нём.

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

Ну и последнее — все вышесказанное опробовано в OpenSUSE 11.0. Все пакеты были установлены без особых проблем. Для других дистрибутивов Linux могут быть некоторые различия, например в путях к файлам.

free-sa 1.4.4

Про free-sa, который написан на C(++), говорят, что это почти полный аналог SARG'а. Free-sa значит Свободный Анализатор Статистики (free statistic analyzer). Free-sa поддерживает Squid, CGP, CERN/NCSA, Postfix, Qmail. Последние два с пометкой EXPERIMENTAL. А также Communigate pro 5.x с пометкой VERY EXPERIMENTAL ;)

Выкачиваем программу с http://free-sa.sourceforge.net/. Установка rpm-пакета не вызывает никаких трудностей. Если не устанавливается — разрешаем зависимости.

Теперь необходимо настроить файл конфигурации free-sa.conf. По-умолчанию он находится в каталоге /usr/local/etc/free-sa. Если конфиг необходимо переложить в другой каталог, то free-sa надо вызыывать так:
free-sa -d year -f /home/admin/docs/free-sa.conf

В этом случае будет построен отчет за последний год, а файл конфигурации будет взят из /home/admin/docs.

Для формирования отчетов на основе squid'овского access.log в секции FILES файла free-sa.conf необходимо раскомментировать параметр log и указать полный путь к access.log.


Также в секции DIRECTORIES указываем targetdir= «путь, куда сохраняется сгенерированный отчет» и tmpdir= «каталог для хранения временных файлов». Базовая настройка free-sa закончена.

Как показывает практика лучше скопировать access.log squid'а на другую машину, и генерировать отчет на ней. Корректная работа на работающем squid пока не проверялась. Я скопировал архивы логов к себе в домашнюю директорию /home/null/squid. Выглядит это так: access.log-DATE.bz2.
Раньше я думал, что squid сам зипует файлы логов, но оказалось, что это делает logrotate. Подробная инфа в man logrotate. Как оказалось это очень полезная вещь, особенно для серверных систем.
Для открытия файлов типа bz2 качаем bzip2 http://www.bzip.org/. На момент написания статьи самая свежая версия была bzip2-1.0.5. Для установки пакета необходимо запустить:

make
make install

Естественно, для установки нужны права root. После установки переходим в директорию с архивами логов, и выполняем:
bunzip2 -fkvsVL access.log*.bz2

или в моем случае:
bunzip2 -fkvsVL /home/null/squid/access.log*.bz2 

После этого в каталоге появится множество файлов access.log-ДАТА Т.к. free-sa работает только с одним файлом access.log выполняем:
cat access.log* > access.log

можно использовать абсолютные пути:
cat /home/null/squid/access.log* > /home/null/squid/access.log

Теперь у нас есть общий лог-файл squid'а за необходимый период времени. Проверяем сможет ли с ним работать free-sa:
free-sa -s


После этой команды должно появится нечто подобное:



Если ошибок нет, то можно генерировать отчет.
free-sa -d [year]|[month]|[day]

Отчет можно сгенерировать за день, месяц или год.
Очень важно, что нельзя указывать произвольный период времени, т.е. нужно выбрать или зарезервированное слово или указать дату начала или окончания. Время необходимо указывать в текущей локализации Linux. Например:
free-sa -d 01.01.20008-
или
free-sa -d -01.08.2008


В первом случае отчет будет сгенерирован с 01.01.2008, а во втором, с даты начала ведения лога, до 01.08.2008.

Отчет генерируется несколько минут. Чтобы автоматизировать всякие рутинные операции я написал скрипт, который сам распаковывает access.log'и, объединяет их в один, выводит информацию о нем, и генерирует отчет.



Команды echo оповещают админа о текущем действии скрипта. Немного поизвращался с цветом текста ;)

Ещё хочется отметить
man free-sa
man cat
и
man bzip2

которые очень помогли, и вообще RTFM!

calamaris v. 2.59

Calamaris это скрипт на perl, который генерирует на основе access.log squid'а отчет о посещениях и т.п. Отчет удобен прежде всего для анализа статистики «в целом» по посещениям сайтов. Особенно интересны секции Request-destinations by 2nd-level-domain, TCP-Request-protocol, Incoming TCP-requests by host и Requested extensions. А для детального анализа по отдельным пользователям лучше использовать free-sa.

Скрипт можно установить (!) из rpm или из архива. При установке из архива достаточно просто распаковать имеющиеся в нем файлы, и разрешить выполнение calamaris.pl. В первой строчке этого файла необходимо указать корректный путь к интерпретатору perl. Установка из rpm также проходит без каких-либо трудностей. Для использования графики в отчетах необходима установка библиотеки gd.

Хотя в интернете и были представлены красивые отчеты с графикой и диаграммами, мне их создать не удалось. И файл /etc/calamaris.conf по-моему тоже никак не используется. Может быть это связано с версией моего скрипта, но параметра graph при выводе на экран в скрипте я не нашёл, и ссылки на /etc/calamaris.conf тоже.

Сгенерировать отчет удалось вот таким образом:

cat /home/null/squid/access.log | calamaris -asvH 'lookup' -f squid-old -F html > /home/null/squid/report.html

Больше всего удивило то, что для squid 2.5stable12 потребовался параметр squid-old, рекомендованный для squid 1.2 и младше. Теперь ключи:

-a — выводит все возможные отчеты;

-s — делает более информативным сгенерированный отчет;

-v — делает более информативным процесс генерации отчета;

-H — добавляет в заголовок отчета имя хоста, т.е. с параметром 'lookup' выдаст имя вашей машины;

-f — входной формат файла лога;

-F — выходной формат файла отчета.

Стоит отметить, что изучив man calamaris и поигравшись с параметрами можно сгенерировать очень красивый отчет (без графики).

Outro
Был опробован скрипт под названием Squid-log-analyzer 0.6 версии. Использовать категорически не рекомендуется, т.к. он просто переводит access.log squid'а в более читабельный html. С таким же успехом access.log можно открыть в MS Excel, т.е. простите в OpenOffice Calc. Низачот такому анализёру.

Спасибо всем, кто дочитал до конца. Если данный материал кому-нибудь пригодится — буду очень рад. Принимается конструктивная критика — на её основе буду улучшать статью. Также принимаются ссылки на подобные проги/скрипты — будем изучать.

Обсуждение статьи "генерация отчетов в squid"

July-august 2008
© NULL