Назад | Перейти на главную страницу

AWStats LogFormat для AWS Elastic Load Balancer

Надеюсь, что кто-то сможет указать, что не так с LogFormat, который я пытаюсь использовать с журналами доступа, созданными Amazon ELB.

Многострочность для чтения ошибок сервера:

%time5 %elb %host %host_port %host_r %host_r_port %request_processing_time 
%backend_processing_time %response_processing_time %code 
%backend_status_code %received_bytes %bytesd %methodurl

Пример записи в журнале (после очистки):

2014-08-28T17:59:14 awseb-e-2-AWSEBLoa-AAAAAAAA 123.123.123.123 44153 10.123.123.123 80 0.000046 0.536613 0.000045 200 200 0 13129 "GET /path/to/web/app HTTP/1.1"

Перед отправкой в ​​AWStats журналы очищаются. Использую следующие замены:

cat ${s3_logs_dir}/* \
| sed -e "s/\(\.[0-9]\{1,3\}\):\([0-9]\{2,5\}\)/\1 \2/g" \
| sed -e "s/\(:[0-9]\{2\}\)\(\.[0-9]\{6\}Z\)/\1/g" \
| sed -e "s/http:\/\/www\.example\.com:80//g" \
> ${combined_log} 2>>${log_file}

Сначала я отключаю хост от порта, затем удаляю микросекунды из даты ISO% time5 и, наконец, я попытался удалить абсолютный URL-адрес из запроса.

Доброе утро, теперь это устарело, но с расширенной веб-статистикой awstats 7.7 (сборка 20180105) и вашими правилами синтаксического анализа с этим критерием он также соответствует агенту.

В текущих журналах elb также есть тип запросов, даже не задокументированный, поэтому новый формат

LogFormat = "% other% time5% other% host% host_port% host_r% host_r_port% request_processing_time% backend_processing_time% response_processing_time% code% backend_status_code% Received_bytes% bytesd% methodurl% uaquot"

% time5 сейчас работает.

спасибо за публикацию.

С уважением Дэвид

Оказывается, это ошибка с %time5 Параметр LogFormat в AWStats.

Я преобразовал YYYY-MM-DDTHH: MM: SS в YYYY-MM-DD HH: MM: SS и использовал %time2, и журналы были успешно проанализированы.

  • в образце нет точки, за которой следуют от 1 до 3 цифр, за которыми следуют 2 точки, а затем от 2 до 5 цифр, но пробел для разделителя портов уже есть

    sed -e "s / (. [0-9] {1,3}): ([0-9] {2,5}) / \ 1 \ 2 / g»

  • нет двойной точки, за которой следует 2 цифры, за которыми следует точка, 6 цифр и 'Z'

    sed -e "s / (: [0-9] {2}) (. [0-9] {6} Z) / \ 1 / g"

...

Кроме того, вам не нужно передавать действие sed, просто разделите действие полуколонкой s/pat11/pat12/opt1;s/pat21/pat22/opt2;other action