This shows you the differences between two versions of the page.
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 |