|
www.lissyara.su
—> статьи
—> FreeBSD
—> программы
—> Free-SA
Анализатор статистики Free-SA
Автор: Andy.
Про анализаторы журналов прокси сервера Squid, на этом сайте, было сказано
достаточно много. В основном, рассматривались две программы: Sarg и Lightsquid.
Мне на глаза попалась еще одна программа, выполняющая функции, аналогичные
вышеперечисленным программам - Free-SA.
Привлек тот факт, что программа отечественная. "Отечественное - значит лучшее",
однажды изрек lissyara. Тезис, конечно, спорный, но в данном случае, он оказался прав.
Сначала обновим порты, процедура стандартна и уже не раз описана на этом сайте,
поэтому повторяться не буду. Итак, идем в директорию с портами и устанавливаем
программу:
cd /usr/ports/www/free-sa/ && make install clean
| Опции конфигурирования при сборке во FreeBSD отсутствуют, да и сама программа
довольно маленькая.
После установки перечитаем пути:
Либо, если у вас sh или bash
По адресу /usr/local/etc/free-sa/free-sa.conf.sample находится образец
файла конфигурации Free-SA. Его необходимо скопировать по тому же пути,
только с именем free-sa.conf. Небольшое пояснение по формату
конфигурационного файла Free-SA: его булевы опции могут принимать значения:
true/false,yes/no,
enable/disable, 1/0. Конфигурационный файл
должен обязательно заканчиваться пустой строкой.
Ниже приведено краткое описание опций конфигурационного файла free-sa.conf,
более подробную информацию можно посмотреть в руководстве
на данный файл (man free-sa.conf).
#
# Sample configuration file for free-sa(1)
#
# copy to /usr/local/etc/free-sa/free-sa.conf
#
#########
# FILES #
#########
#Полный путь к журналу. В нашем примере рассматриваем журнал Squid.
log="/var/log/squid/logs/access.log"
#Полный путь к файлу-таблице преобразования имен пользователей. В этом файле
#назначаются соответствия отображаемых в отчетах имен пользователей указанным в
#журнале именам пользователей или ip адресам.
usertab="/usr/local/etc/free-sa/usertab"
#Полный путь к файлу, содержащему расширения для отчета "Закачки".
#В комплекте идет несколько образцов таких файлов, включая образцы с
#расширениями аудио, видео, исполняемых файлов и файлов CD/DVD-образов.
downloads="/usr/local/etc/free-sa/downloads.sample"
#Полный путь к файлу локального фильтра. Локальный фильтр позволяет с
#использованием специальных выражений добавить еще один отчет, причем
#пользователь может сам определять, что должно отображаться в этом отчете.
local_filter=""
#Полный путь к файлу глобального фильтра. Глобальный фильтр имеет синтаксис
#подобный локальному (некоторые опции локального не доступны для глобального).
#Он позволяет пользователю указать критерии, при помощи которых фильтруется
#содержимое почти всех отчетов.
global_filter=""
###############
# DIRECTORIES #
###############
#Полный путь к директории, в которую Free-SA должен разместить директорию и
#файлы отчета за определенный период.
targetdir="/usr/local/www/data/free-sa"
#Полный путь к директории, в которой Free-SA хранит рабочие файлы во время
#генерации очередного отчета. Этому параметру лучше не присваивать значения
#/tmp, так как при старте Free-SA его полностью очищает, к тому же небезопасно
#хранить в общедоступной директории вполне читаемые файлы со статистикой всех
#пользователей.
tmpdir="/var/cache/free-sa"
#####################
# REPORTS SELECTION #
#####################
#Формировать отчет "Популярные сайты".
ts="true"
#Формировать отчет "Ошибки аутентификации на прокси" (код 407).
paf="true"
#Формировать отчет "Ошибки аутентификации на сайтах" (код 401).
saf="true"
#Формировать отчет "Запрет на прокси" (код 403). Сюда попадут только URL
#блокированные прокси при помощи списков контроля доступа (ACL).
pdn="true"
#Формировать отчет "Запрет на сайтах" (код 403).
sdn="true"
#Формировать отчет "Метод прямого соединения CONNECT".
cct="true"
#Формировать отчет "Метод отправки данных PUT/POST".
pst="true"
#Формировать отчет "Закачки". Закачки определяются согласно файла расширений,
#указываемого через опцию downloads.
dld="false"
#Создавать подробный отчет на каждого пользователя, в котором будут отображаться
#только URL посещенных пользователем сайтов.
users="true"
#Создавать расширенный отчет на каждого пользователя, в котором будут
#отображаться полные URL посещенных пользователем ссылок. При включении этой
#опции общее время генерации отчета за период увеличивается.
fullurl="true"
#Создавать отчет "Пользователи" в текстовом формате и отправлять его
#на e-mail адрес указанный в строке. При указании '-' в качестве e-mail адреса,
#отчет будет выведен на stdout.
#email=""
##################
# REPORTS LIMITS #
##################
#Ограничить количество отображаемых URL на одного пользователя в соответствующих
#отчетах. См. секцию REPORTS SELECETION с описанием отчетов.
#0 - отсутствие лимита. По умолчанию: 50.
#paf_limit="50"
#saf_limit="50"
#pdn_limit="50"
#sdn_limit="50"
#cct_limit="50"
#pst_limit="50"
#dld_limit="50"
#lcf_limit="50"
#Ограничить количество символов в видимой части URL для всех отчетов. Это
#полезно, чтобы таблицы отчетов не расползались в ширину из-за присутствия
#слишком длинных URL. При клике по такой укороченной URL ссылке или наведении на
#нее курсора мышки вы соответственно или перейдете на полную URL или увидите ее
#в строке статуса браузера.
#0 - отсутствие лимита. По умолчанию: 50.
#url_limit="50"
#Ограничить количество сайтов в отчете "Популярные сайты".
#0 - отсутствие лимита. По умолчанию: 0.
#ts_limit="0"
#Отображать справа индикаторы соответствующие присутствие ссылок в
#paf/saf/и.т.п. отчетах к пользователям, URL сайтов и полным URL.
#Минимальный размер файла по URL, который необходимо отображать в отчете
#"Закачки".
#0 - отсутствие лимита. По умолчанию: 0.
#dld_min="0"
#Интервал обновления страницы для отчета реального времени (free-sa.cgi),
#указывается в миллисекундах. По умолчанию: 5000, т.е. 5 секунд.
#rtr_timeout="5000"
####################
# OTHER PARAMETERS #
####################
#Имя отчета за период, которое будет отображено в списке всех отчетов за период.
#По умолчанию: полный путь к файлу конфигурации.
name="My report"
#Формат журнала. 0 соответствует родному формату журнала Squid.
logformat="0"
#Пропускать ошибочные записи в журнале и продолжать его анализ со следующей
#записи. По умолчанию, при обнаружении ошибочной записи, Free-SA остановит
#анализ журнала и начнет генерировать отчеты.
#skip_errors="false"
#Создать отчет за период с полной информацией, то есть в отчет будут
#включены и попадания в кэш и локальный трафик и реальный трафик, который
#ушел/пришел в/из сети Internet.
fulltraffic="true"
#Отображать в отчетах имена пользователей, когда в журнале есть и имена
#пользователей и IP адреса.
inameuser="true"
#Экранировать имена пользователей в локали UTF-8. Это полезно при
#использовании Squid с NTLM аутентификацией, когда имена пользователей содержат
#не ASCII символы.
#user_unescape="false"
#Отображать справа индикаторы соответствующие присутствие ссылок в
#paf/saf/и.т.п. отчетах к пользователям, URL сайтов и полным URL.
indicators="true"
#При создании нового файла отчетов, удалять старые файлы, согласно следующего
#правила:
#2 - означает удалять все старые отчеты, диапазон дат которых лежит внутри
#диапазона нового отчета с точностью в 1 секунду.
#1 - означает удалять все старые отчеты, диапазон дат которых соответствует
#диапазону нового отчета с точностью в 1 день.
#Удаление происходит после создания нового отчета или при запуске Free-SA с
#опцией -F.
overwrite="2"
#Пытаться преобразовывать IP адрес из журнала в имя, и использовать это имя в
#качестве имени пользователя в отчетах. Данная опция может сильно замедлить
#создание отчета.
#resolveip="false"
#Отображение информации о Free-SA внизу страницы каждого отчета "a la" Squid.
showinfo="true"
#Для определенных журналов строка ниже будет использоваться как префикс для
#адреса сайта.
#site=""
#Картинка или логотип, отображаемая наверху страницы каждого отчета.
#Можно использовать как относительные, так и абсолютные URL.
#logo=""
#Переключать локаль на указанную ниже после разбора опций командной строки.
#Это полезно, когда необходимо запускать Free-SA через crond. При этом в самом
#crontab опции командной строки следует указывать в формате локали, в которой
#произойдет запуск Free-SA (это замечание критично для дат в опции -d).
#locale=""
#Удалять отчеты, старше указанного времени в секундах. Можно также использовать
#ключевые слова: year, quarter, month, week, day.
#Удаление происходит после создания нового отчета или при запуске Free-SA с
#опцией -F.
#rotate=""
#Единицы измерения, используемые в файле отчета (байты, килобайты, магабайты и
#т. д.). При указании единицы измерения "v" будет использован адаптивный
#механизм: 1 байт отобразится как "1", а 1024 байт уже как "1к".
#По-умолчанию: байты.
divisor="b"
| А теперь, небольшое сравнение скорости журналов при помощи Sarg'а и Free-SA.
Использовался следующий лог файл:
powercharge# free-sa -s
Log file information:
File name: /home/andy/squid.log
File size: 9 606 098 556
Start date and time: 01.01.2009 00:01:25
End date and time: 01.02.2009 00:01:07
| Переходим в обычный POSIX shell, ибо csh отказывается принимать
ключ -h у команды time:
Запускаем Free-SA:
# time -h free-sa -l /home/andy/squid.log -o /home/andy/reports/
1h14m23,19s real 37m21,60s user 2m34,73s sys
| Теперь попробуем Sarg:
# time -h sarg -l /home/andy/squid.log -o /home/andy/reports/
/usr: create/symlink failed, no inodes free
SARG: (report) Не могу открыть файл: /home/andy/reports//01Jan2009-01Feb2009/mni
kolaev/ttmnikolaev-qip_ru_images_bg_left__gif.html
4h57m42,64s real 1h37m34,65s user 1h36m51,98s sys
| К сожалению, тест не удалось провести до конца, потому, что закончились
свободные иноды. Использовался следующий конфиг Sarg'а:
cat /usr/local/etc/sarg/sarg.conf
language Russian_koi8
access_log /DOWNLOADS/logsamples/squid.log.hmb
graphs yes
title "My test report"
temporary_dir /home/andy/sarg/
output_dir /home/andy/reports/
date_format e
use_comma yes
topsites_num 100000
topsites_sort_order BYTES D
max_elapsed 0
report_type topusers topsites sites_users \
users_sites date_time denied auth_failures \
site_user_time_date downloads
long_url yes
date_time_by bytes
charset Koi8-r
user_invalid_char ""
show_successful_message no
show_read_statistics no
topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES\
TOTAL AVERAGE
user_report_fields CONNECT BYTES %BYTES TOTAL AVERAGE
bytes_in_sites_users_report yes
topuser_num 0
show_sarg_info yes
show_sarg_logo no
displayed_values bytes
authfail_report_limit 50
denied_report_limit 50
siteusers_report_limit 500000
user_report_limit 500000
external_css_file /usr/local/etc/sarg/css.tpl
download_suffix "000,3gp,7z,aac,ace,amr,ape,arj,asf,avi,\
b5i,bat,bin,bwi,bwt,bz2,bzip,c2d, сab,ccd,cdi,cgz,cif,cmd,\
com,cpio,cue,daa,dao,dll,dmg,exe,flac,flv,gcd,gi,gz,gz,ha,\
ha,img,iso,lcd,lha,lnk,lz,lzh,m2v,mdf,mds,mkv,mod,mov,\
movie,mp3,mp4,mpe,mpeg,mpg,mxu,ncd,nrg,ogg,pdi,pif,psx,\
ra,rar,raw,scr,sh,shs,src,sys,tao,tar,tgz,tta,vc4,vcd,vdi,\
vob,wav,wma,wmv,wv,xbx,Z,zip"
| Небольшое отступление. Free-SA версий с 1.4.5 до 1.5.1 некорректно
работали во FreeBSD 7.0, вылетая с ошибкой sh environment corrupt.
Эта ошибка устранена в версии 1.5.1.
Картинка с внешним видом Free-SA по умолчанию:
Детальный отчет выглядит так:
P.S: Порт можно изменить для повышения производительности.
Для этого необходимо заменить имеющийся патч в
/usr/ports/www/free-sa/files/patch-global.mk на такой:
|
файл
|
скачан
|
размер
|
размещён
|
примечание
|
|
748
|
1.9kb
|
2009-02-18
|
измененный патч файл
|
|
p.S: Патч повесил в pr: http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/131709
P.P.S: Дополнительная оптимизация не будет работать во FreeBSD 6 ветки,
потому, что в имеющимся там gcc, нет опции native.
размещено: 2009-02-18,
последнее обновление: 2009-02-18,
автор: Andy
|
|
Комментарии пользователей [5 шт.]