Webalizer показывает только 2 месяца на странице сводки (Ubuntu 14.04)

Webalizer показывает только 2 месяца на странице сводки (Ubuntu 14.04)

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. Вот и все.

Это, вероятно, означает, что запись истории обратно в файл истории не работает так, как ожидалось. Поскольку я понятия не имею, где искать в источнике, я надеюсь, что кто-то другой сможет пролить больше света на этот вопрос... Любые предложения приветствуются.

Связанный контент