Каковы плюсы и минусы logrotate против rotatelogs с Apache?

11

Apache предоставляет инструмент под названием rotatelogs, который имеет преимущество не перезапускать apache при ротации логов, что происходит с logrotate. У меня недостаточно опыта, чтобы говорить, достаточно ли критериев для использования rotatelogs вместо logrotate.

Мои вопросы: есть ли у кого-нибудь реальный жизненный опыт использования одного из этих двух инструментов или каков их вклад?

Что бы вы порекомендовали и почему?

Мохан Гулати
источник

Ответы:

7

Я бы порекомендовал logrotate большинству людей, поскольку именно так будут вращаться все остальные журналы (KISS: Keep it Simple Stupid). Logrotate не перезапускает весь Apache, скорее он просто посылает ему сигнал, который говорит ему, чтобы он снова открыл все свои файлы журнала и перезапустил дочерние элементы. Этот сигнал может быть SIGHUP, который заставляет детей перезагружаться сразу (что будет прерывать загрузку), или SIGUSR1, который делает постепенный перезапуск. С SIGUSR1 вам придется отложить обработку журнала, пока вы не решите, что все дети умерли бы естественным путем. В любом случае, вы, вероятно, захотите проанализировать свои журналы и рассчитать время для самого низкого периода трафика в день или неделю.

Похоже, что это более мощное решение. Большим преимуществом является то, что это позволит вам использовать централизованную систему ведения журналов и загружать сам веб-сервер. Само руководство говорит:

Как и в случае с условной регистрацией, журналы по конвейеру являются очень мощным инструментом, но их не следует использовать там, где доступно более простое решение, такое как автономная постобработка.

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

Кайл Брандт
источник
Скрипт postrotate с файлами logrotate в Apache отправляет сигнал SIGHUP, в результате чего Apache завершает работу всех дочерних элементов и перезапускается. Любые активные соединения в данный момент разрываются.
Warner
Я где-то читал комментарий, в котором говорилось, что изящный перезапуск не очень хорошо работает с серверами с большой нагрузкой. Но я действительно не думаю, что есть много альтернативы.
Мохан Гулати
logrotate с SIGHUP довольно стандартен. Я бы не беспокоился об этом.
Warner
2

Я использовал оба раньше. Я обнаружил, что использование rotatelogs - очень полезный инструмент для управления журналами доступа, и если вы не хотите, чтобы apache простоев. На большом сайте я бы порекомендовал это, единственная проблема, которую я обнаружил, заключалась в том, что если вы хотите управлять журналами, вам понадобится отдельный скрипт cron'd для очистки или перемещения журналов на резервный сервер, очевидно это зависит от требования. С logrotate у вас есть больше возможностей для обработки файлов журналов, единственная проблема заключается в том, что когда logrotate запускается, как описано в предыдущем ответе, вам необходимо перезапустить apache.

По сути, все сводится к выбору: если вам нужен apache для запуска без прерываний, то для управления нужно использовать rotatelogs с внешним скриптом cron, иначе будет достаточно logrotate. Просто убедитесь, что logrotate cron не вращает журналы, когда у вас большой трафик.

Наконец, если вы хотите, чтобы в вашем системном журнале был журнал apache, вы всегда можете использовать команду logger, которая находится в Linux на основе Redhat.

Danie
источник