Облачный хостинг VDS за 2 минуты

Настоящий облачный VDS-хостинг от UltraVDS: тестируем производительность

Дельта синхронизация без облака

Ранее мы показывали разные способы синхронизации криптодиска между ПК и Android-устройством.

Дельта-синхронизация крипто-дисков

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

Смотрим плавность хода с помощью BMW Rheingold

Всем знакома ситуация, когда двигатель немного "троит", но пропусков зажигания нет...

Создай собственный SpyLog


Денис Колисниченко

Практически на каждом Web-сайте можно увидеть счетчик посещений. И это неудивительно: всем нам интересно, сколько раз пользователи всемирной паутины посещали наш сайт.

Проще всего поместить на свой сайт какой-нибудь бесплатный счетчик или более функциональный, но, естественно, коммерческий, например, SpyLog.
Данная статья предназначена для владельцев собственных Web-серверов, которым интересна статистика посещений как своего Web-сайта, так и виртуальных Web-серверов клиентов, которым предоставляется хостинг.

Для сбора статистических данных нужно проанализировать журналы сервера. Вручную это делать, скажем, не совсем удобно, поэтому лучше написать программу, автоматизирующую этот процесс. Но можно воспользоваться уже готовыми программами: зачем заново изобретать колесо? Одной из таких программ является программа Webalizer (http://www.mrunix.net/webalizer/), разработанная Бредфортом Барретом (Bradford L. Barrett). Данная программа анализирует журналы сервера и генерирует статистические данные в формате HTML на основе информации, полученной из log-файлов. Webalizer также умеет рисовать красивые гистограммы для лучшего восприятия информации. Отчеты Webalizer ничем не уступают отчетам SpyLog и многим коммерческим счетчикам, а иногда даже превосходят их.

Программа Webalizer поддерживает формат журналов сервера CLF (Common Log Format), поэтому с помощью этой программы вы можете анализировать работу других сервером, поддерживающий этот формат. Кроме формата CLF Webalizer поддерживает форматы журналов FTP-серверов wu-ftpd и ProFTPD, а также формат журнала прокси-сервера Squid. Согласно формату CLF, файлы журналов должны иметь такую структуру:

IP ДФ Дата Действие КО ОПИ URL Броузер

Где IP - это IP-адрес удаленного узла, ДП - дополнительные флаги, Действие - действие, произведенное сервером. КО - код ответа сервера, например, 200 - передача произведена успешно, 404 - ошибка: файл не найден. ОПИ - объем переданной информации, URL - URL, введенные в поле Location броузера.

Рассмотрим пример файла access_log, который используется Web-сервером Apache:


192.168.1.1 - - [28/May/2002:15:27:32 +0300] "GET /mrtg/mrtg-r.gif HTTP/1.1"
404 299 "http://www.server.ru/mrtg/unix-guide.html" "Mozilla/5.0 (X11;
U; Linux i686; en-US; rv:0.9.2.1) Gecko/20010901"

Эта запись означает, что 28 мая 2002 года в 15:27 некто с удаленного узла пытался получить файл (метод GET) /mrtg/mrtg-r.gif, используя протокол передачи HTTP 1.1. Но у этого пользователя ничего не вышло, потому что такой файл не найден на сервере, о чем свидетельствует код ответа 404. Размер страницы, содержащей сообщение об ошибке, и которая была передана пользователю, составляет 209 байт. Пользователь в поле броузера Mozilla ввел URL http://www.server.ru/mrtg/unix-guide.html.

Формат журналов сервером FTP отличается от формата CLF и имеет такую структуру:
Дата Время Год ВП Узел Объем_перед_инф Файл Режим_передачи СО ФП Пользователь НП Служба

Где ВП - время передачи, ФП - флаг пользователя, НП - направление передачи. Рассмотрим пример файла Xferlog, который является журналом сервера FTP:


Wed Jun 12 11:49:35 2002 1 localhost.localdomain 1490 /home/den/vmware.html
a _ o r dhsilabs ftp 0 * c
Wed Jun 12 11:50:08 2002 1 localhost.localdomain 281 /home/den/code.bin
a _ o r dhsilabs ftp 0 * c
Wed Jun 12 11:50:15 2002 1 localhost.localdomain 281 /home/den/code.bin
a _ i r dhsilabs ftp 0 * c
Wed Jun 12 11:52:08 2002 1 localhost.localdomain 888 /home/den/ftphosts.html
b _ i r dhsilabs ftp 0 * c

Из первой записи вы можете узнать, что пользователь dhsilabs зарегистрирован с удаленного узла localhost.localdomain. Начало передачи файла /home/den/vmware.html произошло в среду, 12 июня 2002 года в 11:49. Общее врея передачи – одна секунда. Общее объем переданной информации составляет 1490 байт. Для передачи файла использовался режим ASCII (a), не было произведено никаких специальных операций (_). Файл vmware.html пользователь загружал с сервера, на что указывает направление передачи (o). Пользователь dhsilabs является реальным (зарегистрированным) пользователем системы (r). Название службы, которая производила операцию – ftp.

Теперь рассмотрим четвертую запись. Тот же пользователь dhsilabs передал на сервер файл ftphosts.html. Направление передачи – на сервер (i). Режим передачи – двоичный (b).

Вторая и третья записи сообщают о загрузке с сервера и на сервер файла code.bin в текстовом (а) режиме.

Тип пользователя обозначается символом возле имени пользователя. Символ r обозначает зарегистрированного в системе пользователя, у которого есть своя запись в файле /etc/passwd. Символ g – означает гостевую регистрацию, а a – анонимную.

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

На основе такой информации Webalizer генерирует статистику. Информация, предоставляемая программой Webalizer, более информативна, чем инофрмация обыкновенного счетчика. Webalizer может генерировать отчеты о посещении вашего Web-сервера за год, месяц, день и час. Обычно отчеты помещаются в каталог <DocumentRoot>/usage, например, /var/www/html/usage, но месторасположение этих файлов будет зависеть от настроек вашего Web-сервера и Webalizer.
Вы можете загрузить последнюю версию программы по адресу http://www.mrunix.net/webalizer/ или установить версию, которая входит в состав вашего дистрибутива (в большинстве случаев эта программа уже будет установлена у вас, если вы используете операционную систему Linux Red Hat 7 и выше). Если программа не установлена, установить ее можно командой:

rpm -Uhv /mnt/cdrom/RedHat/RPMS/webalizer*

Естественно, перед вводом данной команды нужно смонтировать диск и правильно указать путь к пакетам RPM.
Запустите программу webalizer:

webalizer

При запуске на экране вы ничего не увидите, но после завершения работы в каталоге /var/www/html/usage появятся файлы отчета. Затем убедитесь, что ваш Web-сервер запущен и в окне броузера введите URL:

http://localhost/usage

Перейдя по ссылке на страницу, содержащую ссылку на статистические данные за определенный месяц, вы можете просмотреть:

  1. Ежедневную статистику (Daily Statistics)
  2. Почасовую статистику (Hourly Statistics)
  3. Вводимые клиентами URL (URLS), определив таким образом самые посещаемые страницы.
  4. Другую информацию (IP-адреса, страны клиентов, броузеры пользователей)
Весьма желательно добавить запуск программы webalizer в расписание демона crontab для автоматического обновления статистики каждый час. Для этого в ваш файл /etc/crontab добавьте строку

01 * * * * root /usr/bin/webalizer

Убедитесь, что демон crond запускается автоматически при запуске системы.
Программу webalizer можно запускать с такими параметрами:

Параметр Описание
-c файл Указывает альтернативный файл конфигурации. По умолчанию используется файл /etc/webalizer.conf
-n name Указывает имя машины, которое будет отображено при выводе статистики
-o каталог Указывает каталог, в который будут помещены файлы статистики.
-t название Указывает заголовок отчета
-F (clf | ftp | squid) Указывает тип журнала: clf или ftp или squid

Если вам нужно считать посещения нескольких виртуальных Web-серверов, я рекомендую для каждого виртуального сервера создать свой файл конфигурации и вызывать webalizer только с параметром -c, а все остальные параметры можно будет указать в конфигурационных файлах отдельно для каждого виртуального сервера.
О других параметрах программы webalizer вы можете узнать, введя команду man webalizer, а сейчас мы рассмотрим директивы конфигурационного файла /etc/webalizer.conf.

LogFile
Определяет журнал сервера. Значение по умолчанию:

LogFile /var/log/httpd/access_log

LogType
Указывает тип журнала: web или ftp. Значение по умолчанию:
LogType web

OutputDir
Определяет месторасположение отчетов Webalizer. Значение по умолчанию:

OutputDir /var/www/html/usage

HistoryName
Задает имя файла, в котором будет содержаться информация о посещении Web-сервера на протяжение одного года.

HistoryName webalizer.hist

Формат этого файла такой:

5 2002 33 21 1 159 28 31 9 2
6 2002 11 7 1 19 8 12 5 3

Первые два числа - это месяц и год, а остальные числа - это статистические даныне (см. рис. 1)

Incremental
Возрастающая обработка позволяет использовать несколько относительно небольших файлов журналов вместо одного огромного. Данная опция полезна для больших сайтов, период ротации журналов которых меньше, чем период ротации обыкновенных Web-сервером. Обычно ротация журналов выполняется 1 раз в месяц, но если сайт очень большое целесообразно выполнять ротацию 1 раз в неделю, сократив размер основного журнала. Именно для таких случаев полезно использовать возрастающую обработку. Файл webalizer.current, который используется при возрастающей обработке и задается с помощью директивы IncrementalName, содержит текущие статистические данные. Более подробную информацию о возрастающей обработке вы найдете в файле README. По умолчанию возрастающая обработка не используется.

ReportTitle
Директива ReportTitle задает заголовок отчета. Значение по умолчанию:

ReportTitle Usage Statistics for

HostName
С помощью этой директивы можно указать имя Web-сервера. Обычно имя Web-сервера разрешается с помощью DNS, а эту директиву можно не определять.

HTMLExtension
Определяет расширение для файлов-отчетов. Значение по умолчанию:

HTMLExtension html

PageType
Директива PageType указывает расширения файлов, которые будут считаться Web-страницами. Значения по умолчанию:


PageType htm*
PageType cgi

UseHTTPS
Позволяет использовать безопасное соединение HTTPS для просмотра статистики. О настройке безопасного соединения вы можете прочитать в моей статье "Безопасные слои и ракушки" (http://www.softerra.ru/freeos/14888/page1.html). По умолчанию безопасное соединение не используется.

Quiet
Директива Quiet подавляет все сообщения при работе программы. Это удобно при запуске программы с помощью демона crond. Значение по умолчанию:
Quiet yes

ReallyQuiet
Директива Quiet не подавляет сообщения об ошибках и предупреждениях при работе программы. Если вы хотите отключить и эти сообщения, включите директиву ReallyQuiet. По умолчанию данная директива выключена:
ReallyQuiet no

Все остальные директивы не столь существенны и в основном относятся к внешнему виду создаваемых отчетов. С помощью этих директив вы можете настроить создаваемые директивы на свой вкус.

Я надеюсь, что этой информации вполне достаточно, чтобы настроить Webalizer и легко получать статистическую информацию о работе своего Web-сервера.