Использование Logrotate для управления логами в Ubuntu 12.10
Ubuntu, VPS | Комментировать запись
Что такое 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: cron, cronjob, Linux, Logrotate, Ubuntu, Ubuntu 12.10, VPS