NGINX — это популярный веб-сервер, который широко используется для обработки HTTP-запросов и доставки веб-содержимого. При работе с NGINX очень важно контролировать и поддерживать логи сервера, чтобы проследить и анализировать производительность и проблемы сервера. Один из важных аспектов поддержки логов — это ротация логов, то есть периодическое перенос и архивирование старых файлов логов, чтобы избежать переполнения файловой системы.
В этом подробном руководстве мы рассмотрим различные способы настройки ротации логов NGINX, включая встроенные инструменты NGINX, сторонние утилиты и примеры конфигурации.
Встроенный механизм ротации логов NGINX предоставляет возможность автоматически создавать новые файлы логов с наименее используемыми именами файлов (например, access.log.1, access.log.2 и т. д.), когда текущие файлы логов становятся слишком большими.
Однако встроенный механизм ротации логов NGINX имеет несколько ограничений. Например, он не предоставляет возможность архивирования старых файлов логов и не является настраиваемым для индивидуальных потоков логов. Поэтому, для более сложных требований по ротации логов, рекомендуется использовать сторонние утилиты или настраивать ротацию логов через конфигурацию операционной системы.
Ротация логов nginx: общие принципы и преимущества
Основные принципы ротации логов в nginx включают следующие шаги:
- Определение периода ротации: указание интервала времени или размера файла, по достижении которого происходит перенос старого файла в архив и создание нового файла для записи.
- Настройка формата имени файлов: задание шаблона имени для архивных файлов и файлов с новыми записями.
- Определение действий при ротации: указание команд или скриптов, которые необходимо выполнить при переходе к новым файлам.
Преимущества ротации логов веб-сервера nginx включают:
- Оптимизация использования дискового пространства: благодаря ротации логов можно избежать переполнения диска большими файлами логов.
- Упрощение анализа логов: архивирование старых журналов позволяет сохранить их для последующего использования при анализе и отладке.
- Обеспечение непрерывной работы сервера: процесс ротации логов не приводит к простою сервера, так как запись новых данных идет в созданный новый файл, а не в архивный.
- Уменьшение риска потери данных: при ротации логов меньше вероятность потери данных, так как запись информации идет в новый файл, а не в тот, который перенесен в архив.
Настройка ротации логов 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