Файлы посещений: мифы и реальность

Словарь терминов
обычный формат - common format
комбинированный формат - combined format
запрос, хит - hit
хост, удаленный компьютер - host
ссылающийся документ - referrer
сессия - session
код ответа - status code
идентификатор программы-клиента - user-agent

Часто при общении с другими вебмастерами разговор заходит о посещаемости их серверов. Задав вопрос о среднем количестве посетителей в день или об эффективности поставленной на каком-то сервере ссылки, иногда поражаешься услышанному ответу: "Ну, я точно не знаю - по Рамблеру около 300 человек в день, но он ведь не точный". Или того хуже: "А как это узнать?". Удивительно, но встречаются весьма профессиональные вебмастера, которые ничего не слышали или просто не задумывались о файлах посещений (лог-файлах). С другой стороны даже те, кто их анализирует и извлекает большое количество информации, не подозревают, что информации в них гораздо больше, чем они предполагали. Поэтому я решил рассказать вам о том, что можно и чего нельзя из них извлечь, как можно использовать полученные данные, какие инструменты можно для этого использовать.

Что же такое эти загадочные лог-файлы? Это обыкновенные текстовые файлы, в которые построчно записывается информация о каждом запросе файла у Веб-сервера. Сразу хочу объяснить тем, кто не знает подробностей работы HTTP протокола - для каждого отдельного файла браузер должен сгенерировать отдельный запрос. Представим, что мы запрашиваем HTML страницу, которая содержит пять графических элементов. В этом случае браузер сгенерирует шесть запросов к серверу, и в лог-файле появятся шесть новых строк. Помимо этого сервер помещает в лог-файл информацию и обо всех неудачных запросах, например, к несуществующим документам. То есть, строго говоря, в лог-файл помещается информация обо всех корректных запросах, полученных сервером. Справедливости ради отмечу, что некорректные запросы тоже регистрируются, но в другом файле - файле регистрации ошибок. Небезынтересный технический аспект: запрос регистрируется не в момент его прихода, а только после его полной обработки.

В общем случае лог-файлы могут иметь любой формат, он зависит не только от используемого сервера, но и от настроек, произведенных вебмастером. Но наибольшее распространение получили два формата - "обычный", использовавшийся самым первым Веб-сервером, и "комбинированный", называемый также "комбинированный NCSA формат", т.к. он впервые появился у сервера NCSA - прародителя всемирно известного Apache.

Строка лог-файла обычного формата выглядит так:

194.220.198.72 - admin [23/Feb/1999:22:48:05 +0300] 
"GET /admin/ HTTP/1.0" 200 9059

Все поля записи разделяются пробелами (если значение заключено в двойные кавычки, или в случае с датой в квадратные скобки, то оно воспринимается как одно поле), если значение у поля отсутствует, то ставится дефис.

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

В комбинированном формате в запись добавлены еще два поля - адрес документа, по ссылке с которого попали на этот ресурс и идентификатор программы-клиента (она размещена на двух строках для удобства восприятия, на самом деле это одна строка):

194.220.198.72 - - [23/Feb/1999:22:48:46 +0300] 
"POST /cgi-bin/hd.cgi HTTP/1.0" 200 293
  "http://webclub.ru/" "Mozilla/4.07 [en] (X11; 
  FreeBSD 2.2.8; Nav)"

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

Настало время проанализировать каждое поле более подробно и выяснить, какую полезную информацию можно из него извлечь.

Адрес источника запроса

Анализ этого поля позволяет с некоторой долей погрешности определить популярность вашего узла. Именно количество уникальных хостов за период времени, а не количество переданных файлов определяет популярность узла и интересует потенциальных рекламодателей в первую очередь. Используемый термин хост - понятие абстрактное и заменять его словом посетитель нельзя. Это связано с тем, что существует такое понятие, как прокси-сервер, который может запрашивать ваш узел от имени всей организации с, например, 200 работниками. Или в другую очередь у маленькой фирмы может быть только один компьютер, тогда за ним могут по очереди работать несколько человек. В локальной сети организации может быть настроено динамическое выделение адресов, тогда один человек может в разное время приходить на ваш узел с различных адресов. Кроме того, посетитель, имеющий доступ в Интернет черед коммутируемую линию провайдера (а таких достаточно много), может иметь разный адрес в процессе одного сеанса работы с вашим узлом - после обрыва связи, перезвонив провайдеру, посетитель с большой долей вероятности получит другой адрес. Все эти ситуации достаточно распространены, поэтому и принято использовать абстрактное понятие "хосты".

Некоторые анализаторы вводят такое понятие, как сессия. Под сессией они подразумевают последовательность запросов с определенного адреса с задержкой между ними не более 20-30 минут. Таким образом, если с одного адреса заходили утром и вечером, то это будет считаться двумя сессиями. Но, в связи со всем вышесказанным, это понятие не корректно. Правда в сервере Apache существует возможность протоколирования сессий с использованием cookies - при первом обращении посетителю выдается cookie, которая сохраняется до следующего перезапуска браузера.

Анализируя поле источника запроса, можно построить три достаточно информативных зависимости:

Имя авторизации

Прежде чем начать обсуждение этого поля, необходимо заметить, что корректное имя в этом поле гарантируется только в том случае, если код ответа меньше 400. Анализ данного поля полезен, если на вашем узле реализована система авторизации. Весьма полезно знать об активности авторизованных пользователей на узле, какие разделы они посещают чаще, кто из них более активен, а кто приходит очень редко. В том случае, если вы реализовали свободную регистрацию посетителей, то необходимо отслеживать "мертвых" посетителей, например таких, которые не заходили на узел в течение трех месяцев, и удалять их, чтобы не засорять базу данных и файл паролей.

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

Время

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

Запрос

Поле запроса является основополагающим при анализе посещаемости узла. Как я уже упоминал, сервером регистрируются все запросы к серверу (хиты). Вряд ли вам требуется иметь информацию о запросах к элементам оформления документов (картинкам, звукам, таблицам стилей, файлам с внешними сценариями и т.п.), поэтому при построении большинства отчетов "лишние" записи надо игнорировать. Поэтому многие анализаторы вводят такое понятие, как показы страниц. Вебмастер сам указывает, какие именно файлы считать страницами. В простейшем случае это *.html и *.htm. Далее под хитами мы будем подразумевать именно показы страниц. Перечислим наиболее информативные зависимости, строимые на основе этого поля:

Основываясь на понятии сессии, некоторые анализаторы вводят еще несколько понятий: точки входа на узел, точки выхода и пути перемещения посетителей по серверу (тропинки). Пути перемещения строятся на основе информации о порядке просмотра страниц узла посетителем в течение сессии. Полученная информация объединяется по всем пользователям, и наиболее популярные последовательности считаются путями. Нахождение этих точек и путей нужно производить именно на основе адреса и понятия сессии, а не ссылающегося документа, иначе все пути будут состоять из одной-двух страниц, а точками выхода - почти все страницы нижнего уровня. Ведь кнопка браузера "Back" является неотъемлемым и весьма логичным элементом системы навигации узла. В связи с тем, что сессия является расплывчатым понятием, точки входа на узел, точки выхода и пути перемещения тоже являются ненадежными, но все же, при правильном построении и четких настройках, могут дать представление о поведении посетителей на узле, о правильности построения системы навигации.

Код ответа

Как правило, код ответа используется для определения необходимости использования данной записи в анализе, но и сам по себе он используется в нескольких отчетах:

Количество переданных байт

Сама по себе информация об объеме переданных данных является скорее ознакомительной, но совместно с другими данными она позволяет выявлять полезные факты:

Ссылающийся документ

Это поле является наиболее важным при анализе предпринимаемых вами действий по раскрутке узла. В нем содержится URL документа, ссылающегося на данный файл. Это поле содержит прочерк, если посетитель набрал адрес на клавиатуре, выбрал его из закладок или каким то другим образом самостоятельно ввел его. При анализе данного поля надо помнить две вещи:

Во-первых, в связи с тем, что за корректность предоставляемых данных для этого поля отвечает браузер, в нем может содержаться неточная или некорректная информация. Браузер может сообщить неточный URL или просто адрес страницы, на которой до этого был пользователь, а потом ввел ваш адрес с клавиатуры.

Во-вторых, для всех объектов (графических файлов, апплетов и т.п.), указанных на запрошенной странице, ссылающимся документом будет эта страница, а не тот документ, который ссылался на запрошенную страницу.

При анализе этого поля интересными будут следующие зависимости:

В завершение разговора о ссылках хочу сказать, что не бывает необъяснимых всплесков посещаемости. Почти всегда это находит отражение в информации о ссылающихся документах. Такие всплески (если вы, конечно, сами ничего не предпринимали) означают, что вебмастер какого-либо популярного узла поставил на вас ссылку (например, ссылка дня на сервере Гласнета) или ваш узел упомянул в своих заметках один из популярных обозревателей Сети. Правда, именно "почти". Совсем недавно на одном из наших узлов мы с коллегами наблюдали всплеск посещаемости почти в три раза превосходящий среднесуточный уровень. Причем посетители появлялись "неоткуда". Только спустя несколько дней мы выяснили, что вечером предыдущего дня об этом узле рассказали в одной из популярных телевизионных передач об Интернете. Такие же всплески могут быть вызваны заметками в популярных журналах, таких как "Мир Интернет".

Идентификатор программы-клиента

За корректность информации в этом поле ответственность также несет браузер. Поэтому, как и в предыдущем случае, в нем могут появляться весьма странные, иногда очень веселые записи. Связано это с тем, что значение этого поля очень часто может менять владелец программы-клиента - ваш посетитель. Анализ этого поля позволяет осуществлять техническое развитие вашего узла в правильном направлении:

Теперь настало время выяснить, как на практике получить всю эту полезную информацию. Существует множество различных программ-анализаторов, но я хочу остановить ваше внимание на двух из них. Обе они являются одними из самым популярных, но в то же время абсолютно противоположными во многих отношениях.

WebTrends Log Analyzer

Log Analyzer работает на платформе Windows и может быть запущен как простое приложение или как сервис Windows NT. Он распознает более 30 форматов лог-файлов таких серверов, как Apache, Netscape, Microsoft, Oracle, Domino, IBM, CERN, NCSA и других. Log Analyzer генерирует отчеты в текстовом формате или в формате HTML и позволяет настраивать их внешний вид используя имеющиеся стили или через индивидуальные настройки таких параметров, как шрифты, цвета, фоны, размеры и вид таблиц и т.д. Log Analyzer предоставляет более 70 различных отчетов и графиков, каждый из которых можно включать или выключать по желанию, настраивать количество выходных данных для каждого отчета, способ сортировки.

Скорость работы Log Analyzer составляет более 30Мб исходных данных в минуту. Он позволяет обрабатывать лог-файлы объемом более 4Гб. Log Analyzer позволяет работать как с хранящимися локально лог-файлами, так и получать их с удаленного сервера по FTP или HTTP протоколу.

Для более точного представления информации о сессиях Log Analyzer обрабатывает информацию о специальных cookies, которую некоторые сервера помещают в лог-файлы для отслеживания конкретных посетителей. Вся обработанная информация помещается в специальную базу, таким образом Log Analyzer при повторном запуске не анализирует уже обработанные данные, что значительно сокращает время его работы при повторных запусках.

Log Analyzer позволяет обрабатывать несколько последовательных лог-файлов, а также выводить результаты на различных языках.

Log Analyzer имеет мощные механизмы настройки фильтров для конкретных отчетов, позволяя выделять, например, обращения к определенному разделу узла или посетителей только с определенного домена.

Перечислю наиболее интересные отчеты, которые умеет строить Log Analyzer:

Настройка рекламных блоков заключается в указании, какие именно графические элементы считать рекламой, а какие скрипты - обработчиками нажатий на них.

Log Analyzer заслужил множество наград, таких как PC Magazine Editors Choice, Software Publishers Association Codie Award Finalist, VARBusiness Recommends, Internet World's Best of the Test, PC Week & IT Excellence Award, Best of LAN Times.

Analog

Analog является многоплатформной программой и работает под Windows, Unix, OS/2, Dos и Macintosh. Analog распознает большое количество форматов лог-файлов, кроме этого есть возможность его настройки почти на любой формат. Он обрабатывает 200Мб исходных данных в минуту и поддерживает файлы более 25Гб.

Analog строит отчеты в формате HTML, а также позволяет сохранять результаты анализа в формате, удобном для машинной обработки. Он позволяет строить 27 различных отчетов на 26 различных языках, каждый из которых настраивается индивидуально по многим параметрам:

В поставку Analog включен специальный CGI-скрипт для быстрого анализа специфичных данных. Вы, например, можете запросить информацию по конкретному файлу или за указанный период времени.

Сравнительная таблица
  WebTrends Log Analyzer Analog
Поддерживаемые платформы Windows NT/95 Windows, Unix, OS/2, Mac, Dos
Скорость обработки данных 30 Mb/min 200 Mb/min
Доступ к лог-файлам через Сеть HTTP, FTP Нет
Чтение нескольких лог-файлов подряд Да Да
Инкрементное чтение лог-файлов Да Нет
Формат вывода HTML, Microsoft Word, Excel,
ASCII text, comma delimited
HTML
Посылка отчетов по e-mail Да Нет
Экспорт данных Да Да
Количество отчетов > 70 27
Поотчетная настройка Да Да
Поддержка различных языков Да Да
Объединение данных с нескольких узлов Дополнительно Нет
Возможность расширения Да, через подключаемые модули Да, изменение исходного текста
Стоимость $399, 30-ти дневный период
бесплатного тестирования
Бесплатный
Узел поддержки http://www.webtrends.com/ http://sunsite.org.uk/ packages/analog/