|
Bog BOS: analog: анализатор журналов сервера http |
Последние изменения: |
Последнее изменение текста: 20010313
Скопировано с www.bog.pp.ru: 2024.11.23
Достоинства: очень быстр (написан на C), бесплатен, гибко настраиваем.
Недостатки: слишком гибко настраиваем ;)
Версия 4.11 - июль 2000. Я пользовался также версией 1.92.
Поиск файлов конфигурации. Параметры по умолчанию устанавливаются при компиляции (берутся из файлов anlghea?.h). Затем читается стандартный конфигурационный файл (см. DEFAULTCONFIGFILE и ANALOGDIR в anlghead.h): /usr/local/analog/analog.cfg, если не задана опция -G в командной строке. Затем читаются файлы конфигурации, заданные в командной строке (+gимя-файла). Последним читается обязательный файл конфигурации, если он задан при компиляции (MANDATORYCONFIGFILE в anlghead.h). Параметры, заданные в обязательном файле не могут быть "перекрыты" пользователем. Если файл не найден, то analog не выполняется. Это позволяет администратору ограничить "свободу творчества" пользователей. Конфигурационный файл м.б. включен в другой с помощью команды CONFIGFILE. Отдельные команды можно включать в командной строке с помощью опции +C (+C"UNCOMPRESS *.gz gzcat"). Более поздняя команда перекрывает предыдущую, если параметр может принимать единственное значение (например, OUTFILE), или дополняет, если параметр может принимать несколько значений (LOGFILE).
Синтаксис. Строки, начинающиеся с диез, являются комментариями. Каждая команда располагается на отдельной строке (не более 254 символа) и начинается с имени команды. Если операнд содержит пробел или диез, то он д.б. заключен в апострофы или кавычки или круглые скобки.
Общие принципы работы: читает журналы, сгенерированные http-сервером (LOGFILE) , производит входные подстановки (ALIAS), проверяет какие строки из журнала включать или не включать (INCLUDE/EXCLUDE/FROM/TO), порождает отчет, сортирует, удаляет неинтересные строки (INCLUDE/EXCLUDE), производит выходную подстановку (OUTPUTALIAS), выводит в файл (OUTFILE, обычно stdout).
Имена и форматы журналов, сжатые
журналы. Для задание исходных
журналов
используется команда LOGFILE. Можно
использовать несколько раз или
перечислять журналы через запятую или с
помощью шаблона. Можно также
задавать имя(ена)
журнала(ов) в командной строке. Имена
накапливаются. Имя в
командной строке или частном файле
конфигурации отменяют имена,
заданные в
стандартном файле
конфигурации. Команда "LOGFILE none"
отменяет все
накопленные ранее имена журналов. Имя stdin
используется для чтения журнала со
стандартного ввода. Если журнал сжат, то
помогут команды:
UNCOMPRESS *.Z,*.gz /bin/zcat
UNCOMPRESS *.bz2 /usr/bin/bzcat # нет в
источнике
analog пытается
самостоятельно
определить формат журнала, но у него не
всегда получается. С помощью LOGFORMAT или APACHELOGFORMAT
перед LOGFILE можно задать его явно. APACHELOGFORMAT
воспринимает почти любую строку LogFormat из httpd.conf,
заключенную в круглые скобки. Можно
описать несколько форматов перед
журналом - analog будет
пробовать их по очереди (каждую строку в
отдельности, так что в одном журнале м.б.
строки записанные в разных
форматах). Команды DEFAULTLOGFORMAT и APACHEDEFAULTLOGFORMAT
описывают формат журнала,
используемый по умолчанию.
Задание языка отчета:
LANGUAGE RUSSIAN или LANGFILE
имя-файла
К сожалению, он явно
вписывает charset=KOI8-R, после чего
перекодировка русского apache делает из него
кишмиш.
Формат отчета:
OUTPUT HTML | PLAIN | TEXT | COMPUTER | NONE
Подстановка (Alias). При чтении журналов analog может делать подстановки (alias). Вначале выполняются встроенные подстановки (например, %7E преобразуется в тильду или имена хостов приводятся к строчным буквам). Затем выполняются пользовательские подстановки. Каждый объект преобразуется только раз. Левая часть подстановки может содержать шаблоны, включающие звездочку и знак вопроса. В правой части им соответствует знак доллара, сопровождаемый номером. Можно задавать преобразования следующих объектов:
Выходная подстановка (Output alias). Текстовые подстановки в получившемся отчете. Для каждой секции отчета задаются свои подстановки: REQOUTPUTALIAS, REDIROUTPUTALIAS, FAILOUTPUTALIAS, TYPEOUTPUTALIAS, DIROUTPUTALIAS, HOSTOUTPUTALIAS, DOMOUTPUTALIAS, ORGOUTPUTALIAS, REFOUTPUTALIAS, REFSITEOUTPUTALIAS, REDIRREFOUTPUTALIAS, FAILREFOUTPUTALIAS, BROWOUTPUTALIAS, FULLBROWOUTPUTALIAS, OSOUTPUTALIAS, VHOSTOUTPUTALIAS, USEROUTPUTALIAS и FAILUSEROUTPUTALIAS. Кстати, сортировка производится ДО подстановки.
В ALIAS и OUTPUTALIAS можно использовать регулярные выражения (в реализации perl), для этого левую часть надо предварить строкой "REGEXP:" (или "REGEXPI:" для игнорирования различия прописных и строчных букв). Также можно использовать $1, $2 и т.д. в правой части. Регулярные выражения сопоставляются с частью строки. Чтобы сопоставить их со всей строкой, надо использовать символы привязки к началу (^) и концу ($) строки.
Какие строки журнала включать или не включать в отчет. Решение делается после входной подстановки. Строка включается, если все объекты в ней желаемые. Команды INCLUDE и EXCLUDE рассматриваются последовательно. Приоритет имеет последняя соответствующая команда. Если не объект не соответствует ни одной команде INCLUDE/EXCLUDE, то он считается желательным, если первая команда была EXCLUDE и нежелательным, если первая команда была INCLUDE. Можно использовать шаблоны из звездочек и вопросительных знаков. Полный список команд: HOSTINCLUDE и HOSTEXCLUDE; FILEINCLUDE и FILEXCLUDE; BROWINCLUDE и BROWEXCLUDE; REFINCLUDE и REFEXCLUDE; USERINCLUDE и USEREXCLUDE; VHOSTINCLUDE и VHOSTEXCLUDE; STATUSINCLUDE и STATUSEXCLUDE. Аналогично подстановкам можно использовать регулярные выражения. STATUSINCLUDE/EXCLUDE вместо шаблона использует интервалы чисел.
Временной интервал задается командами FROM и TO (опции +F и +T в командной строке):
Какие строки отчета выводить в файл. Производится до выходных подстановок. Для каждой секции свои INCLUDE/EXCLUDE: REQINCLUDE и REQEXCLUDE можно использовать ключевое слово "pages"); REDIRINCLUDE и REDIREXCLUDE; FAILINCLUDE и FAILEXCLUDE; TYPEINCLUDE и TYPEEXCLUDE; DIRINCLUDE и DIREXCLUDE; HOSTREPINCLUDE и HOSTREPEXCLUDE; DOMINCLUDE и DOMEXCLUDE; ORGINCLUDE и ORGEXCLUDE; REFREPINCLUDE и REFREPEXCLUDE; REFSITEINCLUDE и REFSITEEXCLUDE; SEARCHQUERYINCLUDE и SEARCHQUERYEXCLUDE; SEARCHWORDINCLUDE и SEARCHWORDEXCLUDE; REDIRREFINCLUDE и REDIRREFEXCLUDE; FAILREFINCLUDE и FAILREFEXCLUDE; BROWSUMINCLUDE и BROWSUMEXCLUDE; FULLBROWINCLUDE и FULLBROWEXCLUDE; OSINCLUDE и OSEXCLUDE; VHOSTREPINCLUDE и VHOSTREPEXCLUDE; USERREPINCLUDE и USERREPEXCLUDE; FAILUSERINCLUDE и FAILUSEREXCLUDE.
LINKINCLUDE/LINKEXCLUDE - задают на какие файлы делать ссылки в отчете REQUEST.
REFLINKINCLUDE/REFLINKEXCLUDE - задают на какие файлы делать ссылки в секциях отчета Referrer Report, Redirected Referrer Report и Failed Referrer Report.
Подсказать analog какой аргумент
скрипта
соответствует
поисковой строке:
SEARCHENGINE
шаблон-URL-скрипта
имя-аргумента
например:
SEARCHENGINE http://www.yandex.ru/yandsearch text
Иерархические отчеты.
Некоторые секции (DOMAIN, DIRECTORY, ORGANISATION, FILETYPE, BROWSER)
позволяют создавать
иерархические отчеты. Какая часть
объектов включается в
иерархический отчет
управляется командами SUBDOMAIN, SUBDIR, SUBORG, SUBTYPE, SUBBROW
задающими шаблон (с
использованием ? и *).
Сортировка и
ограничение снизу для
подиерархий задаются
командами типа SUBDIRSORTBY и SUBDIRFLOOR. Они
должны быть одного типа с
сортировкой и
ограничением верхнего уровня. SUBDOMAIN
позволяет задавать
описательную часть,
например:
SUBDOMAIN 194.85.142 'Combellga'
Частичноиерархические отчеты. Request Report, Redirection Report, Failure Report, Referrer Report, Redirected Referrer Report и Failed Referrer Report позволяют делать иерархические отчеты по аргументам поиска, которые управляются командами *ARGSFLOOR и *ARGSSORTBY (команд SUB* нет). Частичноиерархический отчет OSREP управляется командами SUBOSFLOOR и SUBOSSORTBY.
Кеш. analog позволяет обработать журнал лишь один раз и сохранить результаты в промежуточном файле. После чего исходный журнал можно удалить и использовать кеш в качестве исходного файла. Но это обставлено таким количеством ограничений, что я подожду этим пользоваться (кстати, bzip2 сжимает combined log в 20 раз).
Экономия памяти за счет скорости. HOSTLOWMEM, FILELOWMEM, BROWLOWMEM, REFLOWMEM, USERLOWMEM и VHOSTLOWMEM указывают насколько важно экономить память (0 - не экономить; 3 - экономить так, что отчет будет не полон). Установив все в 1 или 2, я не заметил экономии памяти, хотя скорость и правда упала ;)
Есть возможность задавать параметры, заполняя форму (anlgform.html), которая вызывает CGI программу (anlgform.pl), но у меня большие сомнения в безопасности данной затеи.
|
Bog BOS: analog: анализатор журналов сервера http |
Последние изменения: |