Переход к предыдущей публикации А говорят, что они хищники… Cистемные сетевые утилиты через интерфейс Wordpress (ping, whois, dig и т.д.). Простые PHP скрипты Переход к следущей публикации

Анализ логов веб сервера и представление статистики посещаемости веб сайта посредством AwStats

Суббота, 1 марта, 2008 21:52:47 EET

Исправления от 23 марта, 2009 12:57:38

Рейтинг публикации
1 звездочка2 звездочки3 звездочки4 звездочки5 звездочек6 звездочек7 звездочек8 звездочек9 звездочек10 звездочек (2 голосов, средний: 10.00 из 10)
Выделенные сервера дешевле обычного хостинга

AWStats | Анализ логов веб сервера и наглядное представление статистики посещаемости веб сайта. Нормальное явление, что каждый владелец веб сайта желает знать сколько людей к нему приходит на сайт, откуда приходит, что больше всего читает, сколько времени в целом проводит на сайте. Для удовлетворения такого любопытства было придумано масса средств для сбора статистики. Множество сервисов в Сети предлагает Вам поставить на своем сайте счетчик, который обычно представляет собой JavaScript и который, при входе посетителя на сайт, подгружается в его веб браузер и сообщает сервису статистики всю необходимую информацию о посетителе.

Но не всегда такая статистика точна. Дело в том, что многие посетители используют прокси серверы, которую в свою очередь могут запрещать передачу javascript’ов и попросту вырезают их при отдаче контента. Другие браузеры могут быть настроены на то, чтобы не загружать ничего лишнего, кроме самого контента с запрашиваемого ресурса… Статистика получается размытой и неточной.

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

Существует несколько разных программ-анализаторов логов доступа к веб сайту. Я в своей практике использовал Webalizer и AWStats. Последний мне, честно говоря, понравился больше и я использую для самостоятельного подсчета статистики именно его. Про конфигурирование AWStats я и хотел бы рассказать.

Итак, AWStats - это открытое программное обеспечение, написанное на языке Perl, которое предназначено для распарсивания логов доступа к веб серверу и генерации отчетов, которые можно просмотреть в виде веб-страниц. Вообще, посредством AWStats можно собирать статистику не только веб сервера. AWStats также вполне способен распарсить логи почтового и ftp серверов. Но здесь эти варианты пока что рассматривать не будем.

Имеем сервер Apache и установленный perl 5.8.8 на операционной системе FreeBSD 6.3. От этого и будем отталкиваться. AWStats можно установить из коллекции портов.

# whereis awstats
 awstats: /usr/ports/www/awstats
# cd /usr/ports/www/awstats
# make install clean

Вылезет синее окошко, в котором будет предлагаться всего одна опция для установки: “Использование IPv6 протокола”. Я ее не отмечаю, ибо до IPv6 нам еще не скоро светит добраться. Жмем “ОК” и ждем окончания процесса установки.

По окончании вылезет сообщение, в котором будет краткая инструкция по подключению AWStats к нашему веб-серверу:

**************************************************************
Please add the following to your apache config, and restart.
#
# Directives to allow use of AWStats as a CGI
#
Alias /awstatsclasses "%%PREFIX%%/www/awstats/classes/"
Alias /awstatscss "%%PREFIX%%/www/awstats/css/"
Alias /awstatsicons "%%PREFIX%%/www/awstats/icons/"
ScriptAlias /awstats/ "%%PREFIX%%/www/awstats/cgi-bin/"
#
# This is to permit URL access to scripts/files
# in AWStats directory.

<Directory "%%PREFIX%%/www/awstats/">
   Options None
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>

**************************************************************

If you are upgrading from AWStats 6.4 or older,
please note the following:

If you used the geoip plugin, you must edit your
AWStats config file to change the line
 LoadPlugin="geoip GEOIP_STANDARD"
into
 LoadPlugin="geoip GEOIP_STANDARD /pathto/GeoIP.dat"

**************************************************************

Последний абзац в двух словах говорит нам о том, что можно использовать плагин GeoIP, который позволяет выдавать статистику по странам. Данная статистика собирается с помощью базы данных GeoIP.dat. Получить его можно установив программу GeoIP. Кстати, для использования возможностей GeoIP, хоть это и не написано, но нам также понадобится Perl модуль p5-Geo-IP, иначе AWStats не сможет использовать данную функцию. Устанавливаем:

# whereis p5-Geo-IP
 p5-Geo-IP: /usr/ports/net/p5-Geo-IP
# cd /usr/ports/net/p5-Geo-IP
# make install clean
...

# whereis GeoIP
 GeoIP: /usr/ports/net/GeoIP
# cd /usr/ports/net/GeoIP
# make install clean

Все. Теперь все готово для того, чтобы приступить к конфигурированию нашего AWStats.

По-умолчанию, AWStats при установке копирует свои файлы в каталог /usr/local/www/awstats. В нем хранятся каталоги cgi-bin - в котором находится основной скрипт AWStats - awstats.pl; каталоги css, icons - для оформления генерируемых веб страниц и т.д. В настоящий момент нас будет интересовать файл /usr/local/www/awstats/cgi-bin/awstats.model.conf, который является основной моделью для построения конфигов awstats под Ваши сайты. Комментарии в файле начинаются так:

# AWSTATS CONFIGURE FILE 6.6
#--------------------------------------------------------------
# Copy this file into awstats.www.mydomain.conf and edit
# this new config file to setup AWStats (See documentation
# in docs/ directory). The config file must be in /etc/awstats,
# /usr/local/etc/awstats or /etc (for Unix/Linux) or same
# directory than awstats.pl (Windows, Mac, Unix/Linux...)
# To include an environment variable in any parameter (AWStats
# will replace it with its value when reading it), follow
# the example:
# Parameter="__ENVNAME__"
# Note that environment variable AWSTATS_CURRENT_CONFIG is
# always defined with the config value in an AWStats running
# session and can be used like others.
#--------------------------------------------------------------

Вообще, текущая версия AWStats - 6.7, тем не менее в дистрибутиве при установке из портов лежит конфиг для версии 6.6. Видать существенных отличий в этих версиях нет. Комментарии гласят: “Скопируйте этот файл в файл awstats.адрес_моего_сайта.conf и отредактируйте его для новой установки AWStats. (Почитайте документацию в каталоге doc/). Конфиг нового сайта следует поместить в один из следущих каталогов: /etc/awstats, /usr/local/etc/awstats или /etc (для Unix пользователей). Либо в ту же директорию, где лежит файл awstats.pl (для Windows, Mac, Unix…). Для включения переменных окружения с любыми параметрами (AWStats при чтении подставит им их значения), следуйте следущему шаблону: Parameter=”__ENVNAME__”. Учтите, что переменная окружения AWSTATS_CURRENT_CONFIG определена всегда согласно значению конфигурационного файла и может быть использована наравне с другими”.

Вобщем, поступаем здесь таким образом. Для начала создаем каталог /etc/awstats, выставляем на него соответствующие права и копируем в него файл конфигурации нашего сайта. Сайт называется test.daemony.org, а файлы сайта размещены в каталоге /usr/local/www/test.daemony.org/

# mkdir /etc/awstats
# cp /usr/local/www/awstats/cgi-bin/awstats.model.conf /etc/awstats/awstats.test.daemony.org.conf
# chmod -R o-rwx /etc/awstats && chown -R www:www /etc/awstats

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


Эта часть публикации доступна только зарегистрированным посетителям!
Пожалуйста, войдите [Login] или зарегистрируйтесь [Register].

Был показан пример основной конфигурации. С такими параметрами AWStats уже может быть запущен. Но я бы исправил еще несколько опций в дополнительных параметрах файла. В первую очередь подключим наш плагин GeoIP. Воспользуйтесь поиском по файлу и найдите в нем такую строку:

# LoadPlugin="geoip GEOIP_STANDARD /pathto/GeoIP.dat"

Раскомментируйте ее и укажите путь к файлу с базой GeoIP.dat. Обычно это выглядит так:

LoadPlugin="geoip GEOIP_STANDARD /usr/local/share/GeoIP/GeoIP.dat"

Еще следует подумать о том, что Вы будете также посещать свой сайт, причем гораздо чаще других посетителей, а потому может быть стоит исключить свой IP из статистики, дабы не портить ее? Я на собственном опыте убедился что эта мера не лишняя. Правда уже было поздно, но лучше поздно чем никогда. Ищем в конфиге строчку:

SkipHosts=""

и меняем ее на:

SkipHosts="server.myhome.com 192.168.0.75"

и так далее. Через пробел можно указывать IP адреса либо имена хостов заходы на сайт с которых не будут обсчитываться. Аналог этой опции:

 SkipFiles=""

Только в данном случае из подсчета статистики исключаются определенные файлы сайта. Тоже не помешает, уж поверьте.

 SkipFiles="/some/script-for-useronline-stat.php /admin.php"

Страницы также указываем через пробел. Можно использовать регулярные выражения.

Антипод опции SkipHosts - это:

 OnlyHosts=""

Можно настроить awstats на обсчет статистики только с одного какого-то IP/хоста, указав в OnlyHosts=”" имя или IP адрес того хоста, которого будете обсчитывать. Можно использовать регулярные выражения.

Антипод опции SkipFiles:

 OnlyFiles=""

Здесь наоборот можно настроить awstats на обсчет статистики только судя по загрузке какого-то одного или нескольких файлов. Можно использовать регулярные выражения.

Вот в принципе и все, что нужно поменять в основном конфиге AWStats. Если Вам не понравится стандартный стиль страницы статистики, Вы можете поменять в нем все, что угодно, редактируя соответствующие параметры.

Добавьте в конфигурационный файл веб сервера Apache httpd.conf в контейнер того виртуального хоста (test.daemony.org), для которого необходим обсчет статистики, следущие строки:

  Alias /s/awstatsclasses "/usr/local/www/awstats/classes/"
  Alias /s/awstatscss "/usr/local/www/awstats/css/"
  Alias /s/awstatsicons "/usr/local/www/awstats/icons/" 

  ScriptAlias /s/awstats "/usr/local/www/awstats/cgi-bin/"

  <Directory "/usr/local/www/awstats/cgi-bin/">
   Options None
   AllowOverride None
   Order allow,deny
   Allow from all
  </Directory>

И перезапустите Apache через apachectl restart. Создадим каталоги, в которых будут храниться файлы данных AWStats:

# mkdir /usr/local/www/test.daemony.org/htdocs/s/
# mkdir /usr/local/www/test.daemony.org/htdocs/s/awsdata/
# chown -R www:www mkdir /usr/local/www/test.daemony.org/htdocs/

Сделаем первый запуск AWStats из командной строки, для того, чтобы он смог сгенерировать первые отчеты и все необходимые для работы файлы. Делается это так:

# cd /usr/local/www/awstats/cgi-bin/
# ./awstats.pl -config="test.daemony.org"

В параметр -config подставляется именно имя сайта. AWStats сам найдет для него нужный конфиг. Если все прошло успешно, AWStats покажет сколько он записей нашел и сколько добавил в свою базу. При первом запуске может появиться ошибка о том, что не найдены некоторые файлы. Но это нормально. В последствии ненайденные файлы будут созданы и ругани не будет.

Проверьте каталог с данными AWStats - у меня это /usr/local/www/test.daemony.org/htdocs/s/awsdata/ - в нем должен после первого запуска появиться файл статистики. Его имя будет выглядеть в формате: “awstats%MM%YYYY.sitename.txt”. Имя содержит в себе информацию об отчетном периоде. Например: awstats012008.test.daemony.org.txt - говорит о том, что хранится информация о посещаемости сайта test.daemony.org за январь 2008 года.

Посмотреть статистику теперь можно будет по адресу -=-ссылка-=- Запоминать такой URL сложно, а потому для упрощения жизни положим в каталог /usr/local/www/test.daemony.org/htdocs/s/ файл index.html вот такого содержания:

 <html>
  <head>
  <meta http-equiv="Refresh" content="0; url=awstats/awstats.pl">
   <title></title>
  </body>
 </html>

Можно конечно и более красивое решение придумать, например, через mod_rewrite или просто php редирект использовать, но редирект HTML’ом будет работать на любом хостинге, даже на таком где отключен mod_rewrite и php.

Вот теперь другое дело. Запомнить адрес страницы статистики http://test.daemony.org/s/ гораздо проще. Пройдя по такой ссылке Ваш браузер будет перенаправлен по нужному URL к скрипту.

Не будем забывать о безопасности. Зачем демонстрировать всем подряд статистику Вашего сайта? Тем более, поскольку AWStats написан на Perl, отнести его к категории безопасных скриптов скорее нельзя, чем можно. Воспользуемся http авторизацией для того, чтобы давать доступ к статистике только по паролю для избранных пользователей. В простом виде это можно реализовать так.

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

# mkdir /usr/local/www/test.daemony.org/pw/
# touch /usr/local/www/test.daemony.org/pw/stat.pwd
# chmod -R o-rwx /usr/local/www/test.daemony.org/pw/
# chgrp -R www /usr/local/www/test.daemony.org/pw/

Теперь можно добавить пользователя в файл паролей. Для этого используем утилиту htpasswd, которая идет в комплекте вместе с Apache:

# cd /usr/local/www/test.daemony.org/pw/
# htpasswd site-stat Daemony
New password:
Re-type new password:
Adding password for user Daemony

Закрываем на пароль директорию /usr/local/www/test.daemony.org/htdocs/s - добавим в .htaccess файл следущие директивы:

# На всяк случай запретим листинг директории
 Options -Indexes

# Указываем путь к файлу с паролями пользователей
# Следите, чтобы права на папки и файл позволяли
# Apache читать его.
 AuthUserFile /usr/local/www/test.daemony.org/pw/stat.pwd

# Файл с паролями групп пользователей нет. Директиву в null
 AuthGroupFile /dev/null

# Текст, который отобразится в окошке ввода пароля в браузере.
 AuthName "Access Denied!"

# Тип авторизации. Basic значит "открытый", "основной".
# Кстати, пароли передаются в этом случае в открытом виде.
 AuthType Basic

# Параметры использования файла паролей.
# Нижеследущее указывает на то, что можно допускать любого
# пользователя из файла с паролями.
  <limit GET POST>
   require valid-user
  </limit>

Таким же самым образом, следует защитить каталог /usr/local/www/awstats/cgi-bin/, иначе, при запросе http://test.daemony.org/s/ пароль будет запрашиваться, а при прямом обращении к скрипту по адресу http://test.daemony.org/s/awstats/awstats.pl не будет. Закрыть этот каталог, на мой взгляд, для большей безопасности лучше через httpd.conf. Добавим в контейнер с нашим VirtualHost‘ом test.daemony.org аналогичные строки в описание прав доступа к каталогу /usr/local/www/awstats/cgi-bin/.

<Directory "/usr/local/www/awstats/cgi-bin/">

 Options Indexes FollowSymlinks MultiViews
 AllowOverride None
 Order allow,deny
 Allow from all

  AuthUserFile /usr/local/www/test.daemony.org/pw/stat.pwd
  AuthGroupFile /dev/null
  AuthName "Access Denied!"
  AuthType Basic

 <limit GET POST>
  require valid-user
 </limit>

</Directory>

Перезапустим Apache. Теперь только пользователь Daemony с паролем, который ему установили, будет иметь доступ к статистике.

Для постоянного автоматического обновления статистики, можно добавить задание по запуску скрипта awstats.pl в /etc/crontab. Обновлять статистику можно настолько часто, насколько Вы сами пожелаете. Но я предпочитаю всего раз в час. Это оптимальный вариант, поскольку с опцией AllowToUpdateStatsFromBrowser=1 (включено) обновить статистику можно будет через браузер при необходимости в любое время.

###
WHOME=/usr/local/www
#
59 * * * * www $WHOME/awstats/cgi-bin/awstats.pl >/dev/null 2>&1

Вот теперь уж, пожалуй, точно все. :) Вроде ничего не забыл?…

Ну, а вот так выглядит сама статистика AWStats (нажмите на скриншоты, чтобы увеличить; картинки будут открываться в новом окне):

Статистика AWStats | История за месяц

Статистика AWStats | История за месяц

Статистика AWStats | По дням месяца

Статистика AWStats | По дням месяца

Статистика AWStats | По дням недели

Статистика AWStats | По дням недели

Статистика AWStats | По часам

Статистика AWStats | По часам

Статистика AWStats | Страны

Статистика AWStats | Страны

Статистика AWStats | Роботы (Пауки) посетители

Статистика AWStats | Роботы (Пауки) посетители

Статистика AWStats | Операционные системы

Статистика AWStats | Операционные системы

Статистика AWStats | Браузеры

Статистика AWStats | Браузеры

Похожие публикации

Комментариев 7

Daemony 2 июня, 2009 14:59:33 EEST .:. ID #11583 .:.

 

BiJey: у меня вопрос, если логи каждый месяц чистить, то, например, в июне будет статистика за март апрель? или логи перечитываються один раз и  храниться отдельная база статистики?

Статистика конечно же хранится отдельно. Ведь логи Апача ежесуточно ротируются, и сохраняются архивированные логи за последний N дней/недель…

AwStats перечитывает текущий лог только раз, выбирает из них то, что ему нужно и откладывает отдельно в своих текстовых файлах в папке, указанную в конфиге под переменной “DirData”.

 

Вот, например, содержимое этой папки у меня:

$ ls -la
total 28038
drwxrwx---  2 daemony  www     1536  2 июн 12:03 .
drwxrwx---  3 daemony  www      512  2 мар  2008 ..
-rw-rw----  1 daemony  www    82927  5 фев  2008 awstats012008.live.daemony.org.txt
-rw-rw----  1 daemony  www  2856800  1 фев 00:04 awstats012009.live.daemony.org.txt
-rw-rw----  1 daemony  www   657840  1 мар  2008 awstats022008.live.daemony.org.txt
-rw-rw----  1 daemony  www  2606723  1 мар 00:02 awstats022009.live.daemony.org.txt
-rw-rw----  1 daemony  www  1193865  1 апр  2008 awstats032008.live.daemony.org.txt
-rw-rw----  1 daemony  www  2722629  1 апр 11:59 awstats032009.live.daemony.org.txt
-rw-rw----  1 daemony  www  1024675  1 май  2008 awstats042008.live.daemony.org.txt
-rw-r-----  1 daemony  www  2765831  1 май 00:00 awstats042009.live.daemony.org.txt
-rw-rw----  1 daemony  www  1043316  1 июн  2008 awstats052008.live.daemony.org.txt
-rw-r-----  1 daemony  www  2786667  1 июн 11:58 awstats052009.live.daemony.org.txt
-rw-rw----  1 daemony  www   929221  1 июл  2008 awstats062008.live.daemony.org.txt
-rw-r-----  1 daemony  www   212901  2 июн 12:03 awstats062009.live.daemony.org.txt
-rw-rw----  1 daemony  www  1086026  1 авг  2008 awstats072008.live.daemony.org.txt
-rw-rw----  1 daemony  www  1177564  1 сен  2008 awstats082008.live.daemony.org.txt
-rw-rw----  1 daemony  www    20030 17 окт  2007 awstats092007.live.daemony.org.txt
-rw-rw----  1 daemony  www  1343849  1 окт  2008 awstats092008.live.daemony.org.txt
-rw-rw----  1 daemony  www    39218  1 ноя  2007 awstats102007.live.daemony.org.txt
-rw-rw----  1 daemony  www  1608195  1 ноя  2008 awstats102008.live.daemony.org.txt
-rw-rw----  1 daemony  www    61503  1 дек  2007 awstats112007.live.daemony.org.txt
-rw-rw----  1 daemony  www  1698439  1 дек  2008 awstats112008.live.daemony.org.txt
-rw-rw----  1 daemony  www   153179  1 янв  2008 awstats122007.live.daemony.org.txt
-rw-rw----  1 daemony  www  2151517  1 янв 00:02 awstats122008.live.daemony.org.txt
BiJey 2 июня, 2009 14:50:53 EEST .:. ID #11582 .:.

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

Daemony 31 марта, 2009 22:32:25 EEST .:. ID #7058 .:.

NotPageList=”css js class gif jpg jpeg png bmp ico swf”
про картинки наверно это?

vlav, твой комментарий заставил задуматься. Результаты размышлений здесь.

Daemony 29 марта, 2009 16:53:49 EEST .:. ID #6973 .:.

Похоже на то…

vlav 29 марта, 2009 09:28:36 EEST .:. ID #6965 .:.

# Add here a list of kind of url (file extension) that must be counted as
# “Hit only” and not as a “Hit” and “Page/Download”. You can set here all
# images extensions as they are hit downloaded that must be counted but they
# are not viewed pages. URLs with such extensions are not included in the TOP
# Pages/URL report.
# Note: If you want to exclude particular URLs from stats (No Pages and no
# Hits reported), you must use SkipFiles parameter.
# Change : Effective for new updates only
# Example: “css js class gif jpg jpeg png bmp ico zip arj gz z wav mp3 wma mpg”
# Example: “”
# Default: “css js class gif jpg jpeg png bmp ico”
#
NotPageList=”css js class gif jpg jpeg png bmp ico swf”

про картинки наверно это?

Daemony 28 марта, 2009 13:22:29 EET .:. ID #6938 .:.

не знаешь почему австатс показывает всегда процентов на 50 больше хостов

50% - это слишком, конечно… Я бы сказал. на 20-30%.
Почему так? Несколько причин.
Пример первый. Ливинтернет и другие подобные сервисы обсчитывают посетителей, подсаживая в браузеры зашедшего на страницу свои JavaScript’ы. Многие пользователи ходят в Интернет через прокси. Например, у нас на работе сеть из 50 компьютеров. Все сотрудники ходят через прокси сервер на маршрутизаторе. На проксе порубаны все наиболее известные счетчики, и банерные сети. Счетчики и банеры просто не грузятся у тех, кто через нее работает. Соответственно, посещения на различных сайтах всех этих пользователей не обсчитываются. Но AwStats обсчитывает статистику, обрабатывая логи сервера напрямую. Это самое большое его преимущество, на мой взгляд.

Пример второй. Ты у себя на сайте поместил какую-то прикольную картинку. А кто-то у тебя на сайте ее нашел, она ему понравилась и этот “кто-то” на любимом форуме где он обычно тусуется взял и создал пост, в котором вставил картинку сославшись напрямую на твой сайт. Все посетители этого топика на форуме будут грузить эту самую картинку с твоего сервера, оставляя следы в логах твоего сайта. Соответственно, AwStats обсчитает эти “просмотры”. Конечно, это неправильно и портит статистику. Но я пока особо не заморачивался, как это пресечь.

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

Список причин можно продолжить…

vlav 28 марта, 2009 08:31:15 EET .:. ID #6925 .:.

Ты забыл упомянуть вот это:
-=-ссылка-=-

Хотел спросить - не знаешь почему австатс показывает всегда процентов на 50 больше хостов, чем например ливинтернет и другие счетцики?

Возник вопрос по этой теме, или есть что добавить? Говорите!

Обратите внимание!
  1. К Вашим услугам визуальный редактор TinyMCE. Вы можете отформатировать комментарий на свой вкус.
  2. Для выделения в комментариях каких-либо цитат используйте кнопку "Blockquote" в редакторе.
  3. Загрузить свою аватарку Вы сможете, зарегистрировавшись на сервисе www.gravatar.com
  4. Зарегистрированным пользователям вводить защитный код (captcha) не приходится.
Публикуя комментарий Вы подтверждаете, что ознакомились c Правилами и принимаете их!
HOMOSAPIENS ONLY! :)