Webalizer раньше показывал 12 месяцев на сводке стартовой страницы, в графическом обзоре, а также в списке ссылок на каждый из этого месяца и 11 месяцев до этого. Это работало из коробки, по крайней мере, в Ubuntu 10.04 и 12.04, мне нужно было только настроить инкрементальный режим для работы с моими ежедневными (не ежемесячными) файлами журнала.
После переноса двух сайтов на 14.04 я обнаружил, что webalizer портит сводку, так что в графическом обзоре он показывал только два месяца, 10 слотов для других месяцев были пустыми. Список ссылок показывает только те же два месяца (этот месяц и прошлый месяц). Если я опускаю данные журнала за май и июнь, я получаю март и апрель — снова только два месяца.
Я попытался пропустить инкрементальный режим (используя файл конфигурации по умолчанию) и передал webalizer один файл журнала, содержащий 30 месяцев журналов. Это привело к тому, что webalizer создал сводную графику и список ссылок 11 раз за май и 1 раз за июнь.
Важно отметить: ежемесячная статистика выглядит правильно, даже если она датирована тремя и более месяцами ранее. Мне просто нужно вручную ввести URL-адрес любой записи статистики, датированной более чем 2 месяцами ранее.
Я искал в Интернете всевозможные комбинации «webalizer», «два месяца», «только» и т. д. и нашел только один подобный вопрос — но без какого-либо ответа.
Есть идеи, ребята, что не так или что я делаю неправильно?
Хорошо, конечно, вы хотите увидеть более подробно, что именно я пробовал, поэтому я приведу примеры командной строки того, что я пробовал:
$ logdir=/path-to-logdir
$ ls $logdir
...
2015.0617-access.log.gz
2015.0618-access.log.gz
2015.0619-access.log.gz
$ outputdir=/path-to-webroot/statistics
$ rm $outputdir/*
$ for logfile in $logdir/*-access.log.gz; do webalizer -r http://$hostname -n $hostname -o $outputdir $logfile; done
... lots of verbose output about webalizer's activity
... last of it being:
Webalizer V2.23-08 (Linux 3.13.0-55-generic x86_64) locale: htm*
Using logfile /path-to-logdir/2015.0619-access.log.gz (gzip-clf)
Creating output in /path-to-webroot/statistics
Hostname for reports is 'myhostname'
Reading history file... webalizer.hist
Reading previous run data.. webalizer.current
Saving current run data... [06/19/2015 23:27:09]
Generating report for June 2015
Saving history information...
Generating summary report
20 records in 1 seconds, 20/sec
$
В результате общая сводка составила всего два месяца, однако ежемесячные сводки (даже старше 2 месяцев) были созданы и доступны через введенный вручную URL-адрес.
Другая попытка (все данные сразу — неинкрементные):
$ zcat $logdir/*-access.log.gz >/tmp/access.log
$ rm $outputdir/*
$ webalizer -r http://$hostname -n $hostname -o $outputdir /tmp/access.log
... lots of verbose output just as before
$
Похожий результат, но в общей сумме 11 записей за май и одна запись за июнь.
Кто может помочь получить правильные резюме?
Спасибо, ТомТомТом
== ...
Ни одного ответа или комментария за последние 24 часа - похоже, что этот webalzer не так уж и популярен. Ну, вот что я сделал:
- Я скопировал файлы журнала на ноутбук с новой установкой 14.04 — тот же результат
- Я удалил файлы журналов, созданные Apache 14.04 — результат тот же
- Я взял исходный код webalizer и скомпилировал его на двух разных машинах с 14.04 — эта наконец-то заработала.
Означает ли это, что пакет webalizer Ubuntu-14.04 сломан? Уже больше года? Трудно поверить.
Если никто не может объяснить, что пошло не так, по крайней мере, это касается тех из вас, кто ищет проблемы с резюме Webalizer, — вы обнаружили, что проблема не только у вас.
Я буду рад услышать о других людях, у которых возникли схожие проблемы с Webalizer, и, конечно, буду еще более рад, если кто-нибудь укажет мне решение, не требующее компиляции исходников Webalizer.
Спасибо!
ТомТомТом
решение1
Это известная ошибка, и для нее есть патч:https://bugs.launchpad.net/ubuntu/+source/webalizer/+bug/1471387
решение2
Ну, у меня та же проблема, правда Fedora box. И решения тоже нет. Я использую "обходной путь", основанный на скрипте, который я нашел наhttp://stevehavelka.com/rebuilding-broken-webalizer-history-tcl/, с помощью которого вы пересоздаете файл истории. Это грязно, копипаст-стиль, но это работает. По крайней мере, в течение одного месяца (то есть, пока webalizer не пересоздаст страницу индекса и не перезапишет файл истории):
#!/bin/sh
#Using this script is straightforward:
#
# 1. Run it within the folder that has your old webalizer files, and it produces as much historical data as it can.
# 2. Copy/paste that historical data into your webalizer.hist file, and rerun Webalizer.
# 3. That’s it! You should have all your stats back.
#
# the next line restarts using tclsh \
exec tclsh "$0" "$@"
# first, find the right files
foreach file [lsort -decreasing [glob usage_*.html]] {
# and get the date from the files
regexp {usage_(\d{4})(\d\d).html} $file -> year month
# open the file to get some data from it
set fh [open $file r]
set text [list]
while { ![eof $fh] } {
lappend text [gets $fh]
}
close $fh
# now start pulling out data with Total Hits
set idx [lsearch -glob $text {*Total Hits*}]
regexp {<B>(\d+)</B>} [lindex $text $idx+1] -> totalHits
# Total Files
set idx [lsearch -glob $text {*Total Files*}]
regexp {<B>(\d+)</B>} [lindex $text $idx+1] -> totalFiles
# Total Unique Sites
set idx [lsearch -glob $text {*Total Unique Sites*}]
regexp {<B>(\d+)</B>} [lindex $text $idx+1] -> totalUniques
# Total kB Files
set idx [lsearch -glob $text {*Total kB Files*}]
if { $idx == -1 } {
set idx [lsearch -glob $text {*Total KBytes*}]
}
regexp {<B>(\d+)</B>} [lindex $text $idx+1] -> totalKb
# Process days
set first [lsearch -glob $text {*Daily Statistics for*}]
set last [lsearch -glob $text {*Hourly Statistics for*}]
set subtext [lrange $text $first $last]
set dates [lsearch -glob -all -inline $subtext {<TR*><TD ALIGN=center><FONT SIZE="-1"><B>*</B></FONT></TD>}]
# First day processed
regexp {<B>(\d+)</B>} [lindex $dates 0] -> firstDay
# Last day processed
regexp {<B>(\d+)</B>} [lindex $dates end] -> lastDay
# Total Pages
set idx [lsearch -glob $text {*Total Pages*}]
regexp {<B>(\d+)</B>} [lindex $text $idx+1] -> totalPages
# Total Visits
set idx [lsearch -glob $text {*Total Visits*}]
regexp {<B>(\d+)</B>} [lindex $text $idx+1] -> totalVisits
# and that's it!
puts "[string trimleft $month 0] $year $totalHits $totalFiles $totalUniques $totalKb $firstDay $lastDay $totalPages $totalVisits"
}
Как уже было сказано, поместите этот скрипт в каталог, содержащий сводки статистики, выполните его и скопируйте-вставьте результат в ваш файл webalizer.hist. Вот и все.
Это, вероятно, означает, что запись истории обратно в файл истории не работает так, как ожидалось. Поскольку я понятия не имею, где искать в источнике, я надеюсь, что кто-то другой сможет пролить больше света на этот вопрос... Любые предложения приветствуются.