Ротация логов с помощью logrotate


Дата: 03 июня 2010





Утилита logrotate служит для контролирования системы логирования (записи отчетов о работе и ошибках программ).
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

Как видно из конфига, 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

И запустите 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



Удачной ротации! =)

Смотреть также:
Внезапно стало мало свободного места на диске? Возможно проблема в логах.

Комментарии:
Автор: Алексей,   дата: 12 марта 2011   21:54:32
Большое спасибо, очень помогла статья. Заказал VDS сервер, а через неделю место кончилось. Хостер предлагал поставить платную панель, чтобы это можно было конторолировать. Но я знал что есть способ проще и не ошибся :-) Еще раз спасибо
Автор: aaa,   дата: 18 июля 2012   16:20:26
Как ротацию чаще чем ежедневно сделать соответственно параметрам size/minsize?
Автор: aaa,   дата: 18 июля 2012   16:21:13
cron
* * * * * logrotate -f /etc/logrotate.conf

не предлогать
Автор: Subsanek,   дата: 18 июля 2012   16:51:07
aaa, укажите в size необходимый порог, после которого начинать ротацию. В таком случае, она будет начата при достижении этого объёма.
Автор: Вася,   дата: 02 августа 2012   12:32:27
А где же необходимый параметр postrotate?
Автор: Руслан Бес,   дата: 04 октября 2013   02:38:03
А точно надо писать
size=10M
а не
size 10M
?
Автор: Subsanek,   дата: 04 октября 2013   10:47:27
Руслан Бес, во всех руководствах описано "size=". Так что правильно с "=".
Автор: OlegBon,   дата: 23 апреля 2014   18:13:17
А как убрать из ротации логов (logrotate)? Просто из /etc/logrotate.d/ убрать конфиг, который уже не нужен? Надо ли передёрнуть сам logrotate?
Автор: Subsanek,   дата: 27 марта 2016   12:02:35
OlegBon, возможно Вам поможет эта статья:
http://linuxnow.ru/view.php?id=49




 
Добавить комментарий:
Имя:*
e-mail:
Комментарий:*
Введите число 66*


Архив статей:
Март 2017
Апрель 2016
Март 2016
Октябрь 2013
Сентябрь 2013
Май 2013
Март 2013
Ноябрь 2012
Июль 2012
Июнь 2012
Апрель 2012
Март 2012
Февраль 2012
Апрель 2011
Март 2011
Февраль 2011
Январь 2011
Декабрь 2010
Ноябрь 2010
Октябрь 2010
Сентябрь 2010
Август 2010
Июль 2010
Июнь 2010
Май 2010
Апрель 2010
Март 2010

Случайные:
Настройка GRUB2

Немного об увеличении производительности.

Автоматическая смена обоев в GNOME и KDE

Что делать, если вы забыли свой пароль к linux

UNetbootin - создание загрузочной флешки в linux

Анализатор использования дисков Baobab





Коллеги:    все
 Linux для всех

Наши баннеры:
linuxnow.ru
linuxnow.ru
Установить баннер