Анализ логов web-сервера nginx. Пример конфигурации

Вообщем, как известно, ISPmanager умеет анализировать логи сервера, возможно использовать как webalizer, так и awstats (awstats будет покруче), но дело в том, что, предположим у вас свой собственный чистый сервер с FreeBSD и Nginx и вам необходимо как либо анализировать логи и ротейтить их стандарными средствами.

Заметка пишется фактически для себя, поэтому стиль ее не выдержан, на все вместе с установкой было потрачено около 30 минут.

Задача - получать ежечасную статистику логов веб-сервера nginx и осуществлять их ротацию раз в сутки.

Вообщем, как известно, ISPmanager умеет анализировать логи сервера, возможно использовать как webalizer, так и awstats (awstats будет покруче), но дело в том, что, предположим у вас свой собственный чистый сервер с FreeBSD и Nginx и вам необходимо как либо анализировать логи и ротейтить их стандарными средствами.

Во первых, в конфиге nginx в статьях ранее мы использовали формат лога
log_format main '$remote_addr - $remote_user [$time_local] $request '
'”$status” $body_bytes_sent “$http_referer” '
'”$http_user_agent” “$http_x_forwarded_for”';

Это неверный подход. С таким логом не работают анализаторы webalizer и analog. Awstats вроде бы со слов коллеги работает, но я не проверял.

Во вторых, логи мы теперь будем писать в /var/log/nginx

Поменяем формат логов, делается это просто, дело в том, что у nginx уже существует преопределенный формат combined http://wiki.codemongers.c>omNginxRuHttpLogModule (который один в один совпадает с apache) поэтому просто меняем

access_log /var/log/nginx/stat.ihtia>ndr.info.log main;
на
access_log /var/log/nginx/stat.ihtia>ndr.info.log combined;

Итак, поставим простой как грабли и не требующий настройки пакет analog (хотя он и черезмерно простой, зато быстрый и реально работающий)

# cd /usr/ports/www/analog/
# make install clean

Настроим его

root@gw:/usr/local/etc# diff analog.cfg-dist analog.cfg
14c14,20
< LOGFILE /var/log/httpd-access.log
-
> LANGFILE ru.lng
> DNSFILE dnscache
> BROWSERREP ON
> BROWSERSUM ON
> HOST ON
> REFERRER ON

> #
17d22
< # HOSTNAME “[my organisation]”
40a46
> SEARCHENGINE http://www.yandex.ru/* text

То есть LOGFILE и HOSTNAME убрать, остальное по вкусу.

Создадим домен в который будет писаться статистика моих доменов (в конфиге nginx)
# stat.ihtiandr.info
server {
listen 80;
server_name stat.ihtiandr.info;
root /home/web/data/www/stat.i>htiandr.info;
autoindex on;
autoindex_localtime on;

location / {
auth_basic “webstat”;
auth_basic_user_file /usr/local/etc/nginx/htpa>sswd;
}

location /images {
alias /usr/local/www/data/image>s;
}

access_log /var/log/nginx/stat.ihtia>ndr.info.log combined;
}

Также создайте в корне домена robots.txt с содержимым
User-Agent: *
Disallow: /

Зачем? - спросите вы. Дело в том, что в коде статистики есть ссылки на него вида
<td class=”xl”>/robots.txt/</>td>
Ну и соответственно браузер типа Firefox ругается на это.

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

# mkdir /usr/local/etc/nginx/rota>te (под скрипты)

И далее в этой директории создадим logrotate.sh

#!/bin/sh
#
outputdir=/home/web/data/>wwwstat.ihtiandr.info/`/>bindate +%d-%m-%Y`

mkdir $outputdir
cd $outputdir

/usr/local/bin/analog +C'HOSTNAME “ihtiandr.info”' +C'LOGFORMAT COMBINED' /var/log/nginx/ihtiandr.i>nfo.log > ihtiandr.info.html
..
.
. (все домены)

# важно, чтобы ротация логов запустилась в 00:00 часов
/bin/sleep 60

/usr/sbin/newsyslog -f /usr/local/etc/nginx/rota>tenewsyslog.cfg

/usr/local/etc/rc.d/nginx reload

отротейлили лог

В /usr/local/etc/nginx/rota>tenewsyslog.cfg пишем
/var/log/nginx/ihtiandr.i>nfo.log 644 10 * @T00 J
.
.
.. все наши домены

И вставили в cron
# crontab -e
59 * * * * /usr/local/etc/nginx/rota>telogrotate.sh >/dev/null 2>&1

Все, всем можно радоваться. Ходим браузером на домен статистики и в папках статистика отсортированная по датам. Очень удобно и практично. Есть маленький недостаток - поскольку ротация запускается после того, как статистика обработалась (хотя analog работает очень быстро), то может теряться одна-две минуты посещений. Если кому критично - анализируйте суточную статистику отдельно итп, в данной версии не предназначено.

Также почитайте сравнение анализаторов логов - http://www.samag.ru/art/0>7.200507.2005_18.html - неплохая статья.

Ну и читаем http://www.analog.cx/docs>Readme.html




А так же :

Фридрих Ницше — Воля к власти
"Воля к власти" — бортовой журнал потерпевших кораблекрушение. Это крайне жестокая книга, обращенная к тем, кому уже нечего терять. Особенно не повезло "Воле к власти" в России. Лишь теперь русскому читателю доступен полный перевод легендарной книги — все 1067 афоризмов — безусловно, событие, в том числе и литературное.


Социология – мультипарадигмальная наука?
Балог А. Социологи считают социологию мультипарадигмальной наукой. Значит, «социальную реальность» можно рассматривать с разных точек зрения, что не позволяет говорить о единой «социологической теории» как всеобъемлющей и признанной группе доказательств, обсуждение основных дисциплинарных проблем которой более или менее закончилось в духе общего консенсуса.


От: granula



Hosted by uCoz