Logrotate отлично конфигурируемая утилита: можно задать количество хранимых сжатых логов (старые логи архивируются в tar и gzip); максимальный размер файла лога; количество хранимых сжатых фрагментов (очень старые записи будут удаляться); так же можно настроить периодичность запуска ротирования и даже отправку сообщений по почте, но главная функция - следить за размерами логов.
Так же примечательно, что можно настраивать разные параметры ротирования для конкретных файлов логов.
Для опытных пользователей доступно написание скриптов prerotate и postrotate.
Установка
Во многих дистрибутивах logrotate доступен в репозитории либо уже установлен и включен. Так же можете скомпилировать пакет из исходного кода.
Настройка
Все настройки хранятся в файле под названием logrotate.conf.
У меня logrotate уже установлен в системе и файл конфигурации находится в /etc/logrotate.conf
Давайте взглянем на него:
sudo kate /etc/logrotate.conf
Содержимое файла:
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0660 root utmp
rotate 1
}
# system-specific logs may be configured here
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0660 root utmp
rotate 1
}
# system-specific logs may be configured here
Как видно из конфига, logrotate будет хранить 4 старых архива логов (rotate 4), ротация будет производиться раз в неделю в независимости от размера (weekly), будут создаваться новые пустые файлы логов после архивирования старых (create), но сжатие старых архивов отключено (#compress - строка закомментирована), а далее указаны отдельные логи и отдельные настройки для них (очень полезная особенность logrotate!).
Редактируем лог для улучшения системы ротации
Теперь, разобравшись как работает logrotate в нашем случае, мы можем улучшить эту работу.
Для этого в нашем logrotate.conf укажем максимальный размер несжатого файла в 10Мб: size=10M (добавим строку) ; снизим количество хранимых старых архивов логов до двух: rotate 4 (изменим строку) ; и включим сжатие compress (раскомментируем строку).
Теперь миссия logrotate такова: производить сжатие логов при превышении размера 10Мб или по прошествии недели, хранить максимум 2 СЖАТЫХ старых копии.
*После внесения изменений рекомендуется выполнить в терминале:
sudo logrotate -f путь_до_logrotate.conf
для применения изменений.
Запуск logrotate
Если вы только установили logrotate, то создайте и наполните конфигурационный файл logrotate.conf
Пример простого конфига:
size=10M
weekly
rotate 2
compress
include /etc/logrotate.d
weekly
rotate 2
compress
include /etc/logrotate.d
И запустите logrotate:
sudo logrotate -f путь_до_logrotate.conf
Опции команды logrotate
-d, --debug -ничего не делать, просто выполнить тест или отладку (совместно с -v).
-f, --force -начать работу, даже если время еще не пришло.
-m, --mail=command -указать команду для отправки электронной почты.
-s, --state=statefile -использование альтернативного файла состояния.
-v, --verbose -выводить отладочную информацию.
В оригинале:
subsanek@subsanek-laptop:~$ logrotate --help
Использование: logrotate [OPTION...]
-d, --debug Don't do anything, just test (implies -v)
-f, --force Force file rotation
-m, --mail=command Command to send mail (instead of `/usr/bin/mail')
-s, --state=statefile Path of state file
-v, --verbose Display messages during rotation
Help options:
-?, --help Show this help message
--usage Display brief usage message
Использование: logrotate [OPTION...]
-d, --debug Don't do anything, just test (implies -v)
-f, --force Force file rotation
-m, --mail=command Command to send mail (instead of `/usr/bin/mail')
-s, --state=statefile Path of state file
-v, --verbose Display messages during rotation
Help options:
-?, --help Show this help message
--usage Display brief usage message
Удачной ротации! =)
Смотреть также:
Внезапно стало мало свободного места на диске? Возможно проблема в логах.
Большое спасибо, очень помогла статья. Заказал VDS сервер, а через неделю место кончилось. Хостер предлагал поставить платную панель, чтобы это можно было конторолировать. Но я знал что есть способ проще и не ошибся :-) Еще раз спасибо