Предварительная обработка результатов измерений

Результаты измерений Web-трафика обычно имеюг большой объем, их можно Анализировагь различными способами. Предварительная обработка включает в себя следующие три шага:

•   Синтаксический анализ для обнаружения ошибочных записей.

•   Фильтрация данных для удаления ненужных полей.

•   Преобразование данных в формат, удобпый для анализа.

Предварительная обработка облегчает работу разнообразных инструментов для хранения, анализа и отображения результатов анализа. С другой стороны, предварительная обработка должна сохранить ключевые данные, чтобы не налагать ненужных ограничений на последующий анализ. Конкретные примеры предварительной обработки данных измерений приведены в главе 14 (раздел 14.2).

Синтаксический анализ результатов измерений

Как первый этап предварительной обработки данных измерений, синтаксический анализ проводится независимо от семантики данных. Результаты измерений обычно состоят из набора записей, состоящих из одного или более полей. Например, журнал в формате CLF, показанный на рис 9.1, содержит четыре записи с семью полями каждая. Результаты мониторинга пакетов могут иметь более сложный формат. Синтаксический анализ включает в себя определение границ между отдельными полями в каждой записи и между записями. Например, записи могут отделяться друг от друга символом перехода на новую строку или пустыми строками, а поля — пробелами или символами табуляции. Записи переменной длины могут включать в себя поле длины, показывающее начало следующей записи. Каждое поле также может иметь собственный формат, в частности, значение времени может заключаться в квадратные скобки (например, [15/0ct/2000:00:00:25 -0400]), а строка запроса — в кавычки (например, "GET /img/logo.gifHTTP/1.0").

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

Фильтрация результатов измерения

Следующий этап предварительной обработки — фильтрация результатов измерений для удаления ненужных полей и записей. В некоторых случаях отдельные поля могут быть опущены, так как в них нет полезной информации для данного исследования. Например, у каждой записи в журнале формата CLF на рис. 9.1 в полях Remote identity и Authenticated user стоят "-", потому что на сервере отключена идентификация и не применяется аутентификация (ие записывается информация о регистрации пользователей). Из журиала можно исключить эти ноля, так как они неинформативны. Кроме того, программа, производящая фильтрацию, может удалить ненужные для анализа поля. Примером может служить результат мониторинга пакетов, который включает полные заголовки ответов и запросов. Использование только первых строк заголовков может быть достаточно для мпогих задач. Пропуск оставшейся части заголовка сократит накладные расходы, связанные с хранением дапных. Но удаление полей требует тщательного определения пабора аналитических задач, которые будут проводиться иад результатами измерений.

Фильтрация может также включать в себя удаление целых записей в зависимости от содержимого одного или нескольких полей. Записи с некорректными значениями полей могут оказать отрицательное влияние на последующий анализ. Например, запись в формате CLF может иметь хотя и синтаксически правильное значение времени, но не попадающее во временной интервал, который покрывает журнал. Помимо удаления ошибочных записей, фильтрация может использовагься для удаления записей, не связанных с текущим анализом. Например, для анализа количества запросов тех или иных ресурсов с сервера могут быть не нужны запросы, возвращающие некоторые коды ошибок. Подобным образом анализ ресурсов с изображениями может сосредоточиться на запрашиваемых URI с расширениями, соответствующими стандартным форматам изображений (например, .gif и .jpg).

Преобразование данных измерений

На последнем этапе предварительной обработки осуществляется преобразование данных, чтобы получить новый набор записей для последующего анализа. Преобразованные данные могут иметь более простой синтаксис, который удобпее анализировать. Например, поле запроса в журнале формата CLF может быть преобразовано в три отдельных поля: метод запроса, запрошенный URI и версия протокола. Подобным образом, поля, чувствительные к регистру, могут быть нриведеиы к единому формату. Например, Content-Length и Content-length следует трактовать как один и тот же заголовок. Кроме того, возможно преобразование содержимого полей в другой тип данных. Значение времени, представленное в журнале как год, месяц, деиь, час, минута и секунда, может быть преобразовано в одно число, используя, например, представление времени в UNIX (число секунд, прошедших с полуночи 1 января 1970 года). В качестве другого примера IP-адрес клиента в десятичной точечной записи (10.34.197.3) может быть преобразован в 32-разрядпое беззнаковое целое число для уменьшения объема данных.

Другие преобразования включают изменение семантики полей с целью добавить или изъять информацию в каждой записи. Например, журнал в формате CLF на рис. 9.1 включает IP-адрес запрашивающего клиента. IP-адрес может быть преобразован в доменное имя с помощью запроса к DNS-серверу. Выполнение этого преобразования уже после того, как журнал был сформирован, позволяет избежать излишней нагрузки на сервер, связанной с преобразованием IP-адресов в доменные имена в ходе обработки НТТР-запросов. Тем не менее, это преобразование следует произвести как можно быстрее, чтобы получить достоверную информацию. Выполнение преобразования в процессе предварительной обработки также избавляет от необходимости переводить IP-адреса в доменные имена по несколько раз в течепие последующего анализа. Другие преобразования могут скрыть ту или иную личную информацию пользователей. Например, программа предварительной обработки может включать в себя функцию, которая кодирует IP-адреса пользователей.

Подходящий язык программирования для преобразования данных зависит от сложности требуемых операций. Языки сценариев могут подходить для простых сипгаксических преобразований. Более сложные операции, например, запросы к DNS-серверу, могут быть реализованы с помощью системных вызовов. Программа предварительной обработки создает новый набор записей, который может быть проанализирован различными способами. Записи могут храниться в базе данных, которая поддерживает выполнение различных запросов. Записи могут также быть введеиы в электронпую таблицу или в специальную программу для анализа журналов. Сценарии, паиисапные на awk или Perl, позволяют производить статистические расчеты, а более сложные программы анализа могут быть панисапы на С. В любой из этих ситуаций наличие чистого и логично скомпонованного исходного набора записей сильно упрощает анализ результатов измерений трафика.

Источник: Web-протоколы. Теория и практика. — M.: ЗАО «Издательство БИНОМ», 2002 г. – 592 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100