Веб-анатомия по воскресеньям с Артемием Ломовым № 16
Вообще и в частности
Сегодня я предлагаю вам, уважаемые читатели, ненадолго отвлечься от занимавших нас пять воскресений подряд насущных вопросов проектирования информационных сайтов. А точнее, для разнообразия посмотреть на эти самые вопросы под несколько иным углом.
Пожалуй, нет смысла повторяться, что существование всякого веб-ресурса имеет смысл лишь тогда, когда он востребован посетителями. В отсутствии аудитории, причем аудитории постоянной, сформировавшейся, активной, участь любого сайта едва ли более завидна, чем судьба груды ненужных файлов, ожидающих своего последнего часа в «Корзине». А посему вполне естественно, что любому уважающему себя сайтовладельцу свойственно проявлять живой интерес к мониторингу посещаемости и наблюдениям за активностью пользователей на сайте.
Для этого существует море возможностей — в разнообразных счетчиках и системах сбора статистики (Rambler, SpyLog, RAX и т. п.) недостатка в Рунете не ощущается. Но в силу общеизвестных объективных причин ни один из таких счетчиков не способен зафиксировать все визиты на сайт, а тем более, всё многообразие действий посетителей. Подобные системы позволяют получить лишь приблизительную картину, порядок цифр — но не более того.
Тогда зачем же, спросите вы, серьезные проекты используют внешние счетчики? Ну, как вам сказать… Например, без размещения счетчиков на страницах сайта физически невозможно его участие в соответствующих рейтингах. Среди последних же остались еще пока влиятельные и авторитетные — скажем, место в первой двадцатке Rambler’s Top 100 в любой тематической категории, несмотря ни на что, очень даже благотворно воздействует на посещаемость. Еще пример: независимая статистика, открытая для публичного доступа, может быть остро необходимой в таких щепетильных делах, как привлечение рекламодателей.
Да мало ли, какие еще причины и стимулы можно придумать — важно лишь то, что внешние счетчики и системы сбора статистики нельзя рассматривать как полноценные инструменты для… подсчета посещений и сбора статистики. Ибо куда как лучше — надежнее, точнее и всеобъемлюще — с этими задачами справляются логи сервера.
Естественно, копаться в лог-файле журнала доступа веб-сервера «ручками» — удовольствие, прямо скажем, на любителя. Ибо счет суточного объема логов для сайта даже с «ничтожной» посещаемость порядка 100—200 уникальных хостов в день идет на мегабайты.
В целях автоматизации увлекательного процесса исследования логов были придуманы самые разнообразные программы-анализаторы — Webalizer, WebTrends Log Analyzer, WebLog Expert, WebSpy Analyzer, Analog…
Незатейливая программка Webalizer, позиционируемая как дополнение для сервера Apache, получила очень широкое распространение в среде российских провайдеров. Как и все в мире Linux, она доступна для бесплатного скачивания. Написанная на языке C, программа работает исключительно быстро. Среди недостатков — не всегда корректная работа с данными на русском языке. Невелико и разнообразие генерируемых отчетов (по сравнению, скажем, с WebTrends Log Analyzer, но этот продукт распространяется уже на сугубо коммерческой основе).
Так или иначе, несмотря на все многообразие отчетов, генерируемых каждым из подобных средств, общее число возможных отчетов в любом случае является все же конечным. Предоставляемая информация охватывает наиболее типичные тенденции и носит обобщенный, статистический характер. К тому же, отмеченные анализаторы строят свои отчеты лишь с некоторой заданной периодичностью (как правило — один раз в сутки в часы наименьшей активности посетителей), что не дает возможности наблюдать за посещаемостью в режиме реального времени.
А ведь порой позарез бывает нужно выудить из лога что-нибудь совсем уж особенное, например, информацию обо всех HTTP-запросах, осуществленных с именем пользователя admin и повлекших ошибку 401 Authorization Required, если вдруг закралось подозрение о возможной попытке кого не следует проникнуть в закрытую область веб-узла. Причем информацию сию нужно получить срочно!
Решить задачу подобного рода не слишком-то просто — даже прямой контекстный поиск в лог-файле здесь малоэффективен, поскольку записей, соответствующих нескольким поставленным условиям (в нашем примере — имя пользователя admin и код ответа сервера 401) могут быть десятки, причем десятки, затерянные среди сотен похожих записей, соответствующих хотя бы одному из условий. В таком случае обнаружение попытки несанкционированного доступа обещает затянуться до следующего утра, а к тому моменту новоявленный лже-admin успеет уже не только подобрать, но и сменить пароль. ;-)
Очевидно, для таких вот «спецопераций» нелишне иметь под рукой скрипт, который бы умел разбирать записи лога на отдельные поля и осуществлять поиск в них, пользуясь логикой «И».
Весьма вероятно (да скорее даже наверняка), подобные решения уже кем-то реализованы. Но, не ведая ничего об оных, а вернее, даже и не желая ведать, поскольку свое собственное всегда ближе и роднее, в сентябре прошлого года я взял да и написал такой скрипт, предусмотрев в нем ряд сопутствующих полезностей. А поскольку человек я не жадный и, более того, горячо приветствующий идеи freeware и open source, я решил в честь юбилея поделиться программкой с вами. Заполучить скрипт и прочесть его подробное описание можно в сегодняшнем выпуске практикума на Web-Anatomy.Ru.
Я хотел бы подчеркнуть, что мое скромное CGI-приложение о 20 килобайтах Perl-кода не претендует на то, чтобы заменить собой упомянутые выше статистические анализаторы логов — оно призвано гармонично дополнить их функциональность, ибо, говоря математическим языком, статистические анализаторы предоставляют интегральные отчеты, рассматривающие все факторы активности посетителей за определенный период в совокупности, тогда как мой скрипт формирует дифференциальные отчеты о состоянии тех или иных конкретных факторов в данный момент времени.
12.09.2004
Теги: Apache
HTTP
лог-файлы
|