Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> WWW —> Настройка AWStats

Статистика с AWStats 6.6

Автор: Raven2000.


Статистика  с AWStats 6.6

AWStats – еще один парсер, написанный на perl. Поддерживает запуск из командной
строки и динамически через CGI
(если у вас 6.5 тогда обновляйте порты или качайте с сайта. Версия 6.5 содержит очень опасную уязвимость)

Да кстати у вас для Апатча должно получится что то подобное :)
http://ns3744.ovh.net/awstats/awstats.pl?config=destailleur.fr

                             Apache

1) Настройка его несложна так что начнемс...
# cd /usr/ports/www/awstats-devel/                    # переместимся в порты
# make install clean				# IPV6 ненужно ставить :)

2) После успешного инсталла он попросит в конец конфига Apache
# ee /usr/local/etc/apache/httpd.conf

Добавить нижеследующие (это в моем случае в вашем может, что то изменится)
Просто создаются ссылки на классы, иконки и css
#*****************************************************************
#Please add the following to your apache config, and restart.
#
# Directives to allow use of AWStats as a CGI
#
Alias /awstatsclasses "/usr/local/www/awstats/classes/"
Alias /awstatscss "/usr/local/www/awstats/css/"
Alias /awstatsicons "/usr/local/www/awstats/icons/"
ScriptAlias /awstats/ "/usr/local/www/awstats/cgi-bin/"
#
# This is to permit URL access to scripts/files in AWStats directory.
#
<Directory "/usr/local/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"
#****************************************************************

Те добавляем в конец конфига Апача httpd.conf нижеследующее.

Alias /awstatsclasses "/usr/local/www/awstats/classes/"
Alias /awstatscss "/usr/local/www/awstats/css/"
Alias /awstatsicons "/usr/local/www/awstats/icons/"
ScriptAlias /awstats/ "/usr/local/www/awstats/cgi-bin/"

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

2.1) В httpd.conf проверте.
#Вместо
CustomLog /var/log/www/homenet.ru-custom.log common
#Вставляем
CustomLog /var/log/www/homenet.ru-custom.log combined

2.2) Как вы заметили опри установке AWStats он попросил подгрузить geoip
Это модуль определения географического положения по IP - mod_GeoIP
Это стандартный плагин  к AWStats
В конфиге AWStats нужно добавить ниже следующее
LoadPlugin="geoip GEOIP_STANDARD /путь_до/GeoIP.dat"
Про остальные плагины можно почитать на сайте разработчика или в папке программы Doc.

2.3) И для секурности мона делать так вам необходимо подправить раздел Directory сделав его примерно таким:
<Directory "/usr/local/www/awstats/">
   Options None
   AllowOverride None
   Order deny,allow
   Deny from all
   Allow from 127.0.0.1
   Allow from IP_ADDR
</Directory>

Вместо IP_ADDR укажите ip адрес машины с которой вы будете просматривать статистику awstats.

3) Создаем директорию для конфигов (по умолчанию он из нее берет конфиги)
# mkdir /etc/awstats

Копируем туда конфиг + переименовываем awstats.имя_сайта.conf
# cp /usr/local/www/awstats/cgi-bin/awstats.model.conf \
? /etc/awstats/awstats.homenet.ru.conf

3.1) И на будущее далее для каждого файла логов создаем конфигурационный файл в директории будь то апачь или фтп в
# /etc/awstats 

чтобы имя его было в следующем формате.
awstats.имя_сайта.conf

4) Лезем и ковыряем свой конфиг
# ee /etc/awstats/awstats.homenet.ru.conf

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

# Какой лог парсить
LogFile="/var/log/www/homenet.ru-custom.log"

# Тип лога
#  W - web
#  S - For a streaming log file
#  M - For a mail log file
#  F - For a ftp log file
LogType=W

# Домен(ы) сайта
SiteDomain=" homenet.ru "
HostAliases="www. homenet.ru REGEX[homenet \.ru$]"

5) Нус попробуем если что ли
Для начала рестартнем апачь и запустим статистику

После внесения любых изменений в файл настроек, вам потребуется перезапустить сервер:
# /usr/local/sbin/apachectl restart
Для перезапуска Apache без прерывания имеющихся соединений, выполните:
# /usr/local/sbin/apachectl graceful

# /usr/local/www/awstats/cgi-bin/awstats.pl -config="homenet.ru"

После этого он выдает что типа
Create/Update database for config "/etc/awstats/awstats.homenet.ru.conf" by AWStats version 6.6 (build 1.885)
From data in log file "/var/log/www/homenet.ru-custom.log"...
Phase 1 : First bypass old records, searching new record...
Direct access after last parsed record (after line 3849)
Jumped lines in file: 3849
Found 3849 already parsed records.
Parsed lines in file: 101
Found 0 dropped records,
Found 0 corrupted records,
Found 0 old records,
Found 101 new qualified records.

6) А теперь запускаем браузер и вводим
В строке адреса наберите
http://IP_ADDR/awstats/awstats.pl
Где вместо IP_ADDR укажите ip адрес или доменное имя машины.

В моем случае
http://192.168.0.5/awstats/awstats.pl
или
http://homenet.ru/awstats/awstats.pl

7) Ну и автоматизируем  обновление статистики
# ee /etc/crontab

Добавим, чтобы он каждые 28 мин обновлял статистику
*/28 * * * * root /usr/local/www/awstats/cgi-bin /awstats.pl -config=homenet.ru

Ну все работаетс :)

7.1) А для особых случаев ;) awstats может генерить и статические отчёты.
Заходим
# cd /usr/local/www/awstats/cgi-bin/

И выполняем ниже следующее (заместо homenet.ru(awstats.homenet.ru.) вставляем свое назв-е конфига)
perl awstats.pl -config=homenet.ru -output -staticlinks > awstats.homenet.html

И все в этом каталоге появл-я awstats.homenet.ru.html которуюю можно сунуть куда угодно и запаролить и тд.

7.2) Есть еще один способ для обновление статистики из браузера без крона и тд работает отлично!
В конфиге awstats смотрим чтобы было так
AllowToUpdateStatsFromBrowser=1

Он добавляе кнопку "Обновить" для обновления статистики сразу.
http://www.homenet.ru/awstats/awstats.pl

Там и нажим пимпу и обновляй.

Если есть проблемы :) то запускаем браузер и пишем так.
http://www.homenet.ru/awstats/awstats.pl?config=homenet.ru

И все он сразу же обновляет статистику и показывает;)

А теперь дополняем по просьбам народа ;)

8) В целях обеспечения безопасности настоятельно советую ограничить доступ к статистике awstats для авторизированных пользователей или по ip адресам. (для посторонних вполне хватит и рамблеровской :-)
Лезем и ковыряем свой конфиг
# ee /etc/awstats/awstats.homenet.ru.conf

Для пользователей 
AllowAccessFromWebToAuthenticatedUsersOnly = 1
AllowAccessFromWebToFollowingAuthenticatedUsers = "admin webadmin"

или по ip адресу (если он у вас он статический) 
AllowAccessFromWebToFollowingIPAddresses="127.0.0.1 123.422.222.33" 
где 123.422.222.33 - ваш ip адрес

подмножеству адресов (Если вам не жалко открыть для всей СВОЕЙ сети)
AllowAccessFromWebToFollowingIPAddresses="127.0.0.1 123.422.222.33-123.422.222.100" 
где 123.422.222.33-123.422.222.100 - разрешенный диапазон ip адресов

                             Proftp
9) Нус начнем для Proftp :)
Настройка для proFTPd немного сложнее..

9.1.) В настройка Proftp
# ee /usr/local/etc/proftpd.conf

LogFormat awstats "%t   %h      %u      %m      %f      %s      %b" #именно табуляция между %, не пробелы)
ExtendedLog /var/log/ftp/proftpd-extended.log read,write awstats
TransferLog    None #(выключаем).

9.2.) Создаем конфиг awstats.ftp.имя_сайта.conf
Ну и редактируемс его
# ee /etc/awstats/awstats.ftp.homenet.ru.conf
Т.е. загоняем ниже следующее

LogFile="/var/log/ftp/proftpd-extended.log"
SiteDomain=homenet.ru.conf
LogType=F
#Между значениями следующей строки - табуляция А НЕ ПРОБЕЛЫ!
LogFormat="%time1 %host %logname %method %url %code %bytesd"
LogSeparator="\t"
NotPageList=""
DirIcons="/awstatsicons"
LevelForBrowsersDetection=0
LevelForOSDetection=0
LevelForRefererAnalyze=0
LevelForRobotsDetection=0
LevelForWormsDetection=0
LevelForSearchEnginesDetection=0
ShowLinksOnUrl=0
ShowMenu=1
ShowSummary=UVHB
ShowMonthStats=UVHB
ShowDaysOfMonthStats=HB
ShowDaysOfWeekStats=HB
ShowHoursStats=HB
ShowDomainsStats=HB
ShowHostsStats=HBL
ShowAuthenticatedUsers=HBL
ShowRobotsStats=0
ShowEMailSenders=0
ShowEMailReceivers=0
ShowSessionsStats=1
ShowPagesStats=PBEX
ShowFileTypesStats=HB
ShowFileSizesStats=0
ShowBrowsersStats=0
ShowOSStats=0
ShowOriginStats=0
ShowKeyphrasesStats=0
ShowKeywordsStats=0
ShowMiscStats=0
ShowHTTPErrorsStats=0
ShowSMTPErrorsStats=0

Что означают все эти параметры – смотрите в документации.

9.3) Тестим
# /usr/local/www/awstats/cgi-bin /awstats.pl -config=ftp.homenet.ru

Если все ок то добавляем в крон команды
# ee /etc/crontab

Добавим, чтобы он каждые 28 мин обновлял статистику для FTP
*/28 * * * * root /usr/local/www/awstats/cgi-bin /awstats.pl -config=ftp.homenet.ru

10) Смотрим в браузере и радуемся :)
http://www.homenet.ru/awstats/awstats.pl?config=ftp.homenet.ru


                             Postfix

10) Нус че там надо было парсить Postfix, Sendmail, QMail али MDaemon лана это все жрет :) Начнемс...
Меняем в конфигах Postfix, Sendmail, MDaemon и стандартном QMail logfiles, нижеследующее
LogFile="perl /путь/до/maillogconvert.pl standard < /путь_до_логов_почты/maillog |"

Для компрессных логов
LogFile="gzip &#8722;cd /var/log/maillog.0.gz | /путь/к/maillogconvert.pl standard |"

И для VAdmin QMail логов (при multi&#8722;host/virtualhost mail servers при запуске vadmin прогой), следущее
LogFile="perl /путь/до/maillogconvert.pl vadmin < /путь_до_логов_почты/maillog |"

10.1) Опять таки создаем конфиг :) те копируем туда дефолтный конфиг + переименовываем типа awstats.mail.имя_сайта.conf мона и так awstats.mail.conf эт как больная психика позволит ;)
# cp /usr/local/www/awstats/cgi-bin/awstats.model.conf \
? /etc/awstats/awstats.mail.homenet.ru.conf

10.2) Ну и как всегда редактируемс его
# ee /etc/awstats/awstats.mail.homenet.ru.conf

LogType=M
LogFormat="%time2 %email %email_r %host %host_r %method %url %code %bytesd"
LevelForBrowsersDetection=0
LevelForOSDetection=0
LevelForRefererAnalyze=0
LevelForRobotsDetection=0
LevelForWormsDetection=0
LevelForSearchEnginesDetection=0
LevelForFileTypesDetection=0
ShowMenu=1
ShowSummary=HB
ShowMonthStats=HB
ShowDaysOfMonthStats=HB
ShowDaysOfWeekStats=HB
ShowHoursStats=HB
ShowDomainsStats=0
ShowHostsStats=HBL
ShowAuthenticatedUsers=0
ShowRobotsStats=0
ShowEMailSenders=HBML
ShowEMailReceivers=HBML
ShowSessionsStats=0
ShowPagesStats=0
ShowFileTypesStats=0
ShowFileSizesStats=0
ShowBrowsersStats=0
ShowOSStats=0
ShowOriginStats=0
ShowKeyphrasesStats=0
ShowKeywordsStats=0
ShowMiscStats=0
ShowHTTPErrorsStats=0
ShowSMTPErrorsStats=1

10.3) Пробуемс
# /usr/local/www/awstats/cgi-bin /awstats.pl -config=mail.homenet.ru

Если никто не умер то добавляем в крон команды
# ee /etc/crontab

Добавим, чтобы он каждые 28 мин обновлял статистику для MAIL
*/28 * * * * root /usr/local/www/awstats/cgi-bin /awstats.pl -config=mail.homenet.ru

10.4) Лезем в браузер и прописываем
http://IP_ADDR/awstats/awstats.pl
Где вместо IP_ADDR укажите ip адрес или доменное имя машины.

11) Народная резня по дереву :)
Тут публику что народ сам для облегчения труда себе же и делает.

11.1) John Dau <bearsite@gmail.com> прислал вот такой интерестный скрипт+шаблон
Что делает
Автоматизированое создание конфигов awstats для вирутального хостинга.

Качаем http://dump.ru/files/4/456813554/
В архиве
awstats_create_configs.sh - создает конфиги awstats для виртуальных хостов
awstats.model.conf - шаблон конфига

После создания всех конфигов статистику для каждого сайта можно просматривать, например таким образом
http://vasya.pupkinltd.com/awstats/awstats.pl

но я в директории сайтов складываю файл ./log/index.shtml со следующим содержанием
<!--#include virtual="/awstats/awstats2.pl"-->


таким образом статистика доступна по, например http://vasya.pupkinltd.com/log

Смотрим awstats_create_configs.sh
#!/usr/local/bin/bash

################################################
# Автоматизированое создание конфигов awstats для вирутального хостинга
# предполагается что логи виртуальных хостов лежат таким образом 
#	- /hosting/logs
#		- /domen1
#			site1_access_log 
#			site1_error_log
#			site2_access_log
#			site2_error_log
#			site3_access_log
#			site3_error_log
#		+ /domen2
#		+ /domen3
#		+ /domen4
# к примеру, лог сайта vasya.pupkinltd.com лежит в файле 
#					/hosting/logs/pupkinltd.com/vasya_access_log
# 	       а лог сайта dunyasha.pupkinltd.com лежит в файле
#					/hosting/logs/pupkinltd.com/dunyasha_access_log
# created by JohnD
################################################

LOG_DIR="/hosting/logs"					# директория где лежат логи
CONF_DIR="/usr/local/etc/awstats"   # где будут лежать конфиги awstats.имя_cайта.conf
DATA_DIR="/hosting/awstats/data"    # куда будет складываться статистика awstats

if [ ! -d "$CONF_DIR" ]; then
  echo "CONF_DIR=$CONF_DIR does not exist"
  exit 1
fi

if [ ! -d "$DATA_DIR" ]; then
  echo "DATA_DIR=$DATA_DIR does not exist"
  exit 1
fi

if [ ! -d "$LOG_DIR" ]; then
  echo "LOG_DIR=$LOG_DIR does not exist"
  exit 1
else
  cd $LOG_DIR
fi

echo "Creating configs for existing sites in every domain"
for DOMAIN in *; do
if [ -d "$DOMAIN" ]; then
  cd $DOMAIN
      for LOG_FILE in *_access_log; do
			SITE=`echo $LOG_FILE| sed -e "s/_access_log//g"`
			cat $CONF_DIR/awstats.model.conf | \
			sed -e "s/\\\$log_dir/$LOG_DIR/g" | \
			sed -e "s/\\\$data_dir/$DATA_DIR/g" | \
			sed -e "s/\\\$domain/$DOMAIN/g" | \
			sed -e "s/\\\$logfile/$LOG_FILE/g" | \
			sed -e "s/\\\$site/$SITE/g" > \
			"$CONF_DIR/awstats.$SITE.$DOMAIN.conf"
			echo "awstats.$SITE.$DOMAIN.conf was created"
      done
  cd ..
fi
done

awstats2.pl - это несколько подправленый файл awstats.pl
Так что смотрим, оцениваем, автор ответственности нанесет за этот скрипт с вопросами обращаться к John Dau <bearsite@gmail.com>
Продолжение будет...



размещено: 2007-01-15,
последнее обновление: 2007-03-19,
автор: Raven2000


DocAl, 2007-01-18 в 0:26:48

2SerF: Для особо параноидальных случаев, awstats может генерить и статические отчёты, а самописные парсеры по любому поводу писать жизни не хватит, да и от ошибок ваш парсер ничуть не более застрахован.

SerF, 2007-01-18 в 9:29:14

DocA1: Мне кажется, что безопасность в любой сфере - это из области паранои, но в некоторых случаях без этого не обойтись. Я не говорю, что данный парсер плохой или дырявый,я просто заостряю внимание на альтарнатив в получении статистики.
Далее, написать простой обработчик логов - это не сложно (мой был написан за 4 вечера), в данном случае IDE от Borland рулит. Конечно, все писать жизни не хватит, с этим я с тобой полностью согласен, но уж такое то можно. Не даром все-таки пишут СВОИ сайтовые движки и проч., несмотря на обилие в интернете бесплатных скриптов.
Опять же повторяюсь, это только моё мнение( не претендующее на гениальность, но,надеюсь, не претендующее и на идиотизм).

jrmm, 2009-04-28 в 9:22:16

Хорошая софтина, развитая.

Неприятно только, что url самого каталога статистики (у меня http://мойсервер/awstats/) ведет в 404 и нет общего индекса по всем сайтам (понятно, что его тоже можно нарисовать - статический, руками).

Рулит статика, описанная в doc/awstats_setup.html (я просто скопировал тамошний код).

ps. а форума по этой статье нет?

Павел, 2009-04-29 в 15:40:16



Товарищщи - правильно Товарищи

Евгений, 2009-07-02 в 22:05:11

Спасибо. Буду ставить и анализировать. Спаммеры замучили.

Linxpro, 2009-07-27 в 8:15:29

Делал по стаье и при обновлении парсера выводит следующее:
Где грабли, не пойму
============================================================
Create/Update database for config "/etc/awstats/awstats.mail.conf" by AWStats version 6.9 (build 1.925) From data in log file "/var/log/maillog"... Phase 1 : First bypass old records, searching new record... Searching new records from beginning of log file... Jumped lines in file: 0 Parsed lines in file: 22146 Found 21093 dropped records, Found 1053 corrupted records, Found 0 old records, Found 0 new qualified records.

Raven2000, 2009-07-27 в 8:44:44

to Linxpro
Если парсишь почтовик то необходимо чтобы, он писал логи в нужном виде воспринимаемые этим парсером. Формат логов можешь посмотреть в офф-й доке awstats.

Salimk, 2011-05-24 в 12:59:43

Статистика для SQUID-CACHE
squid.conf:
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
access_log /usr/local/squid/logs/access.log combined

awstats.proxy.conf:
LogFile="/usr/local/squid/logs/access.log"
LogType=W
LogFormat=1
SiteDomain="proxy"

ShowDomainsStats=0
ShowAuthenticatedUsers=PHBL
ShowRobotsStats=0
ShowWormsStats=0
ShowKeyphrasesStats=0
ShowKeywordsStats=0

DarkAGeS, 2012-05-11 в 10:43:22

хотелось бы отметить, что syslogd должен быть запущен без опций \"-v\" иначе maillogconvert.pl вернет пустой результат.
также в крон стоит добавить после основной команды \" > /dev/null 2>&1\" иначе будет сыпать на почту рута кучу сообщений

makky, 2012-11-13 в 1:19:06

все это не будет работать на вирт. хостинге с включенным suexec.



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0633 секунд
Из них PHP: 32%; SQL: 68%; Число SQL-запросов: 86 шт.
У Вас отключено GZIP-сжатие в браузере. Размер страницы 57947