User Tools

Site Tools


logrep

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
logrep [2013/06/01 08:20]
kyxap создано
logrep [2013/12/15 16:53] (current)
kyxap
Line 1: Line 1:
-====== Анализ логов nginx / apache с помощью скриптов wtop и logrep ======+{{tag>​nginx apache logs wtop logrep}}====== Анализ логов nginx / apache с помощью скриптов wtop и logrep ======
  
 Фантастически полезная вещь для анализа логов вебсервера. \\ Фантастически полезная вещь для анализа логов вебсервера. \\
Line 5: Line 5:
 Очень быстро позволяют отловить медленные выполняющиеся запросы,​ найти использованную уязвимость,​ определить файлы с самым большим количеством трафика,​ отфильтровать ддос-ботов,​ выбрать самые популярные файлы для перемещения на SSD-кеш, собирать гео-статистику в live режиме,​ а так же железным аргументом дерзко попячить гордое щячло любителей денвера. \\ Очень быстро позволяют отловить медленные выполняющиеся запросы,​ найти использованную уязвимость,​ определить файлы с самым большим количеством трафика,​ отфильтровать ддос-ботов,​ выбрать самые популярные файлы для перемещения на SSD-кеш, собирать гео-статистику в live режиме,​ а так же железным аргументом дерзко попячить гордое щячло любителей денвера. \\
  
-Скрипты написаны на python, соответственно,​ работать должны везде.+Скрипты написаны на python, соответственно,​ работать должны везде. ​\\
  
-http://​code.google.com/​p/​wtop/​+Брать по адресу ​http://​code.google.com/​p/​wtop/​ 
 + 
 +Главная утилита - logrep.\\ 
 +wtop лично мне не пригодился. 
 + 
 +Руководство к logrep: http://​code.google.com/​p/​wtop/​wiki/​UsingLogrep \\ 
 +Примеры использования:​ http://​code.google.com/​p/​wtop/​wiki/​LogrepCookbook 
 + 
 +Самое замечательное в logrep - это возможность применять к выводимым значениям операторы. \\ 
 +Т.е. мы можем полностью сформировать вывод скрипта,​ состоящий из заданных нами параметров и с примененными к ним необходимыми операторами. 
 + 
 +Полный список выходных параметров,​ которыми мы можем оперировать,​ указан в руководстве под строкой AVAILABLE FIELDS. 
 + 
 +Ключ **-o** позволяет указать используемые в output значения,​ разделенные табуляцией. К каждому выводимому зачению можно применить оператор.\\ 
 + 
 +===== Список операторов ===== 
 +  count(*) ​     
 +  avg(FIELD) ​  mean average 
 +  min(FIELD) ​  ​lowest seen value 
 +  max(FIELD) ​  ​highest seen value 
 +  sum(FIELD) ​  ​summation of all values 
 +  var(FIELD) ​  ​population variance 
 +  dev(FIELD) ​  ​deviation (square root of variance) 
 + 
 +Ключ **-s** позволяет нам сортировать список,​ используя параметры вида **-s "​LIMIT:​FIELDS:​DIRECTION"​**,​ \\ 
 +где LIMIT - это общее количество выводимых строк, FIELDS - выводимые значения,​ а DIRECTION - направление сортировки:​ '​d'​ - descending (по умолчанию),​ '​a'​ - acending. \\ 
 + 
 +===== Формирование списка наиболее востребованных файлов для выноса на SSD-диск (для Nginx) ===== 
 + 
 +Т.к. изначально скрипт создавался для работы с //​CustomLog//​ типа //​combined//​ вебсервера [[http://​httpd.apache.org|Apache]],​ нам необходимо добавить в формат лога nginx переменную $request_time. 
 + 
 +**Формат лога для nginx** 
 +  log_format mp4 '​$remote_addr - $remote_user [$time_local] ' 
 +                '"​$request"​ $status $body_bytes_sent "​$http_referer"​ ' 
 +                '"​$http_user_agent"​ $request_time'​ ; 
 + 
 +**Сортировка по top10 URL:** 
 +  # logrep -o '​url,​count(*)'​ -s '​10:​2'​ /​home/​log/​httpd/​yziltz.com/​access_log 
 +   
 +  /​videos/​ztod.com/​546fg/​168nzrr/​1.mp4 ​           324 
 +  /​videos/​wtfpass/​104ghd/​560wyqe/​1.mp4 ​           259 
 +  /​videos/​evilangel/​1004hf/​457elux/​1.mp4 ​         205 
 +  /​videos/​ztod.com/​546fg/​84rqek/​1.mp4 ​            203 
 +  /​videos/​wtfpass/​104ghd/​505dtve/​1.mp4 ​           192 
 +  /​videos/​realitykings/​986fk/​314qiga/​1.mp4 ​       173 
 +  /​videos/​wtfpass/​104ghd/​18ifvr/​1.mp4 ​            153 
 +  /​videos/​brazzers/​758gf/​350ihij/​1.mp4 ​           143 
 +  /​videos/​wtfpass/​104ghd/​533jdzo/​1.mp4 ​           125 
 +  /​videos/​bangbros/​754hj/​100geoo/​1.mp4 ​           122 
 +   
 +где параметрами **-o** являются 
 +  url - URL файла 
 +  count(*) - количество всех уникальных вхождений URL, 
 +а параметрами **-s** 
 +  10 - это количество выводимых файлов,​ 
 +  2 - сортировка по полю #2. 
 +В нашем случае поле #2 - это **count(*)**. \\ 
 +Тип сортировки не указан и по умолчанию это '​d'​ - descending. 
 + 
 +**Сортировка по top10 URL с отображением дополнительных параметров:​** 
 + 
 +Добавим новые значения в список параметров:​ 
 +  # logrep -o '​url,​count(*),​avg(msec),​sum(bytes)'​ -s '​10:​2'​ /​home/​log/​httpd/​yziltz.com/​access_log 
 +   
 +  /​videos/​evilangel/​1004hf/​457elux/​1.mp4 ​         800     ​63330.12 ​       1265011232 
 +  /​videos/​wtfpass/​104ghd/​18ifvr/​1.mp4 ​            ​446 ​    ​55150.93 ​       199966883 
 +  /​videos/​naughty_america/​634fs/​6kryk/​1.mp4 ​      ​413 ​    ​66149.11 ​       422437989 
 +  /​videos/​naughty_america/​634fs/​83nbna/​1.mp4 ​     361     ​41608.23 ​       284347235 
 +  /​videos/​wtfpass/​104ghd/​606pfgb/​1.mp4 ​           352     ​35669.83 ​       129798205 
 +  /​videos/​wtfpass/​104ghd/​216pcko/​1.mp4 ​           330     ​50201.86 ​       563510318 
 +  /​videos/​ztod.com/​546fg/​168nzrr/​1.mp4 ​           325     ​48295.78 ​       238183106 
 +  /​videos/​wtfpass/​104ghd/​560wyqe/​1.mp4 ​           311     ​121607.30 ​      ​4415056002 
 +  /​videos/​wtfpass/​104ghd/​387jkmy/​1.mp4 ​           309     ​52073.58 ​       677026365 
 +  /​videos/​wtfpass/​104ghd/​505dtve/​1.mp4 ​           240     ​233122.70 ​      ​1272250219 
 +   
 +   
 +Дополнительными параметрами будут 
 + ​avg(msec) - среднее время отдачи файла и 
 + ​sum(bytes) - общий трафик,​ пришедшийся на этот файл. 
 + 
 +А теперь добавим фильтр **-f**, в котором выведем результаты только за последний час (3600 секунд). \\ 
 +Для этого мы применим unixtime как самый простой способ. \\ 
 + 
 +  # CUR_DATE=`date +"​%s"​`;​ HOUR_OFFSET=`echo "​$CUR_DATE - 3600" | bc`; logrep -f "​ts<​$HOUR_OFFSET"​ -o '​url,​count(*),​avg(msec),​sum(bytes)'​ -s '​10:​2'​ /​home/​log/​httpd/​yziltz.com/​access_log 
 +  /​videos/​ztod.com/​546fg/​168nzrr/​1.mp4 ​           325     ​48295.78 ​       238183106 
 +  /​videos/​wtfpass/​104ghd/​560wyqe/​1.mp4 ​           267     ​117390.16 ​      ​2869373722 
 +  /​videos/​evilangel/​1004hf/​457elux/​1.mp4 ​         225     ​152913.27 ​      ​954288822 
 +  /​videos/​ztod.com/​546fg/​84rqek/​1.mp4 ​            ​203 ​    ​55998.36 ​       188930211 
 +  /​videos/​wtfpass/​104ghd/​505dtve/​1.mp4 ​           196     ​216440.77 ​      ​1093232840 
 +  /​videos/​realitykings/​986fk/​314qiga/​1.mp4 ​       173     ​203926.49 ​      ​973211068 
 +  /​videos/​wtfpass/​104ghd/​18ifvr/​1.mp4 ​            ​161 ​    ​114550.71 ​      ​145899888 
 +  /​videos/​wtfpass/​104ghd/​533jdzo/​1.mp4 ​           147     ​182660.09 ​      ​1100896430 
 +  /​videos/​bangbros/​754hj/​100geoo/​1.mp4 ​           145     ​175528.83 ​      ​609455138 
 +  /​videos/​brazzers/​758gf/​350ihij/​1.mp4 ​           143     ​213783.88 ​      ​144107563
logrep.1370074831.txt.gz · Last modified: 2013/06/01 08:20 by kyxap