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

Вывести топ 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

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

 8888888888P  888b    888            8888888 
d88P 8888b 888 888
d88P 88888b 888 888
d88P 888Y88b 888 .d8888b 888
d88P 888 Y88b888 88K 888
d88P 888 Y88888 "Y8888b. 888
d88P 888 Y8888 X88 888
d8888888888 888 Y888 88888P' 8888888


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