Анализ больших логов apache(nginx) access, sumaster, 28-Окт-09, 16:13 [смотреть все] Появилась необходимость получить статистику самых частых ошибок на основе анализа apache(nginx) access логов. Размер логов > 5 Гб за сутки.Пример желаемого отчета: <кол-во повторов ошибки> <код (404,503 ...)> <запрос> <domain> <reffer> <кол-во повторов ошибки> <код (404,503 ...)> <запрос> <domain> <reffer> ... AWStats - не получается использовать т.к. процесс анализа умирает из-за огромного размера лога Анализатор visitors (http://www.hping.org/visitors/) - не показывает рефферы 404 ошибок, без реффера невозможно определить адрес страницы на которой находится битая ссылка Написал простенький анализатор на основе awk awk '($9 !~ /200|304/)' $log | awk '{print $9,$7,$11}' | sort | uniq -c | sort -r -n | head -n 70 В результате его работы получаю отчет вида <кол-во повторов ошибки> <код (404,503 ...)> <запрос> <reffer> Вопрос: существуют ли другие решения которые могут предоставить расширенную статистику ошибок на основе access логов?
|
- Анализ больших логов apache(nginx) access, xyz, 17:29 , 28-Окт-09 (1)
ротация лога раз в несколько часов + австатс на более мелких кусках >[оверквотинг удален] >Написал простенький анализатор на основе awk > >awk '($9 !~ /200|304/)' $log | awk '{print $9,$7,$11}' | sort | >uniq -c | sort -r -n | head -n 70 > >В результате его работы получаю отчет вида ><кол-во повторов ошибки> <код (404,503 ...)> <запрос> <reffer> > >Вопрос: существуют ли другие решения которые могут предоставить расширенную статистику ошибок на >основе access логов?
- Анализ больших логов apache(nginx) access, McLeod095, 17:51 , 28-Окт-09 (2)
>[оверквотинг удален] >>Написал простенький анализатор на основе awk >> >>awk '($9 !~ /200|304/)' $log | awk '{print $9,$7,$11}' | sort | >>uniq -c | sort -r -n | head -n 70 >> >>В результате его работы получаю отчет вида >><кол-во повторов ошибки> <код (404,503 ...)> <запрос> <reffer> >> >>Вопрос: существуют ли другие решения которые могут предоставить расширенную статистику ошибок на >>основе access логов? От себя ничего полезного посоветовать не могу, но пока в качестве временных мер хочу предложить вместо awk использовать perl. сам на себе проверил что на больших файлах perl работает заметно шустрее чем awk, правда у меня файлы были от 100 мегбайт. и кстати awk '($9 !~ /200|304/ {print $9,$7,$11})' $log должно работать быстрее :-) СОРРИ за флуд
- Анализ больших логов apache(nginx) access, angra, 08:50 , 29-Окт-09 (3)
Во первых perl быстрее, во вторых больше возможностей. Обрабатывались им и куда большие объемы. Правильно написанный вариант на perl справится с таким объемом за несколько минут. При желании можно его вообще сделать работающим по принципу tail -f да еще и интерактивным. Если с perl не дружите, то опишите _детально_ задачу, как будет время займусь.
- Анализ больших логов apache(nginx) access, sumaster, 10:03 , 29-Окт-09 (4)
>Во первых perl быстрее, во вторых больше возможностей. Обрабатывались им и куда >большие объемы. Правильно написанный вариант на perl справится с таким объемом >за несколько минут. При желании можно его вообще сделать работающим по >принципу tail -f да еще и интерактивным. >Если с perl не дружите, то опишите _детально_ задачу, как будет время >займусь. спасибо понял 1. готовых решений для анализа больших логов (вроде awstats) нет 2. нужно изучать perl
- Анализ больших логов apache(nginx) access, greenwar, 11:02 , 10-Ноя-09 (6)
>Пример желаемого отчета: ><кол-во повторов ошибки> <код (404,503 ...)> <запрос> <domain> <reffer> ><кол-во повторов ошибки> <код (404,503 ...)> <запрос> <domain> <reffer> нужен визуальный пример строки, которую нужно зацепить ну и также не помешает пример строки, которую цеплять не нужно ну а на основе пока имеющихся данных будет как-то так: #!/usr/bin/perl use warnings; my$from="/path/to/logfile"; # откуда брать данные для обработки my$to="/report/file"; # куда скидывать обработанный вывод open(FH,"$from"); open(TO,">$to"); while(<FH>){ next if !/код (404,503)/g; $total++; print TO "$_"; # не ставлю \n, потому что строки в исходном файле уже с ним } print TO "\nвсего ошибок: $total\n"; получите список ошибок 404,503 и общее их кол-во в файл /report/file
- Анализ больших логов apache(nginx) access, greenwar, 13:16 , 10-Ноя-09 (7)
попался мне тут лог httpd_access на глаза. соот-но, код меняем на этот:#!/usr/bin/perl use warnings; $from="httpd_access.log"; $to="httpd_parsed"; $total403=$total404=0; open(FH,"$from")or die"не открывается $from: $!\n"; open(NEW,">$to"); while(<FH>){ next if !/" (?:403|404) \d/; if(/" 403 \d/){print NEW "$_";$total403++} if(/" 404 \d/){print NEW "$_";$total404++} } print NEW "\nвсего ошибок 403: $total403 всего ошибок 404: $total404\n";
- Анализ больших логов apache(nginx) access, Leo, 01:31 , 08-Май-12 (8)
Народ, помогите плиз? Нужно написать скрипт на перл а у меня с ним опыта вобще никакого. Задача: Есть 4 папки в папке /weblogs в каждой из них лежит немерянное количество архивированных логов апача. Теперь есть файлик с 80тью IP адресами, и надо получить отчет какой адрес в каком файле встречается.Человек который поставил задачу посоветовал применить перл хэши. Вот сижу теперь ломаю голову что это такое и с чем его едят :( Заранее благодарен за помощь.
|