Анализ логов 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

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

                  d8888            d8b 
d88888 Y8P
d88P888
888 888 d88P 888 88888b. 888
888 888 d88P 888 888 "88b 888
888 888 d88P 888 888 888 888
Y88b 888 d8888888888 888 888 888
"Y88888 d88P 888 888 888 888


Зарегистрируйтесь для добавления материалов без проверки.