Настройка ротации логов веб-сервера Nginx

NGINX — это популярный веб-сервер, который широко используется для обработки HTTP-запросов и доставки веб-содержимого. При работе с NGINX очень важно контролировать и поддерживать логи сервера, чтобы проследить и анализировать производительность и проблемы сервера. Один из важных аспектов поддержки логов — это ротация логов, то есть периодическое перенос и архивирование старых файлов логов, чтобы избежать переполнения файловой системы.

В этом подробном руководстве мы рассмотрим различные способы настройки ротации логов NGINX, включая встроенные инструменты NGINX, сторонние утилиты и примеры конфигурации.

Встроенный механизм ротации логов NGINX предоставляет возможность автоматически создавать новые файлы логов с наименее используемыми именами файлов (например, access.log.1, access.log.2 и т. д.), когда текущие файлы логов становятся слишком большими.

Однако встроенный механизм ротации логов NGINX имеет несколько ограничений. Например, он не предоставляет возможность архивирования старых файлов логов и не является настраиваемым для индивидуальных потоков логов. Поэтому, для более сложных требований по ротации логов, рекомендуется использовать сторонние утилиты или настраивать ротацию логов через конфигурацию операционной системы.

Ротация логов nginx: общие принципы и преимущества

Основные принципы ротации логов в nginx включают следующие шаги:

  • Определение периода ротации: указание интервала времени или размера файла, по достижении которого происходит перенос старого файла в архив и создание нового файла для записи.
  • Настройка формата имени файлов: задание шаблона имени для архивных файлов и файлов с новыми записями.
  • Определение действий при ротации: указание команд или скриптов, которые необходимо выполнить при переходе к новым файлам.

Преимущества ротации логов веб-сервера nginx включают:

  1. Оптимизация использования дискового пространства: благодаря ротации логов можно избежать переполнения диска большими файлами логов.
  2. Упрощение анализа логов: архивирование старых журналов позволяет сохранить их для последующего использования при анализе и отладке.
  3. Обеспечение непрерывной работы сервера: процесс ротации логов не приводит к простою сервера, так как запись новых данных идет в созданный новый файл, а не в архивный.
  4. Уменьшение риска потери данных: при ротации логов меньше вероятность потери данных, так как запись информации идет в новый файл, а не в тот, который перенесен в архив.

Настройка ротации логов nginx: пошаговая инструкция

Шаг 1: Откройте конфигурационный файл nginx. Обычно он располагается по пути /etc/nginx/nginx.conf.

Шаг 2: Внутри файла найдите секцию http и добавьте следующие строки кода:


http {
...
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
...
}

Шаг 3: Найдите или создайте директорию, в которой будут храниться логи. Обычно она находится по пути /var/log/nginx/.

Шаг 4: Создайте файл для ротации логов. Для этого выполните команду:


sudo nano /etc/logrotate.d/nginx

Шаг 5: Внутри файла добавьте следующий код:

 
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 nginx adm
sharedscripts
postrotate
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null

Оцените статью