Какой инструмент ротации бревен вы предпочитаете?
Какой инструмент ротации бревен вы предпочитаете?
Ответы:
По моему опыту, logrotate великолепен. Это очень гибкий и хорошо работает с большинством программного обеспечения.
Однако с этим есть некоторые проблемы, и поскольку cronolog - это прежде всего средство ротации веб-журналов, я напишу свой опыт работы с logrotate + apache, который был проблематичным:
При ротации журналов мы должны уведомить apache о том, что журнал вращается, как если бы logrotate переименовал access.log в access.log.1, apache продолжит запись в access.log.1, так же как запись в inode, и переименование файла не влияет на номер инода.
В debian etch (и, возможно, во многих других дистрибутивах) logrotate используется для вращения журналов apache. Теперь у apache есть изящный перезапуск, который советует дочерним процессам apache завершать работу после завершения обслуживания существующих соединений, apache затем перечитывает свою конфигурацию, порождает новые дочерние процессы, которые начинают запись в новый файл журнала (в случае, если предыдущий был повернутый).
Это звучит как отличное решение, однако изящный перезапуск не всегда работает в определенных условиях (например, при большой нагрузке), поэтому разработчики Debian решили использовать перезапуск apache вместо изящного перезапуска в конфигурации apache logrotate. К сожалению, это приводит к одновременному разрыву всех соединений, что очень плохо для сильно загруженных сайтов. Кроме того, перезапуск apache также может вызвать такие проблемы, как остановка и не запуск apache (также в определенных ситуациях загрузки), подробности см. В ссылках об ошибках ниже.
Суть в том, что logrotate великолепен, но может привести к определенным проблемам для определенных программ. У меня нет большого опыта работы с cronolog, но поскольку он записывает журналы через канал, он не требует перезагрузки apache при ротации файлов журналов, что в основном решает все, что описано выше.
Связанные ошибки logrotate / apache debian:
Я предпочитаю cronolog, но это не очень сильное предпочтение.
logrotate где запускается cron, и если система по какой-то причине не работает, когда должно было произойти вращение, то ваши файлы журнала не будут вращаться.
Мне также нравится, когда в файлах журналов указывается дата (% Y% m.combined.access.log), потому что я храню эти журналы в течение длительного времени. В большинстве систем по умолчанию apache logrotate называет файлы access.log, access.log.1 и т. Д. Может быть возможно использовать дату в лог-файлах с logrotate, но я не мог понять, как это сделать в прошлый раз, когда я смотрел.
Только когда-либо использовал logrotate. Это то, что Debian использует по умолчанию, и у меня никогда не было жалоб на это.
Я почти исключительно использовать cronolog
более logrotate
.
logrotate
поставляется с Debian, и я позволяю ему продолжать работать для системных служб, таких как журналы почтового сервера. Но для Apache и lighttpd
лог-файлов это все cronolog
.
Одна из причин, почему я использую cronolog
это то, что вся конфигурация происходит в строке файла журнала конфигурации веб-сервера
например, в lighttpd
файле конфигурации вы можете поместить:
accesslog.filename = "|/usr/bin/cronolog --symlink=/var/log/webs/access.log /var/log/webs/%Y/%W-access.log"
И все получают новый файл журнала каждую неделю без какой-либо другой конфигурации. Или вы можете проявить творческий подход и сделать что-то вроде:
accesslog.filename = "|/usr/bin/cronolog --symlink=/var/log/webs/access.log /var/log/webs/%Y/%m/%a-access.log"
И получите файл журнала, который показывает трафик по дням недели. например, все воскресенья, все вторники.
Что еще лучше, даже если сервер не работает какое-то время, при перезапуске будет использоваться правильный файл журнала.