Страница 1 из 1

AWStats (Импорт логов)

Добавлено: 2011-10-20 8:51:29
Matveev
1 - имеется сайт site001.ru на FreeBSD 8.2
Сайт складывает файлы логов по следующему формату:

Код: Выделить всё

/var/log/httpd/site001/localhost_access_log.%YYYY-%MM-%DD
В папке имеются логи за предыдущие дни (пару лет).

2 - недавно установил и настроил AWStats.
в конфиге

Код: Выделить всё

/usr/local/www/awstats/cgi-bin/awstats.site001.ru.conf
В качестве параметра отвечающего за путь к лог файлу указал:

Код: Выделить всё

LogFile="/var/log/httpd/site001/localhost_access_log.%YYYY-%MM-%DD"
На данный момент AWStats считывает лог текущего числа.

Поставил себе задачу считать все имеющиеся логи за предыдущие дни.

Поэкспериментировал так:
- Изменил параметр на конкретное значение:

Код: Выделить всё

LogFile="/var/log/httpd/site001/localhost_access_log.2010-01-01"
- Перегрузил конфиг

Код: Выделить всё

/usr/local/www/awstats/cgi-bin/awstats.pl -config="site001.ru"
Два итога:
1) если база пуста он импортирует данные
2) если база уже чем-нибудь забита к примеру уже внесены данные за 2010-01-02, то он данные считает старыми и не импортирует их

У меня 2 вопроса.
1) можно ли в качестве параметра в

Код: Выделить всё

/usr/local/www/awstats/cgi-bin/awstats.pl -config="site001.ru"
указывать путь к логу - не изменяя при этом начальный конфиг?
(хочу написать скрипт выполняющий по порядку эту команду но с разным параметром LogFile - не меняя сам конфиг)

2) как исправить "итог 2" в случае описанном выше?

P.S.: man читал :(

Re: AWStats (Импорт логов)

Добавлено: 2011-10-20 9:37:46
PYO
-LogFile=x to change log to analyze whatever is 'LogFile' in config file
Be care to process log files in chronological order when updating statistics.

Re: AWStats (Импорт логов)

Добавлено: 2011-10-20 10:37:23
Matveev
PYO писал(а):-LogFile=x to change log to analyze whatever is 'LogFile' in config file
Be care to process log files in chronological order when updating statistics.
Упростило мне жизнь СПС!!! (сам до знака "=" не додумался :( )

Вопрос о том как принудительно подгрузить старые логи остался не решённым.

Пример:

Код: Выделить всё

serv# /usr/local/www/awstats/cgi-bin/awstats.pl -config="192.168.151.246" -LogFile="/var/log/httpd/site001/localhost_access_log.2011-09-05.txt"
Create/Update database for config "/usr/local/www/awstats/cgi-bin/awstats.site001.ru.conf" by AWStats version 7.0 (build 1.971)
From data in log file "/var/log/httpd/site001/localhost_access_log.2011-09-05.txt"...
Phase 1 : First bypass old records, searching new record...
Direct access to last remembered record has fallen on another record.
So searching new records from beginning of log file...
Jumped lines in file: 0
Parsed lines in file: 51893
 Found 1 dropped records,
 Found 0 comments,
 Found 0 blank records,
 Found 0 corrupted records,
 Found 51892 old records,
 Found 0 new qualified records.
serv#

Re: AWStats (Импорт логов)

Добавлено: 2011-10-20 16:03:19
PYO
PYO писал(а):Be care to process log files in chronological order when updating statistics.
Удаляешь файл со статистикой, парсишь месяц по порядку.

Re: AWStats (Импорт логов)

Добавлено: 2011-10-21 8:38:18
Matveev
PYO писал(а):Удаляешь файл со статистикой, парсишь месяц по порядку.
Походу так и буду делать с помощью своего скрипта.
Всем СПС!!!

Re: AWStats (Импорт логов)

Добавлено: 2011-10-25 5:58:10
Matveev
Вот рабочий скриптик. (сервер не нагружен, поэтому скрипт не стал оптимизировать)

Код: Выделить всё

#!/bin/sh

#paws=$1
#cnfg=$2
#plog=$3

paws=/usr/local/www/awstats/cgi-bin/awstats.pl
cnfg=192.168.151.246
plog=/var/log/site01

echo ""
echo "AWStats path: " $paws
echo "Site name: " $cnfg
echo "Logs path: " $plog
echo ""

#
# Искать файлы в каталоге пока не будем, а просто берём начало от даты-1 до даты-2
# ведь формат лога мы знаем:
# localhost_access_log.%YYYY-%MM-%DD
#
# $paws -config=$cnfg -LogFile=$plog/localhost_access_log.%YYYY-%MM-%DD
#

START_Y=2010
START_M=12
START_D=23

DATE1=`date -v${START_Y}y -v${START_M}m -v${START_D}d +%F`
DATE2=`date +%F`

let i=0
while [ $DATE1 != $DATE2 ]
do
        DATE1=`date -v${START_Y}y -v${START_M}m -v${START_D}d -v+${i}d +%F`;
        echo "Date1 = "$DATE1;
        let i=i+1;

        $paws -config=$cnfg -LogFile=$plog/localhost_access_log.$DATE1.txt;
        echo
done

echo "Done";