Большие объёмы логов могут быстро заполнять дисковое пространство, затрудняя работу системы. Для автоматического управления логами в Linux используется инструмент logrotate. Он позволяет архивировать, удалять или сжимать старые файлы логов, оставляя только актуальные записи.
logrotate работает на основе конфигураций, определяя:
Частоту ротации (ежедневно, еженедельно, ежемесячно).
Количество архивов, которые нужно сохранять.
Сжатие логов для экономии пространства.
Выполнение пользовательских скриптов после ротации.
Настройка logrotate
1. Глобальный файл конфигурации:
Находится по пути /etc/logrotate.conf. Он задаёт общие параметры ротации.
Пример содержимого:
weekly # Ротация раз в неделю
rotate 4 # Хранить 4 архивных файла
create # Создавать новый файл после ротации
compress # Сжимать логи с помощью gzip
include /etc/logrotate.d/ # Подключение дополнительных конфигураций
2. Пользовательские настройки для приложений:
Каждое приложение может иметь свой файл конфигурации в /etc/logrotate.d/.
Пример для файла /etc/logrotate.d/nginx:
/var/log/nginx/*.log {
daily # Ротация логов каждый день
missingok # Пропускать файлы, если их нет
rotate 7 # Хранить 7 архивов
compress # Сжимать архивы
delaycompress # Откладывать сжатие на следующий цикл
notifempty # Пропускать пустые файлы
create 0640 www-data adm # Создавать новый лог с указанными правами
postrotate # Выполнять команду после ротации
systemctl reload nginx > /dev/null
endscript
}
Пример настройки ротации пользовательских логов
Допустим, у нас есть приложение, которое пишет логи в /var/log/myapp/. Мы хотим:
Ротировать логи ежедневно.
Сохранять последние 5 архивов.
Сжимать архивы.
Перезапускать приложение после ротации.
Для этого создайте файл /etc/logrotate.d/myapp:
/var/log/myapp/*.log {
daily
rotate 5
compress
missingok
notifempty
create 0640 root root
postrotate
systemctl restart myapp
endscript
}
Проверка работы logrotate
Запустите тест ротации:
logrotate -d /etc/logrotate.conf
Опция -d выводит информацию о предстоящих действиях без выполнения.
Принудительно выполните ротацию:
logrotate -f /etc/logrotate.conf
Проверьте результат: После выполнения команда должна создать сжатые файлы логов, например:
/var/log/myapp/myapp.log.1.gz
/var/log/myapp/myapp.log.2.gz
Советы по безопасности
Убедитесь, что права доступа к логам соответствуют требованиям.
Используйте create в конфигурации для автоматического создания новых файлов с нужными правами.
Регулярно проверяйте дисковое пространство, чтобы старые логи не заполняли диск.
BashTex 📱 #linux #utils