PM2 | Как ограничить максимальный размер логов для NodeJS приложения?

PM2 | Как ограничить максимальный размер логов для NodeJS приложения?

Предполагаю, что у вас уже установлен сам менеджер процессов PM2 в серверный NodeJS при помощи пакетного менеджера NPM. Сайт пакета PM2https://pm2.keymetrics.io

npm install pm2 -g

Вторым шагом нужно установить в PM2 дополнительный инструмент. Внимание! Именно в PM2.

pm2 install pm2-logrotate

Модуль «pm2-logrotate» предназначен для автоматической ротации журналов процессов, управляемых PM2.

Успешная установка модуля pm2-logrotate для менеджера процессов NodeJS приложений
Успешная установка модуля pm2-logrotate для менеджера процессов NodeJS приложений

 

Сразу после установки модуля будет выведена полезная информация о настройках ведения журналов. И уже будет работать ограничение на размер файла журнала в 10 мегабайт. Всего таких «исторических» файлов журналов на один процесс будет не более 30 (значение по умолчанию).

Всего существует 8 параметров для управления работой с файлами логов. Актуально на конец 2022 года.

 

Параметр max_size

Значение по умолчанию:

10M

Когда размер файла становится выше этого значения, он будет вращаться (возможно, рабочий проверит файл после того, как он фактически преодолеет ограничение).

Вы можете указать единицу измерения в конце: 10G, 10M, 10K

 

Параметр retain

Значение по умолчанию:

30

Это 30 файловых журналов.

Это число представляет собой количество ротируемых журналов, которые хранятся одновременно, это означает, что если у вас есть сохранение = 7, у вас будет не более 7 ротированных журналов и ваш текущий.

 

Параметр compress

Значение по умолчанию:

false

Включить сжатие с помощью gzip для всех ротируемых журналов.

 

Параметр dateFormat

Значение по умолчанию:

YYYY-MM-DD_HH-mm-ss

Используемый формат данных имя файл журнала

 

Параметр rotateModule

Значение по умолчанию:

true

Поверните журнал модуля pm2, как и другие приложения

 

Параметр workerInterval

Значение по умолчанию:

30

Раз в 30 секунд.

Вы можете контролировать, с каким интервалом рабочий процесс проверяет размер журналов (минимум 1 секунда)

 

Параметр rotateInterval

Значение по умолчанию:

0 0 * * *

каждый день в полночь.

Этот cron используется для принудительного поворота при выполнении. Мы используем node-schedule для планирования cron, поэтому все допустимые cron для node-schedule действительны cron для этой опции. Стиль Крона:

 

Параметр TZ

По умолчанию системное время.

Это стандартный часовой пояс базы данных tz, используемый для смещения сохранённого файла журнала. Например, значение «Etc/GMT+1» с почасовым журналом сохранит файл в «14» часов по Гринвичу с «13» часами (GMT+1) в имени журнала.

Смысл значений параметра rotateInterval в модуле pm2-logrotate
Смысл значений параметра rotateInterval в модуле pm2-logrotate

 

Как просмотреть текущую конфигурацию значений модуля pm2-logrotate?

После установки модуля pm2-logrotate вы должны ввести:

pm2 conf

 

Как установить свои значения для модуля pm2-logrotate?

После установки модуля pm2-logrotate вы должны ввести:

pm2 set pm2-logrotate:<param> <value>

например:

pm2 set pm2-logrotate:max_size 1K (1 КБ)
pm2 set pm2-logrotate:compress true (сжимать журналы при повороте)
pm2 set pm2-logrotate:rotateInterval '*/1 * * * *' (принудительный поворот каждую минуту)

 

Информационные ссылки

Модуль — https://github.com/keymetrics/pm2-logrotate#configure