Анализ логов Nginx

Nginx - один из наиболее известных веб-серверов. Давайте разберемся о чем могут рассказать логи Nginx и как их удобнее анализировать.

При возникновении каких либо ошибок или же нежелательной активности на сайте первым делом стоит оценить масштаб трагедии:

  • как часто сервер отвечает 500-ым кодом?
  • как часто запрашивается отдельный URL?
  • с какого IP адреса идет наибольшая активность?
  • и так далее..

В этом всем поможет нам nginx-access.log. В редких случаях - nginx-error.log.

Анализ nginx-access.log

Вывести строки содержащие ответы сервера с 50x кодами. На самом деле можно указывать различные варианты поискового текста:

  1. grep "HTTP\/1.1\"\ 50" logs/nginx-access.log

Тоже самое, что и выше только выводит количество найденых строк:

  1. grep "HTTP\/1.1\"\ 50" logs/nginx-access.log | wc -l

Вывести строки содержащие ответы сервера с 50x кодами из архивных файлов за май месяц:

  1. zgrep "HTTP\/1.1\"\ 50" logs/nginx-access.log-202005*

Найти текст во всех файлах с именем nginx-access.log рекурсивно начиная с текущей папки:

  1. find . -name "nginx-access.log" -exec grep "fields" {} \;

Вывести топ 20 самых "активных" IP адресов:

  1. cat logs/nginx-access.log | awk -F\" '{print $8}' | awk '{print $1}' | sort -n | uniq -c | sort -nr | head -20

Вывести топ 20 самых часто запрашиваемых URL адресов:

  1. cat logs/nginx-access.log | awk '{print $7}' | sort -n | uniq -c | sort -nr | head -20

Вывести топ 20 самых активных User-Agent'ов:

  1. cat logs/nginx-access.log | awk -F\" '{print $6}' | sort -n | uniq -c | sort -nr | head -20

Использование GoAccess

Open-source анализатор логов, который может быть доступен как через командную строку, так и через браузер (об этом недавно узнал). Подробная информация размещена на официальном сайте - goaccess.io. У нас на работе она запускается следующим образом:

  1. goaccess -p /etc/goaccess.conf -f logs/nginx-access.log

, где содержимое /etc/goaccess.conf файла:

  1. time-format %H:%M:%S
  2. date-format %d/%b/%Y
  3. 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:

  1. grep "worker_connections\ are\ not \enough" logs/nginx-error.log

Добавить комментарий

           8888888888   d888             
d88P d8888
d88P 888
.d88888 d88P 888 .d88888
d88" 888 88888888 888 d88" 888
888 888 d88P 888 888 888
Y88b 888 d88P 888 Y88b 888
"Y88888 d88P 8888888 "Y88888
888 888
888 888
888 888
Зарегистрируйтесь для добавления материалов без проверки.