Настройка ротации логов с Logrotate
Конфигурация ротации логов с Logrotate: Настройка ротации и сжатие логов
Logrotate — это удобный инструмент для управления лог-файлами в Unix-подобных операционных системах. Он помогает автоматизировать процесс ротации, архивирования, удаления и сжатия логов, что особенно важно для поддержания системы в чистоте и предотвращения переполнения дискового пространства.
Основные возможности Logrotate:
- Ротация логов: Переименование текущего лог-файла и создание нового файла
- Сжатие логов: Автоматическое сжатие старых лог-файлов для экономии места на диске
- Удаление старых логов: Автоматическое удаление самого старого лог-файла по достижении заданного количества архивов
- Настройка интервала: Выбор интервала ротации (день, неделя, месяц и т.д.)
- Выполнение команд: Возможность выполнения скриптов и команд до и после ротации
Основные компоненты конфигурационного файла logrotate:
Директивы глобальных настроек:
В начале конфигурационного файла (`/etc/logrotate.conf`) можно задать глобальные настройки, которые будут применяться ко всем лог-файлам, например:
# Число архивов для хранения
rotate 5
# Сжатие архивов
compress
# Создание нового пустого файла после ротации
create
Индивидуальные настройки для лог-файлов:
Конкретные файлы и их настройки указываются после глобальных директив. Конфигурация для каждого файла или группы файлов обособляется в фигурные скобки `{}`:
/var/log/syslog {
daily # Ротация логов ежедневно
missingok # Пропускать ротацию, если файл отсутствует
rotate 7 # Хранить 7 архивных копий
compress # Сжимать архивы
delaycompress # Сжимать архив со следующей ротации
notifempty # Не ротировать пустые файлы
create 0640 root adm # Создавать файл с указанными правами и владельцем
postrotate # Команды для выполнения после ротации
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
Пример настроек для Apache log-файлов:
/var/log/apache2/*.log {
weekly # Еженедельная ротация
missingok # Пропускать ротацию, если файл отсутствует
rotate 12 # Хранить 12 архивных копий
compress # Сжимать архивы
delaycompress # Сжимать архив со следующей ротации
notifempty # Не ротировать пустые файлы
create 0640 www-data www-data # Создавать файл с указанными правами и владельцем
sharedscripts # Использовать общие скрипты ротации
postrotate # Команды для выполнения после ротации
if [ -f /var/run/apache2.pid ]; then
/etc/init.d/apache2 reload > /dev/null
fi
endscript
}
Команды и директивы:
- daily, weekly, monthly, yearly: Интервалы ротации
- rotate <число>: Число сохраняемых архивов
- compress, nocompress: Включение и выключение сжатия
- create <права> <владелец> <группа>: Создание нового файла с заданными правами и владельцем
- missingok: Пропускать ротацию, если файл отсутствует
- notifempty: Не ротировать пустые файлы
- delaycompress: Отложить сжатие до следующей ротации
- postrotate/endscript: Команды для выполнения после ротации
Порядок действий:
Редактирование конфигурационного файла:
- Открываем конфигурационный файл (`/etc/logrotate.conf` или отдельный файл в `/etc/logrotate.d/`).
Добавление новых правил:
- Добавляем секции с директивами для нужных лог-файлов с индивидуальными настройками.
Проверка конфигурации:
- Проверяем синтаксис конфигурационного файла командой `logrotate -d /etc/logrotate.conf`.
Запуск logrotate:
- Запускаем ротацию вручную для проверки работы: `logrotate -f /etc/logrotate.conf`.
Настройка ротации логов с помощью Logrotate помогает избежать проблем с заполнением дискового пространства и упрощает управление лог-файлами. Правильная конфигурация и регулярное тестирование работы logrotate гарантируют стабильную работу системного и прикладного софта.