Cron не стартует logrotate
Всем привет. Появилась необходимость, создать ротацию лог файла, так как уж больно аудит забивает логи. конфиг /etc/logrotate.d/parsec выглядит следующим образом:
Что-то у вас много нестыковок. Сейчас скрипты из /etc/cron.daily запускаются anacron’ом. Потом если файл большого размера и вы ограничиваете его размер, то тогда нужно запускать не раз в день, а чаще. И обычно пишущему процессу посылают сигнал, а не restart, и в любом случае, после ротации файла, а не до (то есть postrotate).
Извиняюсь, напутал с конфигом. На деле он следующего вида.
Не совсем. Просто проверка размера файла происходит только в момент вызова logrotate. Если запускать logrotate раз в сутки, то указание размера смысла не имеет, будет срабатывать ″daily″.
Если данных в лог пишется много и хочется как-то ограничить размер, то нужно вызывать logrotate чаще. Хотя 2к это совсем мало — один экран текста.
Прочитайте что-нибудь про команды sh (bash). Эта строка проверяет наличие исполняемого файла anacron и если он есть ничего не делает. То есть, если anacron есть, то он запускает задачи из /etc/cron.daily, при условии, что не редактировался дефолтный конфиг в /etc/anacrontab и не удалялся файл /etc/cron.hourly/0anacron.
И anacron не запускает задание прямо в 6:25, он запускает у указанный в конфиге промежуток времени.
Можете поместить скрипт logrotate в /etc/cron.hourly или отредактировать /etc/crontab, чтобы logrotate запускался раз в час.
Допустим в конфиге ротации у меня указан параметр daily. Если перенести его в cron.hourly, то будет ли происходить ротация каждый час, если указан параметр daily?
Нет, часовой ротации не будет. Будет ротация по размеру файла (если он указан).
Logrotate parsec
Rayman привет, получилось ли решить данную проблему, столкнулся с такой же темой, на астре 1.5 parsec сыпит лог как бешенный, а logrotate ну никак не хочет ротировать.
привет! Да получилось, вот Здесь хорошо описано
Источник
Ротация логов в Linux и FreeBSD с помощью logrotate
С помощью утилиты logrotate можно настроить автоматическое удаление (чистку) лог-файлов. В противном случае, некоторые логи могут заполнить все дисковое пространство, что приведет к проблемам в работе операционной системы.
Установка
Чаще всего, в Linux данная утилита установлена по умолчанию. Если это не так, установка выполняется следующими командами.
Ubuntu / Debian:
apt-get install logrotate
CentOS / Red Hat:
yum install logrotate
FreeBSD:
pkg install logrotate
Утилита не работает как служба, поэтому нет необходимости в ее запуске или перезагрузке (logrotate start или logrotate restart делать не нужно).
Настройка
Для приложение, ротация логов настраивается в отдельных файлах, расположенных по пути /etc/logrotate.d/ (во FreeBSD — /usr/local/etc/logrotate.d/).
К примеру, нам необходимо настроить ротацию лога для logstash-forwarder. Создаем файл со следующим содержимым:
/var/log/logstash-forwarder/* <
rotate 30
size=10M
missingok
notifempty
daily
compress
delaycompress
maxage 30
create 0644 root root
postrotate
/usr/bin/systemctl restart logstash-forwarder
endscript
>
- rotate 30 — хранить последние 30 ротированных файлов. Остальные удалять.
- size=10M — пока размер лог-файла не превысит 10 мегабайт, он не будет ротироваться.
- missingok — если файла не существует, не выкидывать ошибку.
- notifempty — если файл пустой, не выполнять никаких действий.
- daily — делать ротацию каждый день.
- compress — сжимать ротированные файлы.
- delaycompress — сжимать только предыдущий журнал. Позволяет избежать ошибок, связанных с отсутствием доступа к используемому файлу.
- maxage 30 — хранить ротированные файлы за последние 30 дней. Остальные удалять.
- create 0644 root root — создать новый лог-файл после ротирования.
- postrotate . endscript — скрипт, который необходимо выполнить после чистки лога.
* /var/log/logstash-forwarder/* — путь к файлу, который нужно ротировать. * указывает, что нужно чистить все файлы, которые расположены в каталоге /var/log/logstash-forwarder.
* напомню, что во FreeBSD, путь будет /usr/local/etc/logrotate.d/logstash.
При настройке необходимо проверять работу сервиса после ротации лога. Некоторые службы могут перестать работать без лог-файла. В данном случае, необходимо создавать новый (create). Также, в некоторых случаях, сервис необходимо перезапускать, так как при создании нового файла меняется его дескриптор.
Запуск вручную
Запуск выполняется со следующим синтаксисом:
logrotate -f /etc/logrotate.d/logstash
Автоматический запуск
Задание на автоматический запуск создается по умолчанию в файле /etc/cron.daily/logrotate. Если изучить его содержимое, мы увидим, что идет запуск logrotate, который читает все файлы в директории /etc/logrotate.d/ и выполняющий для каждого из них ротацию.
Если для какого-то приложения необходимо выполнять ротацию лога по особому расписанию, узнаем полный путь до утилиты logrotate:
* в моем случае, это было /usr/sbin/logrotate.
Получив путь, создаем правило в cron:
0 0 * * * /usr/sbin/logrotate -f /etc/logrotate.d/logstash
* в данном примере в 00:00 будет запускаться logrotate и чистить логи с нашей настройкой для logstash-forwarder.
Источник
Не отрабатывает logrotate
Коллеги, добрый день. Помогите пожалуйста. Настроил logrotate для squid, но он не хочет работать, не понимаю почему.
Я что-то упустил и дополнительно нужно где-то настроить удаление старых файлов?
Попробовал принудительно выполнить очистку через logrotate -f /etc/logrotate.d/squid -d. Вижу что скрипт отрабатывает:
Но в директориях старые файлы остаются, ничего не удаляется.
Все верно и я не так понял принцип работы logrotate или все же файлы должны быть удалены?
Почистил всю папку сам, оставил только access.log и cache.log в соответствующих папках. Еще раз запустил logrotate вручную. Непонятно почему в логе четко написано renaming /ClFS/squid/logs/access.log to /ClFS/squid/logs/access.log.1, и так же для cache.log, но в папках остались только access.log и cache.log — ничего не переименовалось и не создалось.
logrotate удаляет только те файлы, в пределах которых он работает. Т.е. если раньше не было параметра compress, то создавались файлы вида *.1, *.2, вот такие и удалялись бы. Теперь есть compress, значит удаляться будут *.1.gz, *.2.gz, а на несжатые он внимания не обращает.
Когда происходит ротация лога, он переименовывается в какой-то, если другой лог с таким именем уже есть, тогда logrotate переключается на переименование этого другого. И так далее, пока не дойдёт до лимита переименований (rotate N). Вот последний он уже не переименовывает, а удаляет.
Любые другие файлы, не участвующие в этом процессе, logrotate не замечает. Т.е., например, access.log.06-09.09 не удалится никогда, нужно чистить вручную.
Спасибо, стало немного понятнее. Но по идее, если я почистил всё, оставив только access.log и cache.log, то при запуске
Почитал еще несколько тем с аналогичной проблемой, там у людей logrotate просто внезапно начинал работать. Не знаю, может у меня завтра всё станет нормально после ручной чистки лишнего.
Не знаю, может у меня завтра всё станет нормально после ручной чистки лишнего.
Если только тестируете можно не ждать, просто поправить цифирки вот здесь /var/lib/logrotate/status
Ещё в logrotate есть такой момент, как обработка новых логов: если какой-то лог добавляется в обработку впервые, для него в /var/lib/logrotate/status (или /var/lib/logrotate.status) ещё нет пометки с датой. Поэтому при первом запуске logrotate ротацию этого лога не выполняет, просто ставит пометку, а уже при последующих делает ротацию.
Запуск через logrotate -f /etc/logrotate.d/squid не совсем корректный, т.к. при этом не читаются настройки из общего /etc/logrotate.conf.
Также при проблемах помогает просмотр ошибок в режиме отладки:
Не, это сервер в проде, на нём 3к юзеров. Сегодня проверил — пока в папке есть основной access.log и 5 файлов .log.0, log.1.gz, log.2, log.2.gz и log.3. Завтра еще проверю, надеюсь количество не вырастет.
Большое всем спасибо за помощь!
К сожалению, не заработало. За эти дни накопились вот такие файлы:
Источник
Logrotate maxage не работает
Проблема такая: Система Debia, почтовый релей, куча логов, которые забивают весь диск.
Настроил logrotate следующим образом:
weekly
rotate 4
create
compress
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 0664 root utmp
rotate 1
>
/var/log/mail.log <
missingok
daily
rotate 4
create
compress
>
# system-specific logs may be configured here
/var/log/syslog <
missingok
daily
rotate 4
create
compress
>
В результате лог mail.log обрабатывается вообще непонятно как. То он вообще не ротируется, то бывает проходит ротация, mail.log весит 0 и в него ничего не пишется, а увеличивается mail.log.1.gz. С логом syslog вообще ничего не происходит — он уже 5 гиг весит.
logrotate запускается каждый день по крону.
Что я делаю не так, что и где надо прописать, чтобы нормально работало?
Оглавление |
|
Сообщения по теме | [Сортировка по времени | RSS] |
1. «Проблемы с logrotate и syslog» | |
Сообщение от konst | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
3. «Проблемы с logrotate и syslog» | |
Сообщение от konstantin811 | |
А это зачем? У меня проблемы с /var/log/syslog, что он не ротируется | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
5. «Проблемы с logrotate и syslog» | |
Сообщение от konst | |
А в логах крона что пишут по этому поводу? | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
6. «Проблемы с logrotate и syslog» | |
Сообщение от konstantin811 | |
Так syslog я всё-таки прибил, щас новый уже надопился около 300 мб, с 12. Так за 3 дня и не было ротации. Самое интересное, /var/log/messages ротация происходит, хотя вроде вообще нигде не прописано. | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
9. «Проблемы с logrotate и syslog» | |
Сообщение от ronin | |
Всё дело в том, как серверное приложение пишет логи. Есть 2 варианта: В случае с Вашим /var/log/mail.log происходит именно то, что описано в п. 2 выше — МТА открыл файл, запомнил inod, и ему начхать, что Вы ротейтаете логи. Поэтому необходимо вставить в postrotate-секцию перезапуск приложения, чтоб оно открывало новый лог-файл после ротаци предыдущего (имя файла будет то же, но inod уже другой). | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
10. «Проблемы с logrotate и syslog» | |
Сообщение от pavel_simple | |
пора-бы знать что у debian’а есть свои небольшие приколы относительно основных журнальных файлов | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
11. «Проблемы с logrotate и syslog» | |
Сообщение от konstantin811 | |
Ну а я вот к сожалению не знал. Так значит мне вообще не надо настраивать ротацию mail.log и syslog в logrotate? Или надо всё это настраивать через syslogd-listfiles? Что-то я не разобрался с этими костылями. >пора-бы знать что у debian’а есть свои небольшие приколы относительно основных журнальных | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
12. «Проблемы с logrotate и syslog» | |
Сообщение от konstantin811 | |
Огромное спасибо за разъяснения! Но как мне сделать это без перезагрузки postfix’a ? | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
13. «Проблемы с logrotate и syslog» | |
Сообщение от ronin | |
Сложно сказать почему логротейт не срабатывает. Может просто crond не запущен? >Но как мне сделать это без перезагрузки postfix’a ? Именно так, как Вам подсказали ранее — вставить соответствующую команду рестарта постфикса в конфиг логротейта. И никак иначе. | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
14. «Проблемы с logrotate и syslog» | |
Сообщение от ronin | |
В принципе, если МТА очень критичный и перезапуск строго противопоказан, то можно настроить syslogd на запись логов мейлсервера на удаленную машину. Тогда ротация логов на удаленной машине никоим образом не будет влиять на Ваш мейлсервер. А если придерживаться локальной записи логов и ротации, то действительно, перезапуск постфикса при ротации логов обязателен. man 5 syslog.conf | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
15. «Проблемы с logrotate и syslog» | |
Сообщение от konstantin811 | |
Да наверно crond запущен. Он и в /etc/rc3 есть и есть скрипт, который чистин папку с карантином ночью, запускается из крона — каждый день отрабатывает. >>Но как мне сделать это без перезагрузки postfix’a ? гм. и для sysloga ? | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
16. «Проблемы с logrotate и syslog» | |
Сообщение от konst | |
как в debian — не знаю. | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
17 . «Проблемы с logrotate и syslog» | |
Сообщение от konstantin811 | |
Да запускал я это: вот кусок из вывода команды /usr/sbin/logrotate -v -f /etc/logrotate.conf rotating pattern: /var/log/mail.log forced from command line (4 rotations) rotating pattern: /var/log/syslog forced from command line (4 rotations) В кроне у меня в папочек /etc/cron.daily лежит запускной файл logrotate с содержимым : /usr/sbin/logrotate /etc/logrotate.conf | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
18 . «Проблемы с logrotate и syslog» | |
Сообщение от s_dog | |
постфикс не надо рестартить 🙂 | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
19 . «Проблемы с logrotate и syslog» | |
Сообщение от konstantin811 | |
Это конечно всё хорошо, но: 1. По крону почему то logrotate не срабатывает (различные скрипты по крону у меня отлично работают). | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
20 . «Проблемы с logrotate и syslog» | |
Сообщение от s_dog | |
Лог пишет не постфикс, а сислог, поэтому надо на сислог смотреть. Вот скрипт который у меня на системе запускается: /usr/sbin/logrotate /etc/logrotate.conf 2>&1 | tee $TMPF if [ $EXITVALUE != 0 ]; then rm -f $TMPF | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
21 . «Проблемы с logrotate и syslog» | |
Сообщение от konstantin811 | |
Опять же: это никак не отвечает на мой вопрос. | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
22 . «Проблемы с logrotate и syslog» | |
Сообщение от s_dog | |
/var/log/mail /var/log/mail.info /var/log/mail.warn /var/log/mail.err < /var/log/news/news.crit /var/log/news/news.err /var/log/news/news.notice < | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
23 . «Проблемы с logrotate и syslog» | |
Сообщение от konstantin811 | |
Да, добавил в свой logrotate.conf в секции с mail.log и syslog postrotate postrotate Вручную запустил logrotate : та же картина. Созданы файлы mail.log.1 и syslog.1, куда скорировались mail.log и syslog, соответственно, но запись логов идёт в mail.log.1 и syslog.1, а mail.log syslog пустые | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
24 . «Проблемы с logrotate и syslog» | |
Сообщение от s_dog | |
/etc/init.d/postfix reload — не нужен, лог пишет сислог, он же и открывает файлы. /etc/init.d/syslog reload попробуйте заменить на /etc/init.d/syslog restart | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
25 . «Проблемы с logrotate и syslog» | |
Сообщение от konst | |
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron < | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
26 . «Проблемы с logrotate и syslog» | |
Сообщение от s_dog | |
заметьте, ни sendmail, ни postfix не упомянуты. | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
27 . «Проблемы с logrotate и syslog» | |
Сообщение от konst | |
заметил. У меня именно syslogd пишет сообщения от senmail в /var/log/file | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
2. «Проблемы с logrotate и syslog» | |
Сообщение от Hetzer | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
4. «Проблемы с logrotate и syslog» | |
Сообщение от konstantin811 | |
Простите, но не понял суть Вашего сообщения. Источник |