Quais são os prós e os contras do logrotate vs rotatelogs com o Apache?

11

O Apache fornece uma ferramenta chamada rotatelogs que tem o benefício de não reiniciar o apache ao girar logs, o que acontece com o logrotate. Não tenho experiência suficiente para falar se esse é um critério suficiente para usar rotatelogs sobre o logrotate.

Minhas perguntas são: alguém tem experiência na vida real usando uma ou duas dessas ferramentas e qual seria sua opinião?

O que você recomendaria e por quê?

Mohan Gulati
fonte

Respostas:

7

Eu recomendaria o logrotate para a maioria das pessoas, pois é isso que girará todos os outros logs (KISS: Keep it Simple Stupid). O Logrotate não reinicia todo o Apache, apenas envia um sinal que informa para reabrir todos os seus arquivos de log e reiniciar os filhos. Esse sinal pode ser SIGHUP, que faz com que os filhos sejam reiniciados imediatamente (o que interromperá os downloads), ou SIGUSR1, que faz uma reinicialização normal. Com o SIGUSR1, é necessário adiar o processamento do log até pensar que todas as crianças teriam morrido naturalmente. De qualquer forma, você provavelmente deseja analisar seus logs e cronometrá-lo para o período de tráfego mais baixo do dia ou da semana.

Os logs encanados parecem ser a solução mais poderosa. Uma grande vantagem é que ele permitirá que você use um sistema de registro centralizado e carregue o próprio servidor da web. O próprio manual diz:

Assim como no log condicional, os logs canalizados são uma ferramenta muito poderosa, mas não devem ser usados ​​onde estiver disponível uma solução mais simples, como pós-processamento off-line.

Portanto, aparentemente, não use o log canalizado se não precisar . Eu usei o log canalizado no passado como uma maneira hacky para filtrar logs e não tive nenhum problema.

Kyle Brandt
fonte
O script postrotate com os arquivos de logrotate do Apache é enviar um SIGHUP, o que faz com que o Apache encerre todos os filhos e reinicie. Todas as conexões ativas no momento são encerradas.
Warner
Li um comentário em algum lugar que dizia que a reinicialização normal não funciona muito bem com servidores que carregam uma carga pesada. Mas eu realmente não acho que exista muita alternativa.
Mohan Gulati
logrotate com SIGHUP é bastante padrão. Eu não me importaria com isso.
Warner
2

Eu usei os dois antes. Descobri que o uso de rotatelogs é uma ferramenta muito útil no gerenciamento de logs de acesso e se você não deseja tempo de inatividade apache. Em um site de alto volume, eu recomendaria isso, o único problema encontrado foi que, se você deseja gerenciar os logs, precisará ter um script separado agendado para limpar ou mover os logs para um servidor de backup, obviamente isso depende da exigência. Com o logrotate, você tem mais opções de como os arquivos de log são tratados, o único problema é quando o logrotate é executado, conforme explicado na resposta anterior, e é necessário reiniciar o apache.

Basicamente, tudo se resume à escolha; se você precisar executar sem interrupções, faça o rotatelogs com um script cron externo para gerenciar, caso contrário, o logrotate será suficiente. Apenas certifique-se de configurar o cron de rotação de log para não girar os logs quando você tiver tráfego intenso.

Por fim, se você deseja ter o apache log no seu syslog, sempre pode usar o comando logger que está nos linuxes baseados no Redhat.

Danie
fonte