Анализ логов Nginx
Nginx - один из наиболее известных веб-серверов. Давайте разберемся о чем могут рассказать логи Nginx и как их удобнее анализировать.
При возникновении каких либо ошибок или же нежелательной активности на сайте первым делом стоит оценить масштаб трагедии:
- как часто сервер отвечает 500-ым кодом?
- как часто запрашивается отдельный URL?
- с какого IP адреса идет наибольшая активность?
- и так далее..
В этом всем поможет нам
. В редких случаях - nginx-access.log
.nginx-error.log
Анализ nginx-access.log
Вывести строки содержащие ответы сервера с 50x кодами. На самом деле можно указывать различные варианты поискового текста:
- grep "HTTP\/1.1\"\ 50" logs/nginx-access.log
Тоже самое, что и выше только выводит количество найденых строк:
- grep "HTTP\/1.1\"\ 50" logs/nginx-access.log | wc -l
Вывести строки содержащие ответы сервера с 50x кодами из архивных файлов за май месяц:
- zgrep "HTTP\/1.1\"\ 50" logs/nginx-access.log-202005*
Найти текст во всех файлах с именем
рекурсивно начиная с текущей папки:nginx-access.log
- find . -name "nginx-access.log" -exec grep "fields" {} \;
Вывести топ 20 самых "активных" IP адресов:
- cat logs/nginx-access.log | awk -F\" '{print $8}' | awk '{print $1}' | sort -n | uniq -c | sort -nr | head -20
Вывести топ 20 самых часто запрашиваемых URL адресов:
- cat logs/nginx-access.log | awk '{print $7}' | sort -n | uniq -c | sort -nr | head -20
Вывести топ 20 самых активных User-Agent'ов:
- cat logs/nginx-access.log | awk -F\" '{print $6}' | sort -n | uniq -c | sort -nr | head -20
Использование GoAccess
Open-source анализатор логов, который может быть доступен как через командную строку, так и через браузер (об этом недавно узнал). Подробная информация размещена на официальном сайте - goaccess.io. У нас на работе она запускается следующим образом:
- goaccess -p /etc/goaccess.conf -f logs/nginx-access.log
, где содержимое
файла:/etc/goaccess.conf
- time-format %H:%M:%S
- date-format %d/%b/%Y
- log-format %^ - %^ [%d:%t %^] "%r" %s %b "%R" "%u" %T "%h,%^"
В общем, GoAccess освобождает вас от выполнения этих длинных и непонятных команд для получения самых активных IP адресов, самых популярных URL и так далее. Запуск в одну команду и порядка 15 секций данных для анализа.
Анализ nginx-error.log
На рабочих серверах редко приходилось обращаться к этому файлу. Обычно только за информацией о нехватке PHP воркеров
:128 worker_connections are not enough
- grep "worker_connections\ are\ not \enough" logs/nginx-error.log
Добавить комментарий