Использование Logrotate для управления логами в Ubuntu 12.10

Что такое Logrotate?

Logrotate – это утилита для управления лог-файлами системы, с помощью которой можно осуществлять автоматическую ротацию, удалять или сжимать логи. Таким образом этот инструмент поможет сохранить драгоценное дисковое пространство. Не смотря на простоту кода, конфигурационный файл данной утилиты очень мощный и гибкий, благодаря чему можно без труда управлять различными параметрами. Это дает возможность настроить автоматическое управление журналами системы без необходимости ручного вмешательства.

Требования

Прежде чем приступить к данному руководству, нужно выполнить начальную настройку сервера. Чтобы получить инструкции, читайте руководство «Начальная настройка сервера Ubuntu 12.04».

1: Обновление системы и системных пакетов

Выполните следующую команду, чтобы обновить список пакетов apt-get и получить информацию о новейших версиях пакетов и их зависимостей.

sudo apt-get update

2: Установка Logrotate

Если утилита logrotate еще не установлена на сервер, используйте менеджер пакетов apt-get для ее установки:

sudo apt-get install logrotate

3: Проверка установки

Чтобы убедиться в том, что утилита logrotate установлена успешно, выполните команду:

logrotate

Поскольку logrotate ориентируется на конфигурационные файлы, данная команда пока что не будет ротировать лог-файлы, а просто выведет краткий обзор использования и доступные параметры.

4: Настройка Logrotate

Конфигурации и опции logrotate по умолчанию можно найти в:

/etc/logrotate.conf

Некоторые из важных параметров конфигурации: rotation-interval, log-file-size, rotation-count и compression.

Логи уровня приложения (заменяющие настройки по умолчанию в случае необходимости) хранятся в:

/etc/logrotate.d/

5: Пример настроек

Для примера можно использовать конфигурации приложения dpkg (Debian package management system), которые хранятся в /etc/logrotate.d/dpkg. В этом файле можно найти следующую запись:

/var/log/dpkg.log {
monthly
rotate 12
compress
delaycompress
missingok
notifempty
create 644 root root
}

Это значит, что:

  • для приложения dpkg утилита отслеживает файл /var/log/dpkg.log на ежемесячной основе (интервал ротации monthly);
  • строка rotate 12 значит, что система будет хранить логи 12 дней;
  • лог-файлы можно сжимать в формат gzip при помощи compress, а delaycompress откладывает сжатие до следующей ротации. Обратите внимание: опция delaycompress будет работать, только если указана опция compress;
  • опция missingok в случае отсутствия лога перейдет к обработке следующего лога, не выдавая сообщений об ошибке;
  • notifempty не будет ротировать лог-файл, если он пуст;
  • опция create <режим> <владелец> <группа> создает новый пустой файл с указанными свойствами после ротации логов.

В указанных выше опциях  отсутствует опция size, которая ротирует логи, если их размер превышает указанное значение (что позволяет контролировать пространство, занимаемое логами в системе).

Например, чтобы установить лимит в 100 МБ:

size 100M

Примечание: если установить опцию size и интервал ротации, то опция size будет иметь более высокий приоритет. То есть, если конфигурационный файл содержит следующие настройки:

monthly
size 100M

то логи будут ротироваться, как только размер файла превысит 100 М, не дожидаясь истечения срока.

6: Настройка cronjob

Чтобы логи ротировались автоматически, без постоянной необходимости ручного вмешательства, можно настроить cron. Для этого нужно просто внести соответствующую запись в /etc/cron.daily/logrotate.

7: Проверка состояния

Чтобы проверить, действительно ли ротируется конкретный лог, и узнать дату и время последней его ротации, откройте файл /var/lib/logrotate/status – аккуратно отформатированный файл, который содержит имя лог-файла и дату его последней ротации.

cat /var/lib/logrotate/status

Вот несколько записей из такого файла:

"/var/log/lpr.log" 2013-4-11
"/var/log/dpkg.log" 2013-4-11
"/var/log/pm-suspend.log" 2013-4-11
"/var/log/syslog" 2013-4-11
"/var/log/mail.info" 2013-4-11
"/var/log/daemon.log" 2013-4-11
"/var/log/apport.log" 2013-4-11

Готово! Теперь утилита logrotate установлена на сервер и работает должным образом.

Tags: , , , , , ,

Добавить комментарий