Awstats неверно обрабатывает склеенные логи (помогите разобраться)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Arthes
Сообщения: 282
ОС: OS X Yosemite and CentOS

Awstats неверно обрабатывает склеенные логи

Сообщение Arthes »

Недавно установил и настроил для мониторинга WEB ресурсов нашей организации awstats из репозитария Linux Fedora 9
По умолчанию как делают ВСЕ - прописывая в конфиг на нужный хост файл его лога все работает идеально...

Но у нас проблема в том что сеть за NAT и нужно знать все посещения и внутренние и внешние. Внешние адрсеа проксирует отдельный Linux сервер и на наем пишется лог внешних посещений ресурса. А на самом WEB сервере в логи пишется внутренние адреса, а за внешние адреса посещений отвечает адрес Linux сервера - главного маршрутизатора.


Я сделал чтоб лог был полным и правильным.
1) На ВЕБ хостинге из файла логов вырезаеются все записи о главном маршрутизаторе с помощью опций команды sed 'xxx.xxx.xxx.xxx/d' logfile > log1
2) после чего с проксирующего сервера перекачивается ЛОГ с ВНЕШНИМИ посещениями и склеивается с помощью
cat log1 log2 > Log_full
3) Awstats парсит уже склеяный готовый лог в котором только внешние и внутренние адреса, без адреса сервера маршрутизации.

И в итоге, по выводу команды создания базы отчета или ее апдейта, постоянно баниться ( Corrupted 327255 ) огрономное колличество ЗАПИСЕЙ лога.

В ходе эксперементов по порядку склеивания файлов выяснено что ПРАВИЛЬНО обрабатываются данный в полном логе из первого файла а из второго почти все банятся (или все это еще надо выяснить...)
То есть изначально логи нормальные --- какой первый будет в склейке такой будет парситься правильно... :unsure:

Что посоветуете???

P.S. Время в этих логах идет с некоторым разрывом так как выполнить одновременный срез логов на двух серверах затруднительно. (размеры у них разные, а останавливать Апаче нельзя)
В дополнение к Awstats прикручены FREE плагины GeoIP и GeoLiteCity от компании MaxMind для определения стран и городов захода на сайты.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Awstats неверно обрабатывает склеенные логи

Сообщение sash-kan »

само собой напрашивается, что надо отсортировать записи по меткам времени.
приведите пример неотсортированного файла — подскажем, как отсортировать.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
patrius
Сообщения: 337
ОС: Debian (4 & 5) -> Gentoo

Re: Awstats неверно обрабатывает склеенные логи

Сообщение patrius »

а сделать вывод на "разных страничках" не проще?
Спасибо сказали:
Arthes
Сообщения: 282
ОС: OS X Yosemite and CentOS

Re: Awstats неверно обрабатывает склеенные логи

Сообщение Arthes »

sash-kan писал(а):
29.05.2010 22:35
само собой напрашивается, что надо отсортировать записи по меткам времени.
приведите пример неотсортированного файла — подскажем, как отсортировать.


В данном случае первый файл при склейке с помощью cat был файл-лог ---локального доступа на сайт, а второй внешние посещения.
Сам общий файл начинается с 20 мая (начало записи логов внутреннего доступа)
Соответственно файл с внешним доступом как видно из кусочка склеенного лога начинается с 27 мая.

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

192.168.16.234 - - [31/May/2010:09:58:23 +0400] "GET /img/arbikon.gif HTTP/1.1" 200 4366 "http://xxx.ru/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"
192.168.6.41 - - [31/May/2010:09:58:28 +0400] "GET /Vmuseum/vmuseum.files/images%5CTop_On.gif HTTP/1.1" 404 313 "http://xxxx.ru/Vmuseum/Index.html" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)"
94.243.109.49 - - [27/May/2010:16:35:00 +0400] "GET /bibl3.htm HTTP/1.1" 304 0 "http://xxxx.ru/dni.nsf/pages/vest" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.4; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"
94.243.109.49 - - [27/May/2010:16:35:00 +0400] "GET /img/menu.css HTTP/1.1" 304 0 "http://xxxx.ru/bibl3.htm" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.4; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"



а сделать вывод на "разных страничках" не проще?

Да надо учитывать общее колличество уникальных посещений на одной странице, да и нагляднее так.

Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Awstats неверно обрабатывает склеенные логи

Сообщение sash-kan »

слить и отсортировать можно примерно так:

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

cat *.log | sed -e 's/^\([^[]*\)\(\[[^]]*\]\)/\2 \1\2/; s!/! !; s|/| |; s/:/ /; s!^\[\([^]]*\)\]\(.*\)$!echo $(/bin/date -d "\1" +%s) '\''\2'\''!e' | sort -n | sed 's/^[^ ]* *//' > log.result

принцип работы:
1. дата, заключённая в [], копируется в начало строки.
2. подменяются пробелами первые два слэша и первый символ ":" (иначе date не хочет воспринимать это как дату).
3. дата, стоящая в начале строки, пропускается через /bin/date, преобразующий её в секунды с начал эпохи.
4. строки сортируются нормальным числовым алгоритмом.
5. эти самые секунды убираются, и строки принимают прежний вид, но выстроены они теперь в нужно порядке.

возможные проблемы: если в логе встретится одинарная кавычка «'», будет зайчик. проинспектируйте старые логи на предмет кавычки. если будет попадаться, надо усложнять или переделывать алгоритм.

p.s. а нельзя научить того, кто пишет эти логи, записывать дату в нормальном виде, а не в извращённом американском формате?
ну, чтоб старшие части даты стояли раньше младших: год, месяц, день, время? (причём месяц — числами, а не буквами).
тогда, во-первых, не потребуется вызов date (и, соответственно, сортировка будет работать быстрее. может быть, на порядок), во-вторых, не будет возможного «зайчика» с одинарной кавычкой.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Arthes
Сообщения: 282
ОС: OS X Yosemite and CentOS

Re: Awstats неверно обрабатывает склеенные логи

Сообщение Arthes »

sash-kan писал(а):
31.05.2010 16:20
слить и отсортировать можно примерно так:

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

cat *.log | sed -e 's/^\([^[]*\)\(\[[^]]*\]\)/\2 \1\2/; s!/! !; s|/| |; s/:/ /; s!^\[\([^]]*\)\]\(.*\)$!echo $(/bin/date -d "\1" +%s) '\''\2'\''!e' | sort -n | sed 's/^[^ ]* *//' > log.result

принцип работы:
1. дата, заключённая в [], копируется в начало строки.
2. подменяются пробелами первые два слэша и первый символ ":" (иначе date не хочет воспринимать это как дату).
3. дата, стоящая в начале строки, пропускается через /bin/date, преобразующий её в секунды с начал эпохи.
4. строки сортируются нормальным числовым алгоритмом.
5. эти самые секунды убираются, и строки принимают прежний вид, но выстроены они теперь в нужно порядке.

возможные проблемы: если в логе встретится одинарная кавычка «'», будет зайчик. проинспектируйте старые логи на предмет кавычки. если будет попадаться, надо усложнять или переделывать алгоритм.

p.s. а нельзя научить того, кто пишет эти логи, записывать дату в нормальном виде, а не в извращённом американском формате?
ну, чтоб старшие части даты стояли раньше младших: год, месяц, день, время? (причём месяц — числами, а не буквами).
тогда, во-первых, не потребуется вызов date (и, соответственно, сортировка будет работать быстрее. может быть, на порядок), во-вторых, не будет возможного «зайчика» с одинарной кавычкой.



Огромнейшее спасибо!
Действительно работает!!! :drinks: И все логи теперь парсятся нормально и нет никаких неправильных записей из второго лога.

Единственный минус --- скорость работы.... Ооочень медленно. У меня склеянный Лог основного сайта весит к концу недельно ротации логов порядка 600 метров... Видимо обрабатываться будет часов 20!!! :cray:

P.S. может быть есть какой модуль АПАЧА чтобы вскрывать проксируемые внешние адрсеа за NAT???
И не прибегать к такому длительному парсингу логов и перекачки логов с одного сервера на другой?? :unsure:
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Awstats неверно обрабатывает склеенные логи

Сообщение sash-kan »

Arthes писал(а):
03.06.2010 17:41
Ооочень медленно.
прочитайет «p.s.» по поводу ускорения.

p.s. если физической записью логов у вас занимается syslogd, а не сами программы, то можно отправлять записи по сети. google://syslog+remote+logging, man syslogd и т.п.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали: