linux-labs

← Практика

Настроить ротацию логов

Конфигурация службы · Среднее · 20 мин · 150 баллов

Настроить ротацию логов

Приложение пишет в /var/log/myapp/app.log и не ограничивает его рост — файл уже большой и со временем забьёт диск. Нужно настроить штатную ротацию через logrotate.

Задача

Настрой ротацию так, чтобы:

  1. лог /var/log/myapp/app.log ротировался по расписанию (ежедневно), хранил несколько архивов и сжимал старые;
  2. правило лежало отдельным файлом в /etc/logrotate.d/ и было синтаксически верным;
  3. пробный прогон ротации проходил без ошибок и реально создавал архив.

Подсказки по подходу

  • Правила logrotate кладут в /etc/logrotate.d/<имя>; типичные опции: daily, rotate 7, compress, missingok, notifempty, copytruncate (или create).
  • Если лог держит открытым процесс, не умеющий переоткрывать файл — нужен copytruncate, иначе ротация «обнулит» не тот дескриптор.
  • Проверка и пробный прогон: logrotate -d <конфиг> (debug, ничего не меняет) и logrotate -f <конфиг> (форсированный прогон).
  • Проверяй результат по кнопке «Проверить».

Всё нужное уже установлено. Интернет на машине отсутствует — и не понадобится.

Подсказки

Подсказка 1

Создай файл /etc/logrotate.d/myapp. Внутри опиши путь к логу и блок опций в фигурных скобках. За образец возьми любой существующий файл в /etc/logrotate.d/.

Подсказка 2

Минимальный рабочий набор:

/var/log/myapp/app.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    copytruncate
}

copytruncate нужен, если приложение держит файл открытым и не переоткрывает его.

Подсказка 3

Проверь конфиг «вхолостую»: sudo logrotate -d /etc/logrotate.d/myapp (ошибок быть не должно), затем форсируй: sudo logrotate -f /etc/logrotate.d/myapp и убедись, что появился архив (ls -l /var/log/myapp/).

Поднимет вашу личную эфемерную Linux-ВМ для задания — обычно пара секунд. После работы её можно остановить.