Главная > Программы > Apache Анализ файлов журнала Apache
В файлах журнала (логах) сервера записаны все запросы к серверу. Расположение и содержание файла
определяются директивой CustomLog. Конечно, сохранение информации в access log — это только начало работы с
логами. Следующий шаг — это анализ информации для формирования полезной статистики. awk ‘{print $1}’ access.log # ip адрес (%h)
awk ‘{print $2}’ access.log # RFC 1413 identity (%l)
awk ‘{print $3}’ access.log # userid (%u)
awk ‘{print $4,5}’ access.log # дата/время (%t)
awk ‘{print $9}’ access.log # код статуса (%>s)
awk ‘{print $10}’ access.log # размер (%b)
awk -F” ‘{print $2}’ access.log # запрашиваемая строка (%r)
awk -F” ‘{print $4}’ access.log # referer (источник)
awk -F” ‘{print $6}’ access.log # пользовательский агент
Теперь, когда вы понимаете основы разбора лог файлов и идентификации различных элементов, мы можем перейти
к более практичным примерам. Но перед тем как сделать это, мы должны объяснить, как вы можете модифицировать
формат ваших логов и быстро расширить возможности этих простых примеров. # awk -F" '{print $6}' access.log | sort | uniq -c | sort -frВыявляем проблемы с вашим сайтом Выявляем проблемы с вашим сайтом анализом различных ответов сервера и запросов, которые вызвали их: # awk '{print $9}' access.log | sort | uniq -c | sortВывод показывает как много типов запросов получил ваш сайт. «Нормальный» результат запроса — это код 200, который означает, что страница или файл были запрошены и доставлены. Но возможны и многие другие варианты. Наиболее распространённые ответы: 200 – OK 206 – Partial Content (частичное содержимое) 301 – Moved Permanently (перемещено навсегда) 302 – Found (найдено) 304 – Not Modified (не изменилось) 401 – Unauthorised (password required) (не авторизованы — требуется пароль) 403 – Forbidden (запрещено) 404 – Not Found (не найдено) Список кодов состояния HTTP. Что является причиной ошибок 404? Ошибка 404 говорит об отсутствующем ресурсе. Посмотрите на запрашиваемые URI, которые получили эту ошибку. # grep " 404 " access.log | cut -d ' ' -f 7 | sort | uniq -c | sort -nrЗапрос на ответ 404 # cat access.log | awk '($9 ~ /404/)' | awk '{ print $7 }' | sort | uniq -c | sort -rn | head -n 25Уникальные IP сделавшие запрос: # cat access.log | awk '{ print $1 }' | sort | uniq -c | sort -rn | head -n 25Уникальные IP сделавшие запрос — резолвим (определяем) страну: Нам нужно: # apt-get install geoip-bin geoip-database-extra # cat access.log | awk '{ print $1 }' | sort | uniq -c | sort -rn | head -n 25 | awk '{ printf("%5dt%-15st", $1, $2); system("geoiplookup " $2 " | cut -d \: -f2 ") }'Кто вставляет мои изображения на своём сайте (делает хотлинг)? Что-то, что по настоящему раздражает некоторых людей, это когда их полоса пропускания используется для вставки их изображений напрямую на чужой веб-сайт. # awk -F" '($2 ~ /.(jpg|gif)/ && $4 !~ /^http://www.codeby.net/blogs/){print $4}' access.log | sort | uniq -c | sortПустой пользовательский агент «Пустой» пользовательский агент обычно говорит о том, что запрос исходит от автоматического скрипта или от кого-то, кто действительно ценит свою конфиденциальность. Следующая команда выдаст список ip адресов для этих пользовательских агентов и уже на основе него вы сможете решить, что с ними делать дальше — блокировать или пусть заходят: # awk -F" '($6 ~ /^-?$/)' access.log | awk '{print $1}' | sort | uniqСлишком большая нагрузка из одного источника? Когда ваш сайт находится под тяжёлой нагрузкой, вам следует разобраться, нагрузка исходит от реальных пользователей или от чего-нибудь ещё:
# cat access.log | cut -d ' ' -f 1 | sort | uniq -c | sort -nr10 самых активных IP: # cat access.log | awk '{ print $1 ; }' | sort | uniq -c | sort -n -r | head -n 10Трафик в килобайтах по кодам статуса: # cat access.log | awk ' { total[$9] += $10 } END { for (x in total) { printf "Status code %3d : %9.2f Kbn", x, total[x]/1024 } } '10 самых популярных рефереров: # cat access.log | awk -F" ' { print $4 } ' | grep -v '-' | grep -v 'https://codeby.net' | sort | uniq -c | sort -rn | head -n 1010 самых популярных пользовательских агентов Насколько это просто? Пользовательские агенты — это шестая колонка вместо четвёртой и нам не нужно искать по регулярным выражениям, поэтому их не нужно объяснять: # cat access.log | awk -F" ' { print $6 } ' | sort | uniq -c | sort -rn | head -n 10Генерируем список, который показывает последние 10,000 хитов на сайт. # tail -10000 access.log| awk '{print $1}' | sort | uniq -c |sort -nЗапросы за день: # awk '{print $4}' access.log | cut -d: -f1 | uniq -cЗапросы за час: # grep "29/Jul" access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":00"}' | sort -n | uniq -cЗапросы за минуту: # grep "29/Jul/2015:06" access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":"$3}' | sort -nk1 -nk2 | uniq -c | awk '{ if ($1 > 10) print $0}'Всего уникальных посетителей: # cat access.log | awk '{print $1}' | sort | uniq -c | wc -lУникальные посетители сегодня: # cat access.log | grep `date '+%e/%b/%G'` | awk '{print $1}' | sort | uniq -c | wc -lУникальные посетители в этом месяце: # cat access.* | grep `date '+%b/%G'` | awk '{print $1}' | sort | uniq -c | wc -lУникальные посетители на произвольную дату: # cat access.* | grep 28/Jul/2015 | awk '{print $1}' | sort | uniq -c | wc -lУникальные посетители за месяц: # cat access.* | grep Jun/2015 | awk '{print $1}' | sort | uniq -c | wc -lОтсортированная статистика по “количеству посетителей/запросов” “IP адреса посетителей”: # cat access.log | awk '{print "requests from " $1}' | sort | uniq -c | sortНаиболее популярные URL: # cat access.log | awk '{ print $7 }' | sort | uniq -c | sort -rn | head -n 25Запросы в реальном времени: # tailf access.log | awk '{ printf("%-15st%st%st%sn", $1, $6, $9, $7) }'Резолвим IP адреса в реальном времени: # $ tailf access.log | awk '{ "geoiplookup " $1 " | cut -d \: -f2 " | getline geo printf("%-15st%st%st%-20st%sn", $1, $6, $9, geo, $7); }'Уникальные IP адреса: # cat access.log | awk '{print $1}' | sort | uniqУникальные IP адреса с отметкой даты-времени: # cat access.log | awk '{print $1 " " $4}' | sort | uniqУникальные IP адреса и браузеры: # cat access.log | awk '{print $1 " " $12 " " $19}' | sort | uniqУникальные IP адреса и ОС: # cat access.log | awk '{print $1 " " $13}' | sort | uniqУникальные IP адреса, дата-время и метод запроса: # cat access.log | awk '{print $1 " " $4 " " $6}' | sort | uniqУникальные IP адреса, дата-время и запрошенный URL: # cat access.log | awk '{print $1 " " $4 " " $7}' | sort | uniqМатериал взят с сайта: Главная > Программы > Apache |