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

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

  .d8888b.   888b    888   d888    888    888 
d88P Y88b 8888b 888 d8888 888 888
888 888 88888b 888 888 888 888
Y88b. d888 888Y88b 888 888 8888888888
"Y888P888 888 Y88b888 888 888 888
888 888 Y88888 888 888 888
Y88b d88P 888 Y8888 888 888 888
"Y8888P" 888 Y888 8888888 888 888


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