logrotate

Утилита logrotate для Найс.ОС предназначена для ротации, сжатия и удаления системных логов, обеспечивая эффективное управление лог-файлами и предотвращение переполнения дискового пространства.

Домашняя страница: https://github.com/logrotate/logrotate

Доступные версии
Версия Релиз Архитектура Лицензия Дата сборки Размер Версии ОС Подробности
3.22.0 1.niceos5 x86_64 GPL-2.0-or-later 25 апр. 2025 г. 158,308 МиБ Подробности
Описание

Описание пакета logrotate для Найс.ОС

Пакет logrotate является мощным и широко используемым инструментом в операционных системах на базе Linux, включая Найс.ОС. Он предназначен для автоматизации управления лог-файлами, которые генерируются различными службами и приложениями. Логи, если их не контролировать, могут быстро занимать значительное место на диске, что приводит к проблемам с производительностью системы. Утилита logrotate решает эту проблему, обеспечивая ротацию, сжатие и удаление устаревших логов по заданным правилам.

Основные функции logrotate

Программа logrotate предоставляет гибкий механизм для работы с лог-файлами, что делает её незаменимой для системных администраторов. Основные возможности включают:

  • Ротация логов: создание новых файлов логов через определённые промежутки времени (ежедневно, еженедельно, ежемесячно) или при достижении заданного размера файла.
  • Сжатие логов: автоматическое сжатие старых логов в форматы, такие как gzip, для экономии дискового пространства.
  • Удаление устаревших логов: настройка политики хранения, позволяющая удалять логи старше определённого возраста.
  • Выполнение скриптов: запуск пользовательских команд перед или после ротации (например, перезапуск службы).
  • Гибкая конфигурация: поддержка индивидуальных настроек для каждого лог-файла или группы файлов.

Установка logrotate в Найс.ОС

Для установки пакета logrotate в Найс.ОС используется пакетный менеджер dnf. Выполните следующую команду для установки:

dnf install logrotate

После установки утилита обычно готова к работе, так как базовая конфигурация уже присутствует в системе. Основной конфигурационный файл находится по пути /etc/logrotate.conf, а дополнительные настройки для конкретных служб хранятся в директории /etc/logrotate.d/.

Принципы работы logrotate

Утилита logrotate работает на основе конфигурационных файлов, где задаются правила для обработки логов. Программа может быть запущена вручную или автоматически через системный планировщик задач cron. В Найс.ОС по умолчанию cron-задание для logrotate настроено на ежедневный запуск.

Пример проверки текущего статуса cron-задания:

systemctl status crond

Если задание не настроено, его можно добавить вручную, отредактировав файл /etc/crontab или создав отдельный скрипт в /etc/cron.d/.

Конфигурация logrotate

Основной файл конфигурации /etc/logrotate.conf содержит глобальные настройки, такие как периодичность ротации, количество хранимых копий логов и параметры сжатия. Пример стандартной конфигурации:

cat /etc/logrotate.conf

Вывод может выглядеть следующим образом:

# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress

Для конкретных приложений, таких как Apache или NGINX, настройки ротации логов обычно находятся в /etc/logrotate.d/. Пример файла для Apache (/etc/logrotate.d/httpd):

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
        /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    endscript
}

В этом примере указано, что логи Apache будут ротироваться, только если они не пусты (notifempty), а после ротации служба httpd будет перезагружена для записи в новый лог-файл.

Ручной запуск logrotate

Для проверки работы утилиты или выполнения ротации вручную можно использовать следующую команду:

logrotate -f /etc/logrotate.conf

Флаг -f заставляет logrotate выполнить ротацию даже если условия (например, размер файла или время) ещё не наступили. Для отладки можно добавить флаг -d, который выводит информацию о процессе без фактического выполнения ротации:

logrotate -d /etc/logrotate.conf

Примеры использования logrotate

Рассмотрим несколько типичных сценариев настройки logrotate для управления логами в Найс.ОС.

1. Настройка ротации для пользовательского приложения

Предположим, у вас есть приложение, которое пишет логи в /var/log/myapp.log. Вы хотите ротировать этот файл ежедневно, хранить 7 копий и сжимать старые логи. Для этого создайте файл в /etc/logrotate.d/myapp со следующим содержимым:

/var/log/myapp.log {
    daily
    rotate 7
    compress
    missingok
    create 0644 myuser mygroup
}

Эта конфигурация указывает, что лог будет ротироваться ежедневно, сохраняться 7 старых копий, сжиматься, а новый файл будет создаваться с правами доступа 0644 и владельцем myuser:mygroup.

2. Ротация по размеру файла

Если лог-файл быстро растёт, можно настроить ротацию по размеру. Например, ротировать файл, если он превышает 100 МБ:

/var/log/bigapp.log {
    size 100M
    rotate 5
    compress
}

В этом случае лог будет ротироваться при достижении размера 100 МБ, независимо от времени.

Диагностика и устранение неполадок

Если logrotate не работает как ожидается, проверьте следующие аспекты:

  • Права доступа к лог-файлам и конфигурациям. Убедитесь, что утилита имеет доступ к файлам.
  • Ошибки в конфигурационных файлах. Используйте флаг -d для отладки.
  • Статус cron-задания. Убедитесь, что cron работает и запускает logrotate.

Пример проверки логов cron для диагностики:

grep CRON /var/log/cron

Преимущества использования logrotate

Использование logrotate в Найс.ОС позволяет:

  • Предотвращать переполнение дискового пространства за счёт своевременной ротации и сжатия логов.
  • Упрощать анализ логов, так как они разделены по времени или размеру.
  • Автоматизировать рутинные задачи управления логами, экономя время администратора.

Таким образом, logrotate является критически важным инструментом для поддержания порядка в системе логирования Найс.ОС. Гибкость настроек и интеграция с системными службами делают его идеальным решением для серверов и рабочих станций.