Быстрая установка awstats для анализа логов nginx
Ставим awstats из портов или из Yum-а.
Теперь надо определиться с логами nginx-а. Тут два варианта: либо логи для всех виртуалхостов пишутся в один файл, либо для каждого хоста в свой. В nginx 0.7 есть функционал позволяющий в директиве access_log использовать переменные. Т.е. например можно сделать так:
В 0.6 так нельзя. Поэтому я буду рассматривать вариант, когда лог-файл один и общий.
Формат логов сделаем такой:
access_log /var/log/nginx/nginx-access.log main;
Теперь создаем конфиг awstats-а для каждого виртуалхоста на базе дефолтового образца.
Правим в нем строки:
LogType=W
LogFormat = "%virtualname %host %time1 %methodurl %code %bytesd %refererquot %uaquot"
LogSeparator=" "
и параметры SiteDomain, HostAliases.
Так же если надо считать статистику по странам в конфиг надо добавить строчку:
И поставить порты: GeoIP-1.4.4_1, p5-Geo-IP-1.36 (Linux: geoip.x86_64, perl-Geo-IP.x86_64)
Теперь создаем и добавляем в кронтаб файлик awstats_run.sh с такими строками:
/usr/share/awstats/tools/awstats_buildstaticpages.pl -config=domain -dir=/home/awstats/domain.com -static -update
Не забыть включить ротацию логов Nginx. Пример для newsyslog.conf
Если дело происходит на Linux и надо настроить logrotate, то можно сделать ротацию и обсчет логов по другому:
Правим Logrotate-конфиг Nginx:
rotate 10
size=100M
missingok
notifempty
compress
sharedscripts
prerotate
/etc/awstats/awstats_run.sh
endscript
postrotate
[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
endscript
}
Небольшой минус – ротация будет не точно посуточная.
Если надо подключить к awstats много доменов, то можно воспользоваться этим скриптом, предварительно создав конфиг-образец awstats.domain.com.conf:
CONFIG="/usr/local/etc/awstats"
OUTPUT="/home/domains/sampledomain.com/awstats"
if [ "x$1" = "x" ]; then
echo "Usage: $0 domain.com"
exit
fi
sed -e "s/domain.com/$1/g" "$CONFIG/awstats.domain.com.conf" > "$CONFIG/awstats.$1.conf"
echo "/usr/local/www/awstats/tools/awstats_buildstaticpages.pl -config=$1 -dir=$OUTPUT -static -update" >> $CONFIG/awstats_run.sh
Если мы будем генерировать статистику для всех сайтов и выкладывать ее на какой то один общий домен, то не забыть отключить дефолтный конфиг для awstats для апача.
Для создания общей страницы статистики для всех сайтов можно использовать эту
В различных ОС и дистрибутивах Linux скрипты awstats устанавливаются в разные места. Это надо проверить вручную запустив пересчет статистики и убедившись в отсутствии ошибок.