@ Карта сайта News Автора!

Bog BOS: analog: анализатор журналов сервера http

Последние изменения:
2024.03.28: sysadmin: Файловая система zfs под Linux для архива (обновление от 0.6 до 2.2)

Последнее изменение текста: 20010313
Скопировано с www.bog.pp.ru: 2024.04.20

Bog BOS: analog: анализатор журналов сервера http

Ссылки

Достоинства: очень быстр (написан на C), бесплатен, гибко настраиваем.

Недостатки: слишком гибко настраиваем ;)

Версия 4.11 - июль 2000. Я пользовался также версией 1.92.

Установка (RedHat 6.2)

  1. загрузить analog-4.11.tar.gz
  2. отредактировать anlghead.h , anlghea2.h (все параметры можно переопределить в файлах конфигурации)
  3. make
  4. переслать файлы из lang/ в /usr/local/analog/lang, сам analog в /usr/local/analog, файлы из images/ в подходящее место
  5. попробовать: /usr/local/analog/analog
  6. стандартный файл конфигурации
  7. конфигурационные файлы для конкретных применений и виртуальных хостов (собственно, имя журнала, имя хоста и куда положить результат можно задать в командной строке)
  8. процедура для обсчета всех видов статистики
  9. вставить вызов ее в cron
  10. интерактивное задание параметров через cgi-bin

Понятия

Командная строка:

Секции отчета (первая буква соответствует ключу командной строки, порядок задается REPORTORDER буквы):

Конфигурирование

Поиск файлов конфигурации. Параметры по умолчанию устанавливаются при компиляции (берутся из файлов 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), но у меня большие сомнения в безопасности данной затеи.

@ Карта сайта News Автора!

Bog BOS: analog: анализатор журналов сервера http

Последние изменения:
2024.03.28: sysadmin: Файловая система zfs под Linux для архива (обновление от 0.6 до 2.2)



Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru