Настройка logrotate: Настройка Logrotate | Losst
Настройка Logrotate | Losst
В Linux, большинство сервисов и программ, которые работают в фоне, таких как Apache, Nginx, Postfix и других записывают информацию о своем состоянии, результатах работы и ошибках в лог файлы. Стандартное расположение логов или как их еще называют — журналов — в папке /var/log.
С помощью анализа логов вы можете понять что работает не так, почему произошла ошибка и как решить возникшую проблему. Но тот кроется одна проблема. Размер логов постоянно растет и они занимают все больше и больше места на диске, поэтому необходимо вовремя чистить логи и удалять устаревшие записи, чтобы они не мешали нормально работать. Это можно делать вручную время от времени или настроить скрипты Cron, но есть еще более простой вариант — утилита logrotate. В этой статье будет рассмотрена настройка logrotate и ее использование.
Содержание статьи:
Как работает Logrotate?
Утилита Logrotate предназначена для автоматизации обработки журналов. Она может выполнять с ними необходимые действия в зависимости от определенных условий и правил соответствия. Например, можно сжимать журналы в архив или отправлять на другой сервер когда они достигают определенного размера, возраста, или других параметров.
Проверку условий можно настроить ежедневно, еженедельно или ежемесячно. Это позволяет создать схему ротации логов, удобную именно для вас и вашего сервера. Также ротация логов может быть полезна на домашнем компьютере, но здесь она не так важна как на серверах, где только в логи Apache могут записываться до сотен тысяч строк ежедневно.
Настройка Logrotate
Logrotate — это популярная утилита, поэтому в большинстве дистрибутивов она поставляется по умолчанию. Вы можете убедиться, что программа установлена в вашем дистрибутиве, попытавшись ее установить. Например, в CentOS:
sudo yum install logrotate
Или в Ubuntu и основанных на ней дистрибутивах:
sudo apt install logrotate
Теперь, даже если утилита не была установлена, вы ее установите. Все основные настройки программы находятся в файле /etc/logrotate.conf, дополнительные настройки, касаемо правил и других возможностей могут быть размещены в папке /etc/logroate.d/. Вы можете размещать все настройки logroatae прямо в основном конфигурационном файле, будет более правильно, если настройки для каждого отдельного сервиса будут находиться в отдельном файле, в папке /etc/logrotate.d/.
Чтобы конфигурационные файлы из этой папки загружались программой, необходимо добавить в основной конфигурационный файл такую строчку:
vi /etc/logrotate.conf
include /etc/logrotate.d
Просто убедитесь что она там уже есть. Сначала давайте рассмотрим основные директивы, которые мы будем применять во время настройки. Здесь директивы выглядят не совсем обычно, сама директива и определяет что и когда нужно делать, а уже если нужно, ей передаются дополнительные параметры. Чтобы указать как часто нужно выполнять проверку совпадению условий используются такие директивы:
- hourly — каждый час;
- daily — каждый день;
- weekly — каждую неделю;
- monthly — каждый месяц;
- yearly — каждый год.
Основные директивы управления и обработки логов:
- rotate — указывает сколько старых логов нужно хранить, в параметрах передается количество;
- create — указывает, что необходимо создать пустой лог файл после перемещения старого;
- dateext — добавляет дату ротации перед заголовком старого лога;
- compress — указывает, что лог необходимо сжимать;
- delaycompress — не сжимать последний и предпоследний журнал;
- extension — сохранять оригинальный лог файл после ротации, если у него указанное расширение;
- mail — отправлять Email после завершения ротации;
- maxage — выполнять ротацию журналов, если они старше, чем указано;
- missingok — не выдавать ошибки, если лог файла не существует;
- olddir — перемещать старые логи в отдельную папку;
- postrotate/endscript — выполнить произвольные команды после ротации;
- start — номер, с которого будет начата нумерация старых логов;
- size — размер лога, когда он будет перемещен;
Это те основные директивы, которые мы будем использовать. В главном конфигурационном файле находится глобальная конфигурация, директивы, которые будут распространяться на все логи если не было отменено их действие. Каждый лог, который подлежит ротации описывается таким образом:
адрес_файла_лога {
директивы
}
Теперь давайте создадим файл rsyslog.conf в папке /etc/logrotate.d/ и поместим в него настройки для ротации этого лога:
/var/log/messages {
daily
rotate 3
size 10M
compress
delaycompress
}
Эти настройки означают, что ротация журналов будет выполняться ежедневно, и мы будем хранить три последних журнала, более старые копии будут автоматически удаляться. Минимальный размер для ротации — 10 мегабайт, ротация не будет выполнена, если лог не занимает более 10 мегабайт. Будет использоваться сжатие, для всех журналов кроме последнего и предпоследнего. Точно по такому же принципу вы можете настроить ротацию логов для любого из журналов. Нужно создать такую секцию для каждого из логов, которыми вы хотите управлять.
Теперь осталось протестировать как работает наша конфигурация. Для этого запустим утилиту logrotate с опцией -d. Она выведет все, что планируется сделать, но не будет изменять файлы на диске. У нас есть файл /var/log/messages, размером 40 Мегабайт, посмотрим что будет делать утилита:
logrotate -d /etc/logrotate.d/rsyslog.conf
Как видите, программа обнаруживает файл лога и разделяет его на несколько частей. Вы можете убедиться, что logrotate будет запускаться как положено проверив расписание cron:
ls /etc/cron.daily/
Настройка Logrotate завершена, а вам осталось всего лишь расписать как будет выполняться ротация логов для каждого из журналов, которые занимают много места.
Выводы
В этой статье мы рассмотрели как выполняется настройка logrotate centos или в любом другом дистрибутиве Linux. Работа утилиты не сильно отличается в зависимости от дистрибутивов. Если у вас есть сервер с большой нагрузкой, вам обязательно необходимо настроить ротацию логов. Надеюсь, эта информация была полезной для вас. На завершение видео, о том как выполняется ротация логов в Ubuntu от LPIC:
И еще одно на английском:
Установка и настройка Logrotate в Linux
Директория /var/log – одна из наиболее интересных (и, возможно, наиболее важных) директорий в Linux. В соответствии со стандартом иерархии файловых систем, данные о работе большинства запущенных в системе служб сохраняются в файлы в этой директории или одной из ее поддиректорий.
Такие файлы называются журналами или логами, и они являются ключом к анализу работы системы (и того, как она работала раньше). Логи также являются первым источником информации для администраторов и инженеров при устранении неполадок.
Зачем нужна ротация логов
Если посмотреть содержимое /var/log в различных дистрибутивах Linux, мы увидим следующие файлы и поддиректории. У вас они могут отличаться в зависимости от запущенных в вашей системе служб и времени их работы.
# ls /var/log
Здесь мы видим, что некоторые имена логов заканчиваются на «log», как и можно предположить, а некоторые переименовываются в соответствии с датой (например, maillog-20190203) .
Если бы логи хранились вечно, в какой-то момент они бы заполнили всю файловую систему, где находится /var/log. Чтобы этого не произошло, можно воспользоваться полезной утилитой под названием logrotate для периодической очистки (ротации) логов.
Другими словами, logrotate переименовывает или сжимает файл лога при выполнении определенных условий (мы рассмотрим их чуть ниже), а следующее событие записывается в пустой файл. Кроме того, она удаляет «старые» файлы логов и сохраняет только более новые. Естественно, мы сами определяем критерии «старости» и периодичность очистки.
Установка logrotate
Для установки logrotate просто воспользуйтесь менеджером пакетов.
В Debian и Ubuntu
# apt-get install logrotate
В CentOS, RHEL и Fedora
# yum install logrotate
Сразу стоит отметить, что конфигурация хранится как в основном файле (/etc/logrotate.conf), а также в отдельных файлах .conf в директории /etc/logrotate.d. Необходимо только включить эту опцию в основном файле параметром
include /etc/logrotate.d
В дальнейших примерах мы для большей упорядоченности будем придерживаться именно этого подхода настройки logrotate.
Примеры настроек Logrotate
Logrotate – очень многофункциональный инструмент. Он располагает большим разнообразием опций для определения того, когда и как будет выполняться ротация логов и какие действия будут выполняться с ними в дальнейшем.
Вставьте в файл /etc/logrotate.d/httpd следующие строки (скорее всего, этот файл будет создан при установки):
/var/log/httpd/* { weekly rotate 3 size 10M compress delaycompress }
Рассмотрим назначение каждой из них.
Первая строка показывает, что директивы в данном блоке применяются ко всем логам в директории /var/log/apache2.
weekly — означает еженедельную ротацию логов. Другие возможные значения – daily (ежедневно) и monthly (ежемесячно).
rotate 3 — задает сохранение только 3 прошедших ротацию логов. Таким образом, при четвертом запуске самый старый файл будет удален.
size=10M — устанавливает минимальный размер файла для ротации равным 10 мегабайт. Другими словами, ротация не будет выполняться, пока лог не достигнет размера в 10 Мб
compress и delaycompress — используются для того, чтобы задать сжатие всех сохраненных логов кроме самого последнего.
Проведем тестовый запуск, чтобы увидеть, что бы сделала logrotate, если бы она действительно была запущена. Воспользуйтесь опцией -d с файлом конфигурации (для реального запуска утилиты не указывайте эту опцию):
# logrotate -d /etc/logrotate.d/httpd
Вместо сжатия логов их можно переименовывать в соответствии с датой ротации. Для этого используется директива dateext. Для использования формата даты, отличного от ГГГГММДД можно указать желаемый формат.
Мы также можем исключить ротацию лога, если он пустой, воспользовавшись опцией notifempty. Кроме того, зададим отправку заполненных логов системному администратору по электронной почте (в данном случае [email protected]), для этого в системе должен быть настроен почтовый сервер.
В следующем примере настроим файл конфигурации /etc/logrotate.d/squid с использованием описанных выше параметров для ротации лога /var/log/squid/access.log:
squid /var/log/squid/access.log { monthly create 0644 root root rotate 5 size=1M dateext dateformat -%d%m%Y notifempty mail [email protected] }
# logrotate –d /etc/logrotate.d/squid
Как мы видим, ротация этого лога не требуется. Однако, при выполнении условия по размеру (size=1M), лог будет переименован в access.log-25022019 (если ротация была произведена 25 февраля 2019 года), и будет создан новый файл access.log с правами доступа 0644, и владельцем root. Когда наберется 6 логов, самый старый из них будет отправлен на [email protected].
Теперь допустим, что при выполнении ротации вам требуется запуск собственной команды. Для этого пропишите строку с этой командой между директивами postrotate и endscript. Например, если требуется уведомлять root-пользователя по электронной почте о каждой ротации логов в директории /var/log/myservicegets, добавьте в блок три последних строки:
squid /var/log/myservice/* { monthly create 0644 root root rotate 5 size=1M postrotate echo "Была выполнена ротация." | mail root endscript }
Важно помнить, что в случае конфликтов параметры в файлах конфигурации, расположенных в директории /etc/logrotate, имеют приоритет перед параметрами в основном файле конфигурации.
Logrotate и Cron
По умолчанию после установки logrotate в директории /etc/cron.daily создается файл crontab с именем logrotate. Как и в случае с другими файлами crontab в этой директории, он будет выполняться ежедневно в соответствиями с настройками в /etc/crontab.
Заключение
В системе, где ведется множество логов, их администрирование может быть существенно упрощено при помощи logrotate. Как было рассмотрено в данном руководстве, данная утилита будет автоматически выполнять ротацию, сжимать, удалять логи и отправлять их по электронной почте с заданной периодичностью или при достижении файлом определенного размера. Просто убедитесь, что для запуска logrotate есть соответствующая задача cron, и все станет гораздо проще. Для более подробной информации обратитесь к соответствующей man-странице.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Настройка logrotate + доступ для сбора логов по SFTP / Хабр
У меня стояла задача: настроить сжатие логов DNS сервера Unbound, с возможностью удобного сбора этих бэкапов в коллектор. Также требовалось ограничить права доступа, чтобы с коллектора можно было зайти только в дирректорию, где хранятся бэкапы логов. Указанные действия проводил на CentOS 7 Minimal и CentOS 6.6 Minimal.
1) Сперва создаем группу пользователей, для которой будет ограничен доступ только по SFTP:
groupadd sftpd
2) Далее правим конфигурацию ssh:
vi /etc/ssh/sshd_config
Требуется в самом конце закомментировать строку #Subsystem sftp /usr/libexec/openssh/sftp-server
и ограничить доступ для группы пользователей sftpd только по SFTP и только в домашнюю директорию. Для этого нужно добавить в конце следующие строки:
Subsystem sftp internal-sftp
Match group sftpd
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Перезагружаем ssh:
service sshd restart
3) Создаем пользователя dnslog, назначаем ему домашнюю папку и права на эту папку. Владелец должен быть root, никто другой не должен иметь прав на запись в эту папку, иначе ничего не получится:
adduser -d /home/dnslog -s /sbin/nologin dnslog -g sftpd
passwd dnslog
chown root /home/dnslog
chmod 750 /home/dnslog
4) Создаем папку, внутри домашней директории нашего пользователя, для которой у logrotate будут права на запись.
mkdir /home/dnslog/logs
chown dnslog /home/dnslog/logs
chmod 775 /home/dnslog/logs
Доступ для коллектора организован, теперь можно подключиться по SFTP и проверить, что все работает. Далее настроим ротацию логов:
5) Создаем в папке /etc/logrotate.d/ файл, в котором будут прописаны настройки ротации наших логов.
vi /etc/logrotate.d/unbound_logrotate
Настройки примерно такие:
/var/log/unbound/unbound.log {
daily
rotate 48
missingok
notifempty
compress
olddir /home/dnslog/logs
size 1024M
postrotate
service rsyslog restart > /dev/null
unbound-control log_reopen #Переоткрываем файл логов, иначе лог не будет писаться после ротации
endscript
}
Далее я установил время ротации через крон.
6) В файле /etc/crontab добавил следующую строку:
23 * * * * root run-parts /etc/cron.hourly
И перезагружаем крон:
service crond restart
Ротация будет осуществляться каждый час в 23 минуты.
7) В папке /etc/cron.hourly/ создаем файл с любым именем, где пишем скрипт, который будет выполняться при наступлении времени ротации, с таким содержимым:
/usr/sbin/logrotate /etc/logrotate.conf
Вот и все. Логи будут автоматически складываться в папку /home/dnslog/logs/
Проверить настройки ротации можно командой:
logrotate -d /etc/logrotate.conf
Также, стоит отметить, что в Unbound существует два способа ведения логов: средствами Unbound и через syslog. Через syslog — лучший способ, так как не так тормозит работу Unbound. В указанном примере описана ротация логов средствами Unbound. Чтобы настроить логгирование через syslog, в конфигурации Unbound нужно включить параметр:
use-syslog: yes
А также немного переписать файл /etc/logrotate.d/unbound_logrotate
/var/log/messages {
daily
rotate 48
missingok
notifempty
compress
size 1024M
olddir /home/dnslog/logs
create
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
chown dnslog /home/dnslog/logs/messages*
chmod 775 /home/dnslog/logs/messages*
endscript
}
Ротация файлов по размеру в logrotate
Написать заметку по настройке ротации логов в logrotate меня побудило то, что постоянно забываю все сделать правильно. Запишу все нюансы, заодно с остальными поделюсь информацией. Речь пойдет о ротации лог файлов по достижении ими определенного размера.
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Administrator Linux. Professional» в OTUS. Курс не для новичков, для поступления нужно пройти .
Это будет короткая заметка про конкретную настройку. Подробно описывать работу logrotate не буду, так как в интернете и так полно материала на эту тему.
Для примера буду описывать ротацию логов nginx. После установки nginx, вы получите следующий конфиг для ротации логов — /etc/logrotate.d/nginx.
/var/log/nginx/*log { create 0644 nginx nginx daily rotate 10 missingok notifempty compress sharedscripts postrotate /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true endscript }
Все не указанные явно параметры будут браться из дефолтного конфига /etc/logrotate.conf.
Для того, чтобы защитить сервер от заполнения всего свободного пространства диска логами access.log, ротация раз в день не подходит. Тебе за час без напряга смогут забить весь диск логами. Лучше настроить ротацию по достижении определенного размера файла. Для этого вы используете параметр:
size = 10M
И ждете, что по достижении размера файла access.log в десять мегабайт, будет произведена ротация. На самом деле не будет. По-умолчанию, logrotate запускается раз в сутки, поэтому он при всем желании не сможет следить за размером файла и ротировать его чаще, чем раз в сутки.
За его запуск отвечает скрипт в директории /etc/cron.daily/logrotate. Для того, чтобы logrotate мог проверять размер лог файла хотя бы раз в час, скрипт запуска надо перенести в директорию /etc/cron.hourly. А для более частой проверки, добавить его напрямую в cron с нужным интервалом запуска. Например, раз в 5 минут.
*/5 * * * * /etc/cron.daily/logrotate
Допустим вы все это сделали, но логи все равно не будут ротироваться при достижении заданного размера. Понять, в чем же теперь проблема, не так просто. При запуске logrotate вы не увидите никаких ошибок. Он просто ничего не будет делать. Понять, в чем проблема, можно только при запуске в режиме отладки. Там вы увидите ошибку, если в этот день ротация уже была хотя бы раз.
destination /var/log/nginx/access.log.20190826.gz already exists, skipping rotation
Смысл тут в том, что logrotate сегодня уже произвел ротацию и создал архив лога с определенным именем и второй раз такой же файл он сделать не может. А маска имени файла при создании настроена в формате %Y%m%d. За эту маску отвечает параметр в /etc/logrotate.conf:
dateext
Самый простой вариант — это просто закомментировать этот параметр, тогда все архивы логов будут иметь следующую маску в файлах:
access.log.1.gz access.log.2.gz access.log.3.gz
И так далее. Если же вам хочется сохранить исходный формат лога для всех файлов, а для тех, что ротируются по размеру, настроить другую маску имени, используйте дополнительный параметр:
dateformat -%Y-%m-%d_%H-%s
Формат имени архивного лога будет access.log.2019-08-26_15-1566819154.gz. Имена больше не будут дублироваться и logrotate сможет корректно запускать ротацию при достижении указанного размера файла. Обращаю внимание, что формат тут отличается от привычной конструкции в date, к которой обычно все привыкли. Сделать формат %Y-%m-%d_%H-%M не получится. Logrotate не поймет маску с минутами %M. Так что для уникальности имени в пределах одного часа надо использовать %s.
Таким образом, чтобы настроить ротацию лог файла, например, aceess.log, по достижении определенного размера, вам нужно:
- Запускать через cron logrotate с достаточно высокой периодичностью, например раз в час или чаще.
- Настроить маску файла для архива лога, чтобы она была уникальной в каждый момент запуска logrotate.
Вот пример для ротации конфигов nginx или apache по достижении размера лог файла в 10 мегабайт.
/var/log/nginx/*.log { size 10M dateext dateformat -%Y-%m-%d_%H-%s olddir /var/log/nginx/old missingok rotate 30 compress notifempty create 640 nginx adm sharedscripts postrotate if [ -f /var/run/nginx.pid ]; then kill -USR1 `cat /var/run/nginx.pid` fi endscript }
Не забудьте создать директорию /var/log/nginx/old для хранения старых логов. На этом у меня все по ротации логов в logrotate с учетом размера файла.
Онлайн курс по Linux
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Administrator Linux. Professional» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Что даст вам этот курс:
- Знание архитектуры Linux.
- Освоение современных методов и инструментов анализа и обработки данных.
- Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
- Владение основными рабочими инструментами системного администратора.
- Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
- Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.
Проверьте себя на вступительном тесте и смотрите подробнее программу по .
Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!
Помогла статья? Подписывайся на telegram канал автора
Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.
CentOS: logrotate — ротация логов
Что бы избежать заполнения диска старыми логами — необходимо настроить утилиту logrotate
.
Основной файл конфигурации — /etc/logrotate.conf
.
Для создания настроек отдельных логов — используем директорию /etc/logrotate.d
, которая описана как:
# RPM packages drop log rotation information into this directory include /etc/logrotate.d
Добавим наблюдение за логом /var/log/iptables.log
.
Создаём файл /etc/logrotate.d/iptables.conf
с таким содержимым:
/var/log/iptables.log { rotate 5 missingok notifempty compress size 1M daily create 0644 root root postrotate service rsyslog restart > /dev/null endscript }
Опции тут:
rotate
— количество копий старых логов;missingok
— не писать сообщения вstdout
, если файл отсутствует;notifempty
— не выполнять никаких действий, если файл пустой;compress
— сжиматьgzip
;size
— размер файла, при достижении которого он будет сжат и сохранён как старый;daily
— выполнять проверку каждый день;create
— права доступа и владелец при создании нового файла;
Дополнительные опции:
olddir
— перемещать старые логи в указанную директорию;postrotate/endscript
— действие, выполняемое после ротации логов;mail
— адрес, на который высылать уведомление о ротации;
Для проверки — выполняем:
# logrotate -f /etc/logrotate.conf
Учтите — это действие выполнит обязательную ротацию всех логов, указанных в конфигурации logrotate
.
Проверяем:
# ls -hl /var/log/iptables* -rw-r--r-- 1 root root 939K Dec 6 10:46 /var/log/iptables.log -rw-r--r-- 1 root root 451K Dec 6 10:40 /var/log/iptables.log-20141206.gz
# cat /var/lib/logrotate.status | grep iptables "/var/log/iptables.log" 2014-12-6
Раздел: CentOS HOWTO’s UNIX/Linux
Метки: Linux, rsyslog
Настройка Logrotate на Ubuntu 16.04: управление логами
Любая информационная система сохраняет операции и действия в специальных текстовых файлах – логах. Чтобы ИС исправно сохраняла логи, а администраторы могли получить к ним доступ, используют специализированное ПО. В статье расскажем об одной утилите – Logrotate, которая установлена на серверной ОС Ubuntu 16.04.
Предварительная подготовка
Logrotate архивирует лог-файлы в автоматическом режиме по заданным параметрам. Если не сжимать логи и не удалять старые версии, то со временем закончится место на жестком диске. Чтобы избежать подобной ситуации, системные администраторы используют программы.
Прежде, чем настраивать логирование, подключаемся к серверной платформе по SSH и выполняем нижеуказанные действия от имени суперпользователя.
Установка
Подключившись к Ubuntu Server, проверяем наличие программы командой:
logrotate -- version
Важно! На середину августа 2019 года релиз 3.15.0.
Если вместо ответа в виде цифр, пользователь получает сообщение, что утилита не установлена, то инсталлируем стандартными средствами «Убунту».
Настройка
Стандартная конфигурация Logrotate хранится по двум путям:
1. Файл /etc/logrotate.conf хранит часть конфигураций по умолчанию. Также он содержит шаблоны архивирования для несистемных файлов.
2. Второй путь – /etc/logrotate.d/ предназначен для сохранения сторонних параметров, которые администратор задает самостоятельно. Здесь хранятся шаблоны ротаций для системных утилит (apt, rsyslog, dpkg и др.).
После инсталляции утилита использует стандартный шаблон еженедельной ротации данных. Согласно параметрам архивируются логи, которые относятся к пользователю root и системной группе syslog.
Зайдем во второй файл, который отвечает за системную команду apt, чтобы изучить стандартные параметры.
cat /etc/logrotate.d/apt
Внутри расположено два раздела:
Скриншот №1. Содержимое файла.
Как видно, данные хранятся в виде одинаковых блоков условий:
- rotate 12 указывает, что утилита сохраняет последние двенадцать логов;
- вторая строка означает обновление содержимого один раз в месяц;
- compress – команда архивирования, по умолчанию используется стандартная утилита Linux-систем – gzip, если же требуется изменить на другую, то указываем ключи после команды;
- четвертый параметр говорит logrotate о том, чтобы не сохранять сообщение с ошибкой, если лог-файла нет;
- последний параметр отменяет архивацию, если лог пустой.
Если необходим собственный скрипт для ротации, то создаем его в директории /etc/logrotate.d/. Ниже приведем тестовый вариант создания шаблона ротации.
Пример №1
Исходное: существует виртуальный сервер. Необходимо сохранять логи в access.log и error.log. Они находятся в каталоге /var/log/example-app/. На сервере присутствует пользователь www-data и группа с аналогичным именем.
Создаем файл через текстовый редактор.
sudo vi /etc/logrotate.d/example-app
Вставляем следующие команды в него:
Скриншот №2. Пример файла.
Важно! Если необходима подробная информация о команде, то используем утилита man. Например,
man logrotate
После добавления информации сохраняем изменения. Тестируем результат:
sudo logrotate /etc/logrotate.conf –debug
Важно! В рабочем окне терминала отображается информация об операциях, которые в данный момент проводит logrotate.
Пример №2
Исходные данные: Logrotate запущен от учетного имени Sammy. Лог-файлы сохраняются в директорию /home/sammy/logs/. Необходимо настроить архивирование с интервалом каждый час.
Важно! Настройки будут выполняться в другом каталоге, а не в /etc/logrotate.d.
Создаем новую конфигурацию через редактор vi.
vi /home/sammy/logrotate.conf
В него добавим следующую информацию:
/home/sammy/logs/*.log {
hourly
missingok
rotate 24
compress
create
}
Команды hourly и rotate 24 указывают на то, что архивирование происходит ежечасно. Закрываем файл с сохранением.
Для проверки создадим тестовый файл, в котором будут храниться логи.
cd ~
mkdir logs
touch logs/access.log
Теперь укажем logrotate новый путь для сохранения информации.
logrotate /home/sammy/logrotate.conf --state /home/sammy/logrotate-state –verbose
На мониторе после запуска утилиты появится следующее:
Скриншот №3. Результат тестирования.
Для программы логирования – это новый файл.
Для ежечасного запуска утилиты – сконфигурируем планировщик заданий cron. Откроем его:
crontab –e
Внесем последнюю строку в виде:
15 * * * * /usr/sbin/logrotate /home/sammy/logrotate.conf --state /home/sammy/logrotate-state
Сохраняем изменения, закрываем файл.
Средняя оценка: 5.0
Оценили: 1
220140
Минск
ул. Домбровская, д. 9
+375 (173) 88-72-49
700
300
ООО «ИТГЛОБАЛКОМ БЕЛ»
220140
Минск
ул. Домбровская, д. 9
+375 (173) 88-72-49
700
300
ООО «ИТГЛОБАЛКОМ БЕЛ»
700
300
Настройка Logrotate » Tapen.ru — Про свободное программное обеспечение
В Linux, большинство сервисов и программ, которые работают в фоне, таких как Apache, Nginx, Postfix и других записывают информацию о своем состоянии, результатах работы и ошибках в лог файлы. Стандартное расположение логов или как их еще называют — журналов — в папке /var/log.
С помощью анализа логов вы можете понять что работает не так, почему произошла ошибка и как решить возникшую проблему. Но тот кроется одна проблема. Размер логов постоянно растет и они занимают все больше и больше места на диске, поэтому необходимо вовремя чистить логи и удалять устаревшие записи, чтобы они не мешали нормально работать. Это можно делать вручную время от времени или настроить скрипты Cron, но есть еще более простой вариант — утилита logrotate. В этой статье будет рассмотрена настройка logrotate и ее использование.
Как работает Logrotate?
Утилита Logrotate предназначена для автоматизации обработки журналов. Она может выполнять с ними необходимые действия в зависимости от определенных условий и правил соответствия. Например, можно сжимать журналы в архив или отправлять на другой сервер когда они достигают определенного размера, возраста, или других параметров.
Проверку условий можно настроить ежедневно, еженедельно или ежемесячно. Это позволяет создать схему ротации логов, удобную именно для вас и вашего сервера. Также ротация логов может быть полезна на домашнем компьютере, но здесь она не так важна как на серверах, где только в логи Apache могут записываться до сотен тысяч строк ежедневно.
Настройка Logrotate
Logrotate — это популярная утилита, поэтому в большинстве дистрибутивов она поставляется по умолчанию. Вы можете убедиться, что программа установлена в вашем дистрибутиве, попытавшись ее установить. Например, в CentOS:
sudo yum install logrotate
Или в Ubuntu и основанных на ней дистрибутивах:
sudo apt install logrotate
Теперь, даже если утилита не была установлена, вы ее установите. Все основные настройки программы находятся в файле /etc/logrotate.conf, дополнительные настройки, касаемо правил и других возможностей могут быть размещены в папке /etc/logroate.d/. Вы можете размещать все настройки logroatae прямо в основном конфигурационном файле, будет более правильно, если настройки для каждого отдельного сервиса будут находиться в отдельном файле, в папке /etc/logrotate.d/.
Чтобы конфигурационные файлы из этой папки загружались программой, необходимо добавить в основной конфигурационный файл такую строчку:
vi /etc/logrotate.conf
include /etc/logrotate.d
Просто убедитесь что она там уже есть. Сначала давайте рассмотрим основные директивы, которые мы будем применять во время настройки. Здесь директивы выглядят не совсем обычно, сама директива и определяет что и когда нужно делать, а уже если нужно, ей передаются дополнительные параметры. Чтобы указать как часто нужно выполнять проверку совпадению условий используются такие директивы:
- hourly — каждый час;
- daily — каждый день;
- weekly — каждую неделю;
- monthly — каждый месяц;
- yearly — каждый год.
Основные директивы управления и обработки логов:
- rotate — указывает сколько старых логов нужно хранить, в параметрах передается количество;
- create — указывает, что необходимо создать пустой лог файл после перемещения старого;
- dateext — добавляет дату ротации перед заголовком старого лога;
- compress — указывает, что лог необходимо сжимать;
- delaycompress — не сжимать последний и предпоследний журнал;
- extension — сохранять оригинальный лог файл после ротации, если у него указанное расширение;
- mail — отправлять Email после завершения ротации;
- maxage — выполнять ротацию журналов, если они старше, чем указано;
- missingok — не выдавать ошибки, если лог файла не существует;
- olddir — перемещать старые логи в отдельную папку;
- postrotate/endscript — выполнить произвольные команды после ротации;
- start — номер, с которого будет начата нумерация старых логов;
- size — размер лога, когда он будет перемещен;
Это те основные директивы, которые мы будем использовать. В главном конфигурационном файле находится глобальная конфигурация, директивы, которые будут распространяться на все логи если не было отменено их действие. Каждый лог, который подлежит ротации описывается таким образом:
адрес_файла_лога {
директивы
}
Теперь давайте создадим файл rsyslog.conf в папке /etc/logrotate.d/ и поместим в него настройки для ротации этого лога:
/var/log/messages {daily
rotate 3
size 10M
compress
delaycompress
}
Эти настройки означают, что ротация журналов будет выполняться ежедневно, и мы будем хранить три последних журнала, более старые копии будут автоматически удаляться. Минимальный размер для ротации — 10 мегабайт, ротация не будет выполнена, если лог не занимает более 10 мегабайт. Будет использоваться сжатие, для всех журналов кроме последнего и предпоследнего. Точно по такому же принципу вы можете настроить ротацию логов для любого из журналов. Нужно создать такую секцию для каждого из логов, которыми вы хотите управлять.
Теперь осталось протестировать как работает наша конфигурация. Для этого запустим утилиту logrotate с опцией -d. Она выведет все, что планируется сделать, но не будет изменять файлы на диске. У нас есть файл /var/log/messages, размером 40 Мегабайт, посмотрим что будет делать утилита:
logrotate -d /etc/logrotate.d/rsyslog.conf
Как видите, программа обнаруживает файл лога и разделяет его на несколько частей. Вы можете убедиться, что logrotate будет запускаться как положено проверив расписание cron:
ls /var/cron.daily/
Настройка Logrotate завершена, а вам осталось всего лишь расписать как будет выполняться ротация логов для каждого из журналов, которые занимают много места.
Выводы
В этой статье мы рассмотрели как выполняется настройка logrotate centos или в любом другом дистрибутиве Linux. Работа утилиты не сильно отличается в зависимости от дистрибутивов. Если у вас есть сервер с большой нагрузкой, вам обязательно необходимо настроить ротацию логов. Надеюсь, эта информация была полезной для вас. На завершение видео, о том как выполняется ротация логов в Ubuntu от LPIC:
И еще одно на английском:
Настройка logrotate в Linux
Представьте, какой была бы жизнь, если бы критически важная услуга прекратилась несколько минут назад, и вас вызвали, чтобы спасти положение. Вы пытаетесь перезапустить службу, но она не работает. Нет сообщений об ошибках, но, что более важно, нет следов того, что он делал до того, как решил умереть. В вашем уме проходит сто одна причина, и вы понимаете, что нет способа узнать, в каком направлении двигаться. Может быть, вы могли бы вообще перезапустить сервер.Просто возможно.
Этот сценарий — один из многих, в которых ведение журнала может прийти вам на помощь. Обычно работающая часть программного обеспечения хранит в файле записи о важных действиях, связанных с ее запуском для потомков. В файле журнала можно хранить все, что угодно, так как это помогает разработчикам и системным администраторам узнать, что произошло с конкретным программным обеспечением, постфактум. Файлы журнала также используются людьми, ориентированными на безопасность, для проверки доступа к определенным ресурсам. При работе в сети или обмене сообщениями файлы журналов записывают время отправки или получения сообщений для дальнейшего использования.
Файлы журнала, по определению, продолжают увеличиваться в размере в зависимости от частоты и степени детализации, с которой они обновляются. Для выполнения своих задач они обычно открываются в режиме добавления и содержат отметки времени, помогающие при поиске и устранении неисправностей и проведении криминалистической экспертизы. Однако это создает проблему, поскольку файлы большого размера делают работу с файлами журнала обременительным процессом как для системы, так и для проверяющего. Журналы чередуются, чтобы файлы журналов оставались работоспособными. Проще говоря, новый файл открывается, а старый закрывается и либо сохраняется, либо удаляется в зависимости от предпочтений дизайна.Это не позволяет бревнам заполнять целые перегородки и при этом ставить системы на колени. Возможно, вы заметили ротацию журналов в системе поблизости. Посмотрите даты в файлах boot.log
.
В этом случае, когда выполняется определенное условие, текущий файл переименовывается путем добавления даты для его идентификации и отслеживания, и открывается новый файл с исходным именем, готовый для приема входящих сообщений журнала.
Вход в Linux (rsyslogd)
Как и следовало ожидать, регистрация в системах Linux, таких как сервер CentOS 7, который я использую для иллюстрации, зависит от демона для облегчения регистрации. Rsyslogd
— это название надежной старой службы с открытым исходным кодом. На самом деле он не такой уж и старый. Это улучшенная версия исходного демона syslog
, который обладает способностью быстро обрабатывать и пересылать журналы в любое место в IP-сети. Помимо syslog
и rsyslog
, существует syslog-ng
, еще один демон для обработки журналов. Обработчик журнала по умолчанию зависит от выбранного дистрибутива. Rsyslog
по умолчанию входит во многие дистрибутивы на основе Red Hat.Выполните следующую команду, чтобы проверить его наличие и версию в вашей системе:
rsyslogd -v
Поскольку это демон, вы можете проверить его активность, используя systemd
следующим образом:
статус systemctl rsyslogd
Если по какой-либо причине он не работает, вы можете запустить его через systemd
.
[Примечание редактора: многие новые системы заменили rsyslogd на journald для ведения журнала. Вы можете выбрать любой вариант или даже оба, чтобы удовлетворить ваши потребности в ведении журнала.Для получения дополнительной информации см. Документацию к вашему дистрибутиву. В этой статье предполагается, что вы используете rsyslogd.]
Логротате
Logrotate
— это утилита Linux, основная функция которой — подождать, повернуть журналы. Если он не установлен как часть установки ОС по умолчанию, его можно установить, просто запустив:
yum install logrotate
Двоичный файл может находиться по адресу / bin / logrotate
.
При установке logrotate
в каталог / etc /
помещается новый файл конфигурации для управления общим поведением утилиты при ее запуске. Кроме того, создается папка для файлов конфигурации оснастки конкретной службы для индивидуальных запросов на ротацию журналов. Подробнее об этом чуть позже.
Ежедневная работа cron
Ежедневно запускается задание cron
, запускающее утилиту. Это достигается размещением вызова утилиты в стандартной папке cron
для ежедневных заданий.Хотя специфика вызова выходит за рамки этой статьи, достаточно сказать, что вызов — это просто сценарий Bash, который запускает двоичный файл logrotate
, сообщая системе, что делать в случае ошибки.
Стандартное расположение файла журнала
Журналы в системе Linux можно размещать везде, где позволяют разрешения. Однако из-за того, что они постоянно меняются по размеру и содержанию, по определению Иерархия файловой системы предписывает, чтобы они хранились в каталоге / var / log /
.
На снимке экрана ниже показано содержимое моего каталога / var / log
.
Файлы конфигурации и примеры
/etc/logrotate.conf
Первый файл, на который следует обратить внимание в связи с функцией logrotate
, — это logrotate.conf
. Этот файл конфигурации содержит директивы о том, как файлы журнала должны быть повернуты по умолчанию. Если нет определенного набора директив, утилита действует в соответствии с директивами в этом файле.
Ниже приведен образец содержимого файла конфигурации.
Давайте рассмотрим несколько директив, чтобы почувствовать гибкость logrotate. К счастью, автор утилиты оставил достаточно комментариев для новичка. Вы также можете посмотреть страницу man
для более глубокого погружения. В директивах weekly
, dateext
, compress
, create
и rotate 4
указано, что файлы журналов должны вращаться еженедельно , что дата смены используется в качестве суффикса для идентификации повернутые файлы, повернутые файлы должны быть сжаты , что новый файл должен быть создан для приема входящих журналов, и что не должно храниться более четырех журналов.Другими словами, следует удалить пятый новейший журнал. Также обратите внимание, что в моей системе из-за наличия #
перед директивой compress
сжатие по умолчанию отключено.
Также существует директива о включении определенной папки: /etc/logrotate.d
. Эта папка используется для запросов ротации журналов для конкретных пакетов. Пакеты, предназначенные для использования logrotate
, помещают файлы конфигурации в этот каталог. Эта модульность соответствует духу Linux и увеличивает расширяемость утилиты.Файлы конфигурации содержат аналогичные директивы и пользовательские файлы журналов, где это применимо. Вы также можете создать свой собственный файл конфигурации для обработки любого файла журнала по вашему выбору. Просто дайте файлу имя, добавьте файл журнала для обработки и поместите его в этот каталог. Наконец, есть директивы для файлов журналов без пакетов-владельцев, таких как wtmp
и других файлов системного журнала. Страница man
наполнена большим количеством директив, и пользователям, которым требуется более конкретная ротация, я настоятельно рекомендую вам взглянуть на нее.
/etc/logrotate.d
К счастью, я много говорил о каталоге /etc/logrotate.d
, поэтому без лишних слов позвольте мне показать вам содержимое этого каталога, чтобы донести до дома идеи, о которых мы говорили ранее.
И на всякий случай взглянем на файл конфигурации Samba.
Можете ли вы заметить, насколько он похож на logrotate.conf
? Прежде чем я задерну шторы на этом изделии, давайте просто пробежимся по некоторым директивам в этом файле:
/ var / log / samba / *
— файл журнала для ротации.В этом случае это все файлы журнала в каталоге журналов Samba.
notifempty
— Директива о том, что файл не должен вращаться, если он пуст.
olddir / var / log / samba / old
— Место для хранения старых повернутых журналов.
missingok
— предотвращает выдачу ошибки logrotate
, если файл журнала отсутствует.
copytruncate
— Не закрывать файл журнала. Сделайте копию, которая будет повернутым, переименованным файлом, а затем обрежьте файл журнала до нулевого размера
.
Вы можете догадаться, что делает директива sharedscripts
? Не нужно гадать — обратитесь к странице man
.
Подведение итогов
Надеюсь, этого достаточно, чтобы вы начали работать с журналами. Logrotate
— простая, но мощная утилита ротации с открытым исходным кодом. До следующего поста, желаю счастливого обращения!
[Бесплатный онлайн-курс: технический обзор Red Hat Enterprise Linux. ]
.
Centos / Linux настройка logrotate до максимального размера файла для всех журналов
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
.
Максимальное руководство по командам Logrotate с 10 примерами
Эффективное управление файлами журналов — важная задача системного администратора Linux.
В этой статье мы обсудим, как выполнять следующие операции с файлом журнала с помощью утилиты UNIX logrotate .
- Повернуть файл журнала, когда размер файла достигнет определенного размера
- Продолжить запись информации журнала во вновь созданный файл после ротации старого файла журнала
- Сжать повернутые файлы журнала
- Укажите параметр сжатия для повернутых файлов журнала
- Поверните старые файлы журналов с указанием даты в имени файла
- Выполнять пользовательские сценарии оболочки сразу после ротации журнала
- Удалить старые повернутые файлы журнала
1.Файлы конфигурации Logrotate
Ниже приведены ключевые файлы, о которых вам следует знать для правильной работы logrotate.
/ usr / sbin / logrotate — Сама команда logrotate.
/etc/cron.daily/logrotat e — Этот сценарий оболочки ежедневно выполняет команду logrotate.
$ cat /etc/cron.daily/logrotate #! / bin / sh / usr / sbin / logrotate /etc/logrotate.conf EXITVALUE = $? если [$ EXITVALUE! = 0]; тогда / usr / bin / logger -t logrotate "ALERT аварийно завершил работу с [$ EXITVALUE]" фи выход 0
/ etc / logrotate.conf — в этом файле указывается конфигурация ротации журналов для всех файлов журналов.
$ cat /etc/logrotate.conf еженедельно повернуть 4 Создайте включить /etc/logrotate.d / var / log / wtmp { ежемесячно минимальный размер 1M создать 0664 root utmp повернуть 1 }
/etc/logrotate.d — Когда в системе установлены отдельные пакеты, они сбрасывают информацию о конфигурации ротации журналов в этот каталог.Например, ниже представлена информация о конфигурации поворота журнала yum.
$ кот /etc/logrotate.d/yum /var/log/yum.log { пропавший без вести непустой размер 30k ежегодно создать 0600 root root }
2. Параметр размера Logrotate: поверните файл журнала, когда размер файла достигнет определенного предела.
Если вы хотите ротацию файла журнала (например, /tmp/output.log) на каждый 1 КБ, создайте logrotate.conf, как показано ниже.
$ cat logrotate.conf /tmp/output.log { размер 1k создать 700 баллов балла повернуть 4 }
Эта конфигурация logrotate имеет следующие три варианта:
- size 1k — logrotate запускается, только если размер файла равен (или больше) этого размера.
- create — повернуть исходный файл и создать новый файл с указанными правами, пользователем и группой.
- rotate — ограничивает количество ротаций файла журнала. Таким образом, будут сохранены только последние 4 повернутых файла журнала.
Размер файла output.log до logrotation:
$ ls -l /tmp/output.log -rw-r - r-- 1 балла балла 25868 09.06.2010 21:19 /tmp/output.log
Теперь запустите команду logrotate, как показано ниже. Опция -s указывает имя файла для записи статуса logrotate.
$ logrotate -s / var / log / logstatus logrotate.conf
Примечание: всякий раз, когда вам требуется ротация журналов для некоторых файлов, подготовьте конфигурацию logrotate и запустите команду logroate вручную.
После logrotation следующий размер output.log:
$ ls -l / tmp / output * -rw-r - r-- 1 балла балла 25868 2010-06-09 21:20 output.log.1 -rwx ------ 1 балла балла 0 2010-06-09 21:20 output.log
В конечном итоге это будет продолжаться после настройки ротационных файлов журнала.
- output.log 4.
- output.log.3
- output.log.2
- output.log.1
- output.log
Пожалуйста, помните, что после ротации журнала файл журнала, соответствующий службе, все равно будет указывать на повернутый файл (output.log.1) и продолжает писать в нем. Вы можете использовать описанный выше метод, если хотите чередовать apache access_log или error_log каждые 5 МБ.
В идеале вам следует изменить /etc/logrotate.conf, чтобы указать информацию logrotate для определенного файла журнала.
Также, если у вас огромные файлы журналов, вы можете использовать: 10 замечательных примеров для просмотра огромных файлов журналов в Unix
3. Опция Logrotate copytruncate: Продолжить запись информации журнала во вновь созданный файл после ротации старого файла журнала.
$ cat logrotate.conf /tmp/output.log { размер 1k копировать повернуть 4 }
copytruncate дает команду logrotate создать копию исходного файла (т.е. повернуть исходный файл журнала) и усечь исходный файл до нулевого байтового размера. Это помогает соответствующей службе, принадлежащей этому файлу журнала, записывать в нужный файл.
При работе с файлами журнала вы можете найти замену sed, советы по удалению sed.
4. Параметр сжатия Logrotate: сжатие повернутых файлов журнала
Если вы используете параметр сжатия, как показано ниже, повернутые файлы будут сжаты с помощью утилиты gzip.
$ cat logrotate.conf /tmp/output.log { размер 1k копировать создать 700 баллов балла повернуть 4 компресс }
Вывод сжатого файла журнала:
$ ls / tmp / output * output.log.1.gz output.log
5.Параметр Logrotate dateext: повернуть старый файл журнала с датой в имени файла журнала
$ cat logrotate.conf /tmp/output.log { размер 1k копировать создать 700 баллов балла dateext повернуть 4 компресс }
После указанной выше конфигурации вы увидите дату в повернутом файле журнала, как показано ниже.
$ ls -lrt / tmp / output * -rw-r - r-- 1 балла балла 8980 2010-06-09 22:10 output.log-20100609.gz -rwxrwxrwx 1 балла балла 0 2010-06-09 22:11 output.log
Это будет работать только один раз в день. Потому что, когда он попытается выполнить ротацию в следующий раз в тот же день, ранее повернутый файл будет иметь то же имя файла. Таким образом, logrotate не будет успешным после первого запуска в тот же день.
Обычно вы можете использовать tail -f для просмотра вывода файла журнала в реальном времени. Вы даже можете объединить несколько выходных данных tail -f и отобразить их на одном терминале.
6. Logrotate ежемесячно, ежедневно, еженедельно: ротация файла журнала еженедельно / ежедневно / ежемесячно
За ежемесячную ротацию один раз,
$ cat logrotate.conf /tmp/output.log { ежемесячно копировать повернуть 4 компресс }
Добавьте еженедельное ключевое слово, как показано ниже, для ротации еженедельного журнала.
$ cat logrotate.conf /tmp/output.log { еженедельно копировать повернуть 4 компресс }
Добавьте ежедневное ключевое слово, как показано ниже, для ежедневной ротации журнала. Вы также можете чередовать журналы ежечасно.
$ cat logrotate.conf / tmp / output.журнал { повседневная копировать повернуть 4 компресс }
7. Logrotate postrotate endcript option: запускать собственные сценарии оболочки сразу после ротации журнала.
Logrotate позволяет запускать собственные сценарии оболочки после завершения ротации файла журнала. Следующая конфигурация указывает, что он выполнит myscript.sh после logrotation.
$ cat logrotate.conf /tmp/output.log { размер 1k копировать повернуть 4 компресс постротация / главная / бала / myscript.ш конечный сценарий }
8. Параметр maxage Logrotate: удалить старые повернутые файлы журнала
Logrotate автоматически удаляет повернутые файлы через определенное количество дней. В следующем примере показано, что повернутые файлы журнала будут удалены через 100 дней.
$ cat logrotate.conf /tmp/output.log { размер 1k копировать повернуть 4 компресс максимум 100 }
9. Параметр Logrotate missingok: не возвращать ошибку, если файл журнала отсутствует.
Вы можете игнорировать сообщение об ошибке, когда фактический файл недоступен, используя эту опцию, как показано ниже.
$ cat logrotate.conf /tmp/output.log { размер 1k копировать повернуть 4 компресс пропавший без вести }
10. Logrotate compresscmd и параметр compressext: S указать команду сжатия для ротации файла журнала
$ cat logrotate.conf /tmp/output.log { размер 1k копировать Создайте компресс compresscmd / bin / bzip2 compressext.bz2 повернуть 4 }
Выше указаны следующие параметры сжатия:
- compress — Указывает, что сжатие должно быть выполнено.
- compresscmd — Укажите, какой тип команды сжатия следует использовать. Например: / bin / bzip2
- compressext — укажите расширение для повернутого файла журнала. Без этой опции повернутый файл имел бы расширение по умолчанию как .gz. Итак, если вы используете bzip2 compresscmd, укажите расширение как.bz2, как показано в примере выше.
Если вам понравилась эта статья, возможно, вам также понравится ..
.
logrotate (8) — справочная страница Linux
Имя
logrotate — вращает, сжимает и отправляет системные журналы по почте
Сводка
logrotate [ -dv ] [ -f | — сила ] [ -s | — состояние файл ] файл_конфигурации ..
Описание
logrotate разработан для упрощения администрирования систем, которые генерируют большое количество файлов журналов. Это позволяет автоматическое вращение, сжатие, удаление,
и рассылка файлов журналов.Каждый файл журнала может обрабатываться ежедневно, еженедельно, ежемесячно или когда он становится слишком большим.
Обычно logrotate запускается как ежедневное задание cron. Он не будет изменять журнал несколько раз за один день, если критерий для этого журнала не основан на
размер журнала и logrotate запускается несколько раз каждый день, или если не используется параметр -f или —force .
В командной строке можно указать любое количество файлов конфигурации. Более поздние файлы конфигурации могут переопределить параметры, указанные в более ранних файлах, поэтому порядок, в котором
logrotate конфигурационные файлы перечислены очень важно.Обычно следует использовать один файл конфигурации, который включает любые другие необходимые файлы конфигурации.
См. Ниже дополнительную информацию о том, как использовать для этого директиву include . Если каталог указан в командной строке, каждый файл в этом
каталог используется как файл конфигурации.
Если аргументы командной строки не указаны, logrotate распечатает информацию о версии и авторских правах, а также краткую информацию об использовании. Если возникнут ошибки
при ротации журналов logrotate выйдет с ненулевым статусом.
Опции
-d, —debug
- Включает режим отладки и подразумевает -v . В режиме отладки никакие изменения не будут внесены в журналы или файл состояния logrotate .
- -f , -force
- Сообщает logrotate принудительное вращение, даже если он не считает это необходимым. Иногда это полезно после добавления новых записей в
logrotate config или, если старые файлы журнала были удалены вручную, так как новые файлы будут созданы, и ведение журнала будет продолжаться правильно. - -m , —mail <команда>
- Сообщает logrotate , какую команду использовать при отправке журналов по почте. Эта команда должна принимать два аргумента: 1) тему сообщения и 2)
получатель. Затем команда должна прочитать сообщение на стандартном вводе и отправить его получателю. Почтовая команда по умолчанию — / bin / mail -s . - -s, —state
- Указывает logrotate использовать файл альтернативного состояния.Это полезно, если logrotate запускается от имени другого пользователя для различных наборов файлов журнала. В
файл состояния по умолчанию — /var/lib/logrotate.status . - —использование
- Печатает короткое сообщение об использовании.
- — -? , — справка
- -Печать справочного сообщения.
- -v , -verbose
- Включает подробный режим.
Файл конфигурации
logrotate считывает все файлы журналов, которые он должен обрабатывать, из серии файлов конфигурации, указанных в командной строке.Каждый
Файл конфигурации может устанавливать глобальные параметры (локальные определения имеют приоритет над глобальными, а более поздние определения заменяют более ранние) и указывать файлы журналов для ротации.
Простой файл конфигурации выглядит так:
# образец файла конфигурации logrotate компресс / var / log / messages { повернуть 5 еженедельно постротация / usr / bin / killall -HUP syslogd конечный сценарий } "/var/log/httpd/access.log" /var/log/httpd/error.log { повернуть 5 почта [email protected] размер 100k общие скрипты постротация / usr / bin / killall -HUP httpd конечный сценарий } / var / log / news / * { ежемесячно повернуть 2 olddir / var / log / новости / старый пропавший без вести постротация kill -HUP 'кошка / var / run / inn.пид ' конечный сценарий нокомпресс }
Первые несколько строк устанавливают глобальные параметры; в этом примере журналы сжимаются после поворота. Обратите внимание, что комментарии могут появляться в любом месте конфигурации.
файл, если первым непробельным символом в строке является #.
В следующем разделе файлов конфигурации определено, как обрабатывать файл журнала / var / log / messages . Журнал будет проходить пять еженедельных ротаций, прежде чем будет
удалено. После ротации файла журнала (но до сжатия старой версии журнала) команда / sbin / killall -HUP syslogd будет
выполнен.
В следующем разделе определяются параметры для /var/log/httpd/access.log и /var/log/httpd/error.log . Они меняются, когда он растет
размером более 100 КБ, а старые файлы журналов отправляются (без сжатия) по адресу [email protected] после 5 смен, а не удаляются. В
sharedscripts означает, что сценарий postrotate будет запускаться только один раз (после сжатия старых журналов), а не один раз для каждого журнала, который
повернутый.Обратите внимание, что двойные кавычки вокруг первого имени файла в начале этого раздела позволяют logrotate вращать журналы с пробелами в имени. Обычный
Применяются правила цитирования оболочки с поддержкой символов ‘, «и \.
Последний раздел определяет параметры для всех файлов в / var / log / news . Каждый файл обновляется ежемесячно. Это считается одиночным
Директива вращения, и если ошибки возникают для более чем одного файла, файлы журнала не сжимаются.
Пожалуйста, используйте подстановочные знаки осторожно.Если вы укажете *, logrotate повернет все файлы, включая ранее повернутые. Способ обойти это — использовать
директива olddir или более точный подстановочный знак (например, * .log).
Вот дополнительная информация о директивах, которые могут быть включены в файл конфигурации logrotate :
- сжать
- Старые версии файлов журналов по умолчанию сжимаются с помощью gzip (1). Также nocompress .
- сжатие
- Указывает, какую команду использовать для сжатия файлов журнала. По умолчанию — gzip . См. Также compress .
- распаковать cmd
- Указывает, какую команду использовать для распаковки файлов журнала. По умолчанию gunzip .
- сжатие
- Указывает, какое расширение использовать для сжатых файлов журнала, если сжатие включено. Значение по умолчанию соответствует настроенной команде сжатия.
- варианты компрессии
- Параметры командной строки могут быть переданы программе сжатия, если она используется. По умолчанию для gzip (1) установлено «-9» (максимальное сжатие).
- копия
Сделайте копию файла журнала, но не меняйте оригинал. Эту опцию можно использовать, например, для создания снимка текущего файла журнала или
когда какой-либо другой утилите требуется обрезать или проанализировать файл. Когда используется эта опция, опция create не будет иметь никакого эффекта, так как старый файл журнала останется
на месте.- copytruncate
- Обрежьте исходный файл журнала на месте после создания копии вместо перемещения старого файла журнала и, при необходимости, создания нового. Его можно использовать, когда
некоторая программа не может получить указание закрыть свой файл журнала и, таким образом, может продолжать запись (добавление) в предыдущий файл журнала бесконечно. Обратите внимание, что есть очень маленький
временной интервал между копированием файла и его усечением, поэтому некоторые данные журнала могут быть потеряны. Когда используется эта опция, опция создать не будет иметь
эффект, поскольку старый файл журнала остается на месте. - создать режим группы владельцев
- Сразу после ротации (до запуска сценария postrotate ) создается файл журнала (с тем же именем, что и у только что повернутого файла журнала).
mode указывает режим для файла журнала в восьмеричном формате (то же, что и chmod (2)), владелец указывает имя пользователя, которому будет принадлежать файл журнала, и
группа указывает группу, к которой будет принадлежать файл журнала. Любой из атрибутов файла журнала может быть опущен, и в этом случае эти атрибуты для нового файла
будет использовать те же значения, что и в исходном файле журнала для пропущенных атрибутов.Этот параметр можно отключить с помощью параметра nocreate . - ежедневно
Файлы журнала меняются каждый день.
- dateext
- Архивируйте старые версии файлов журналов, добавляя ежедневное расширение, например ГГГГММДД, вместо простого добавления числа. Расширение можно настроить с помощью
формат даты вариант. - dateformat format_string
- Укажите расширение для dateext , используя нотацию, аналогичную функции strftime (3).Разрешены только спецификаторы% Y% m% d и% s. По умолчанию
значение -% Y% m% d. Обратите внимание, что также символ, отделяющий имя журнала от расширения, является частью строки формата даты. Системные часы должны быть установлены после сентября.
9th 2001, чтобы% s работал правильно. Обратите внимание, что метки даты, сгенерированные этим форматом, должны быть лексически сортируемыми (т.е. сначала год, затем месяц, затем
день. например, 2001/12/01 нормально, но 01/12/2001 — нет, поскольку 01/11/2002 будет сортироваться ниже, а позже). Это потому, что при использовании опции повернуть ,
logrotate сортирует все повернутые имена файлов, чтобы определить, какие файлы журналов старше и должны быть удалены. - задержка сжатия
- Отложить сжатие предыдущего файла журнала до следующего цикла ротации. Это действует только при использовании в сочетании с compress . Его можно использовать
когда некоторая программа не может получить команду закрыть свой файл журнала и, таким образом, может продолжить запись в предыдущий файл журнала в течение некоторого времени. - добавочный доб
- Файлы журнала с расширением ext могут сохранять его после ротации. Если используется сжатие, расширение сжатия (обычно .gz ) появляется после
доб . Например, у вас есть файл журнала с именем mylog.foo, и вы хотите преобразовать его в mylog.1.foo.gz вместо mylog.foo.1.gz. - пусто
- Повернуть файл журнала, даже если он пуст, переопределив параметр notifempty (по умолчанию ifempty ).
- включить file_or_directory
- Считывает файл, указанный в качестве аргумента, как если бы он был включен в строку, где появляется директива include .Если указан каталог, большинство файлов в
этот каталог читается в алфавитном порядке перед продолжением обработки включающего файла. Игнорируются только файлы, которые не являются обычными.
файлы (например, каталоги и именованные каналы) и файлы, имена которых заканчиваются одним из расширений табу, как указано в директиве tabooext . В
Директива include может не отображаться в определении файла журнала. - почта адрес
- Когда журнал перестает существовать, он пересылается на адрес .Если конкретный журнал не должен генерировать почту, директива nomail может
использоваться. - первая почта
- При использовании команды mail отправьте по почте только что повернутый файл вместо файла, срок действия которого истекает.
- Майласт
- При использовании команды mail отправьте по почте файл, срок действия которого истекает, а не только что повернутый файл (это значение по умолчанию).
- maxage количество
- Удалить ротацию журналов старше
дней.Возраст проверяется только в том случае, если файл журнала должен быть повернут. Файлы отправляются на указанный адрес.
если настроено maillast и mail . - минимальный размер размер
- Файлы журналов чередуются, когда они увеличиваются до размера байта, но не раньше дополнительно указанного временного интервала ( ежедневно , еженедельно ,
ежемесячно или ежегодно ). Соответствующий параметр размер аналогичен, за исключением того, что он является взаимоисключающим с параметрами временного интервала, и он вызывает
файлы журнала для ротации без учета последнего времени ротации.При использовании minsize размер и временная метка файла журнала
считается. - Отсутствует
- Если файл журнала отсутствует, перейдите к следующему, не выдавая сообщения об ошибке. См. Также nomissingok .
- ежемесячно
- Файлы журнала меняются при первом запуске logrotate за месяц (обычно это первый день месяца).
- нокомпресс
- Старые версии файлов журнала не сжимаются.См. Также compress .
- без копий
Не копируйте исходный файл журнала и не оставляйте его на месте. (это отменяет параметр copy ).
- nocopytruncate
- Не обрезать исходный файл журнала на месте после создания копии (это отменяет параметр copytruncate ).
- без создания
- Новые файлы журналов не создаются (это отменяет параметр create ).
- нодлайкомпресс
- Не откладывать сжатие предыдущего файла журнала до следующего цикла ротации (это отменяет параметр delaycompress ).
- nodateext
- Не архивировать старые версии файлов журнала с расширением даты (это переопределяет параметр dateext ).
- номинальный
Не пересылайте старые файлы журналов по любому адресу.
- номиссингок
- Если файл журнала не существует, выдайте ошибку.Это значение по умолчанию.
- noolddir
- Журналы чередуются в том же каталоге, в котором обычно находится журнал (это отменяет параметр olddir ).
- без общих сценариев
- Запустить сценарии prerotate и postrotate для каждого файла журнала, который вращается (это значение по умолчанию и отменяет параметр sharedscripts ).
Абсолютный путь к файлу журнала передается сценарию в качестве первого аргумента.Если скрипты завершились с ошибкой, остальные действия не будут выполнены для
только затронутый журнал. - номер
- Не используйте shred при удалении старых файлов журнала. См. Также shred .
- не пусто
- Не вращайте журнал, если он пуст (это отменяет параметр ifempty ).
- olddir каталог
- Журналы перемещаются в каталог для ротации.Каталог должен находиться на том же физическом устройстве, что и ротационный файл журнала, и предполагается, что он
относиться к каталогу, содержащему файл журнала, если не указан абсолютный путь. При использовании этой опции все старые версии журнала попадают в
Справочник . Эта опция может быть отменена опцией noolddir . - postrotate / endcript
- Строки между postrotate и endcript (обе должны появляться в строках сами по себе) выполняются (с использованием / bin / sh ) после
файл журнала повернут.Эти директивы могут появляться только внутри определения файла журнала. Обычно абсолютный путь к файлу журнала передается в качестве первого аргумента функции
сценарий. Если указано sharedscripts , в сценарий передается весь шаблон. См. Также предварительное вращение . См. общих скриптов и
nosharedscripts для обработки ошибок. - предварительный поворот / конечный сценарий
- Строки между prerotate и endcript (обе должны появляться в строках сами по себе) выполняются (с использованием / bin / sh ) перед
файл журнала поворачивается, и только если журнал действительно будет повернут.Эти директивы могут появляться только внутри определения файла журнала. Обычно абсолютный путь к
файл журнала передается сценарию в качестве первого аргумента. Если указано sharedscripts , в сценарий передается весь шаблон. Смотрите также
постротация . См. sharedscripts и nosharedscripts для обработки ошибок. - первое действие / конечный сценарий
- Строки между firstaction и endcript (обе должны появляться в строках сами по себе) выполняются (с использованием / bin / sh ) один раз перед
все файлы журналов, соответствующие шаблону с подстановочными знаками, поворачиваются перед запуском сценария предварительного вращения и только в том случае, если хотя бы один журнал действительно будет повернут.Эти
директивы могут появляться только внутри определения файла журнала. В качестве первого аргумента скрипту передается весь шаблон. Если сценарий завершается с ошибкой, дальше
обработка сделана. Также , последнее действие . - lastaction / endcript
- Строки между lastaction и endcript (обе должны появляться в строках сами по себе) выполняются (с использованием / bin / sh ) один раз после
все файлы журналов, соответствующие шаблону с подстановочными знаками, поворачиваются после запуска сценария postrotate и только в том случае, если ротируется хотя бы один журнал.Эти директивы могут только
появляются внутри определения файла журнала. В качестве первого аргумента скрипту передается весь шаблон. Если сценарий завершается с ошибкой, отображается только сообщение об ошибке
(так как это последнее действие). См. Также первое действие . - повернуть счет
- Файлы журнала меняются на отсчет раза перед тем, как быть удалены или отправлены по адресу, указанному в директиве mail . Если count 0, старый
версии удаляются, а не поворачиваются. - размер размер
- Файлы журнала поворачиваются, только если они увеличиваются до размера байта. Если за размером следует k , предполагается, что размер указан в килобайтах. Если
используется M , размер указывается в мегабайтах, а если используется G , размер указывается в гигабайтах. Итак, размер 100 , размер 100
.