Настройка Logrotate
Информация о конфигурации Logrotate обычно может быть найдена в двух местах на Ubuntu:
По умолчанию logrotate.conf настроит еженедельную (weekly) ротацию лог-файлов, принадлежащие пользователю root и группе syslog (su root syslog), с сохранением четырех лог-файлов (rotate 4) и новых пустых файлов журнала созданный после того, как текущий обновится (create).
Рассмотрим конфигурационный файл Logrotate /etc/logrotate.d для пакетного менеджера apt:
cat /etc/logrotate.d/apt
Содержимое файла:
/var/log/apt/term.log {
rotate 12
monthly
compress
missingok
notifempty
}
/var/log/apt/history.log {
rotate 12
monthly
compress
missingok
notifempty
}
Этот файл содержит конфигурационные блоки для двух разных файлов журнала в каталоге /var/log/apt/: term.log и history.log. Оба блока имеют одинаковые опции. Любые параметры, не заданные в этих конфигурационных блоках, наследуют значения по умолчанию или значения, установленные в файле /etc/logrotate.conf. Параметры, установленные для журналов apt:
man logrotateКонфигурация примера
Для управления лог-файлами приложений, не настроенных по умолчанию, существует 2 способа:
Создание конфигурации в /etc/logrotate.d/
В качестве примера настроим обновления для вымышленного веб-сервера, который пишет логи в файлы access.log и error.log,расположенные в каталоге /var/log/example-app/. Он работает от имени пользователя www-data и группы www-data.
Для начала создайте новый файл с помощью текстового редактора vi:
sudo vi /etc/logrotate.d/example-app
Ниже приведен пример файла конфигурации Logrotate, который может обрабатывать логи:
/var/log/example-app/*.log {
daily
missingok
rotate 14
compress
notifempty
create 0640 www-data www-data
sharedscripts
postrotate
systemctl reload example-app
endscript
}
Описание некоторых директив:
sudo logrotate /etc/logrotate.conf --debug
В результате будет вызвана утилита logrotate, с указанием на стандартный файл конфигурации в режиме отладки.
В консоль будет выводиться информация, о том какие файлы logrotate обрабатывает в данный момент. Стандартная настройка Logrotate будет выполняться один раз в день, включая новую конфигурацию.
Информация о конфигурации Logrotate обычно может быть найдена в двух местах на Ubuntu:
- /etc/logrotate.conf - этот файл содержит некоторые настройки по умолчанию и устанавливает ротацию для нескольких журналов, которые не принадлежат никаким системным пакетам. Он также использует оператор include для настройки конфигурации из любого файла в каталоге /etc/logrotate.d.
- /etc/logrotate.d/ - в этой директории любые пакеты, которые вы устанавливаете, будут размещать свою конфигурацию Logrotate. При стандартной установке у вас уже должны быть файлы для базовых системных инструментов, таких как apt, dpkg, rsyslog и т.д.
По умолчанию logrotate.conf настроит еженедельную (weekly) ротацию лог-файлов, принадлежащие пользователю root и группе syslog (su root syslog), с сохранением четырех лог-файлов (rotate 4) и новых пустых файлов журнала созданный после того, как текущий обновится (create).
Рассмотрим конфигурационный файл Logrotate /etc/logrotate.d для пакетного менеджера apt:
cat /etc/logrotate.d/apt
Содержимое файла:
/var/log/apt/term.log {
rotate 12
monthly
compress
missingok
notifempty
}
/var/log/apt/history.log {
rotate 12
monthly
compress
missingok
notifempty
}
Этот файл содержит конфигурационные блоки для двух разных файлов журнала в каталоге /var/log/apt/: term.log и history.log. Оба блока имеют одинаковые опции. Любые параметры, не заданные в этих конфигурационных блоках, наследуют значения по умолчанию или значения, установленные в файле /etc/logrotate.conf. Параметры, установленные для журналов apt:
- rotate 12 - сохранить двенадцать последних лог-файлов;
- monthly - обновлять один раз в месяц;
- compress - сжать обновленные файлы. По умолчанию используется gzip и форматируется в формат .gz. Команда сжатия может быть изменена с помощью параметра compresscmd;
- missingok - не записывать сообщение об ошибке, если лог-файл отсутствует;
- notifempty - не ротировать пустой лог-файл.
man logrotateКонфигурация примера
Для управления лог-файлами приложений, не настроенных по умолчанию, существует 2 способа:
- Создайте новый файл конфигурации Logrotate и поместите его в /etc/logrotate.d/. Созданная конфигурация будет выполняться ежедневно от имени пользователя root вместе со всеми другими стандартными заданиями Logrotate.
- Создайте новый файл конфигурации и запустите его за пределами директории Logrotate по умолчанию. Это может быть необходимо, если вам нужно запустить Logrotate в привилегированном режиме, или если вы хотите обновлять логи чаще, чем раз в день.
Создание конфигурации в /etc/logrotate.d/
В качестве примера настроим обновления для вымышленного веб-сервера, который пишет логи в файлы access.log и error.log,расположенные в каталоге /var/log/example-app/. Он работает от имени пользователя www-data и группы www-data.
Для начала создайте новый файл с помощью текстового редактора vi:
sudo vi /etc/logrotate.d/example-app
Ниже приведен пример файла конфигурации Logrotate, который может обрабатывать логи:
/var/log/example-app/*.log {
daily
missingok
rotate 14
compress
notifempty
create 0640 www-data www-data
sharedscripts
postrotate
systemctl reload example-app
endscript
}
Описание некоторых директив:
- create 0640 www-data www-data - после ротирования создается новый пустой файл журнала с указанными разрешениями (0640), владельцем (www-data) и группой (www-data);
- sharedscripts - эта опция означает, что любые скрипты, добавленные в конфигурацию, выполняются только один раз за запуск после сжатия файлов, а не для каждого отдельного обновленного файла. Поскольку наша конфигурация будет соответствовать двум лог-файлам (access.log и error.log), скрипт, указанный в postrotate, будет запускаться только 1 раз;
- postrotate to endscript - скрипт в этом блоке будет запущен после того, как файл журнала обновится. В примере приложение перезагружается. Обратите внимание, что скрипты в postrotate выполняются до сжатия логов, т.к. оно может занять много времени, а ваше программное обеспечение сможет немедленно переключится на новый файл.
sudo logrotate /etc/logrotate.conf --debug
В результате будет вызвана утилита logrotate, с указанием на стандартный файл конфигурации в режиме отладки.
В консоль будет выводиться информация, о том какие файлы logrotate обрабатывает в данный момент. Стандартная настройка Logrotate будет выполняться один раз в день, включая новую конфигурацию.