Настройка ротации лог-файлов Nginx в Ngate
Опубликовано Виктор Боровик on 2023-02-01 16:17

Утилита Logrotate предназначена для автоматизации обработки журналов. Она может выполнять с ними необходимые действия в зависимости от определенных условий и правил соответствия.

Например, можно сжимать журналы в архив или отправлять на другой сервер когда они достигают определенного размера, возраста, или других параметров.

Проверку условий можно настроить ежедневно, еженедельно или ежемесячно. Это позволяет создать схему ротации логов, удобную именно для вас и вашей конфигурации NGate. 

 

Для модификации  конфигурационного файла Logrotate в NGate необходимо выполнить  команду:

nano /etc/logrotate.d/ng-nginx

Конфигурационный файл "по умолчанию" выглядит так:

# Какие файлы обрабатывает logrotate
/var/log/ngate/nginx/global-error.log

/var/log/ngate/nginx/http-error.log

/var/log/ngate/nginx/stream-error.log

/var/log/ngate/nginx/error.log

/var/log/ngate/nginx/http-access.log

/var/log/ngate/nginx/stream-access.log

/var/log/ngate/nginx/access.log

{

        Daily – # ежедневно, возможные значения:

  • hourly - каждый час;
  • daily - каждый день;
  • weekly - каждую неделю;
  • monthly - каждый месяц;
  • yearly - каждый год.

 

        missingok # не выдавать ошибки, если лог файла не существует;

        rotate 14  # указывает сколько старых логов нужно хранить, в параметрах передается количество хранимых файлов;

        compress # указывает, что лог необходимо сжимать;

        delaycompress #не сжимать последний и предпоследний журнал;

        notifempty #не обрабатывать пустые файлы

 

        create 640 nginx adm # создать новые файлы журналов с установленными разрешениями/владельцем/группой

        sharedscripts 

        postrotate #скрипты для запуска после завершения ротации

                [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` #завершить процесс nginx

        endscript

}

 

/var/log/ngate/nginx/http-access.gz

/var/log/ngate/nginx/stream-access.gz

/var/log/ngate/nginx/access.gz {

        Daily 

        missingok

        rotate 14 

        nodelaycompress

        notifempty

        create 640 nginx adm

        sharedscripts

        postrotate

                [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`

        endscript

}

 

/var/log/ngate/nginx/global-debug.log

/var/log/ngate/nginx/stream-debug.log

/var/log/ngate/nginx/http-debug.log

/var/log/ngate/nginx/debug.log {

        Hourly 

        missingok

        rotate 0 

        nodelaycompress

        maxsize 1G  #Файлы журналов ротируются, когда они превышают размер в байтах, даже перед дополнительно указанным интервалом времени ( ежедневно , еженедельно , ежемесячно или ежегодно ). 

Параметр связанного размера аналогичен, за исключением того, что он взаимоисключающий с параметрами временного интервала и приводит к ротации файлов журналов без учета времени последней ротации. 

При использовании maxsize учитываются как размер, так и временная метка файла журнала. 1G = 1 gigabyte; 1M = 1 megabyte.

######### отступление ######

также существуют параметры size & minsize.

size -Файлы журналов ротируются только в том случае, если они становятся больше размера байтов. Если за size следует k , предполагается, что размер указан в килобайтах. 

  •  M - размер указывается в мегабайтах;
  • G - размер указывается в гигабайтах. 

Таким образом , размер 100 , размер 100k , размер 100M и размер 100G действительны.

minsize - Файлы журналов ротируются, когда они превышают размер в байтах, но не ранее дополнительно указанного временного интервала ( ежедневно , еженедельно , ежемесячно или ежегодно ). 

Параметр связанного размера аналогичен, за исключением того, что он взаимоисключающий с параметрами временного интервала и приводит к ротации файлов журналов без учета времени последней ротации. 

При использовании minsize учитываются как размер, так и временная метка файла журнала.

#####################

        nocompress  #старые файлы не сжимаются

        notifempty

        create 640 nginx adm

        sharedscripts

        postrotate

                [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`

        endscript

}

Редактируем конфигурационный  файл так как необходимо. Сохраняем.

Проверяем корректность настроек командой:

logrotate -d /etc/logrotate.d/ng-nginx

 Повторяем конфигурацию на всех узлах кластера NGate (включая ЦУС), в случае если у вас кластерная конфигурация.