Cronolog vs logrotate

11

Qual ferramenta de rotação de log você prefere?

    
por Unknown 05.06.2009 / 09:49

4 respostas

14

Na minha experiência, o logrotate é ótimo. É muito flexível e funciona bem com a maioria dos softwares.

No entanto, existem alguns problemas com ele, e como o cronolog é basicamente um recurso de rotação de logs da web, vou escrever minha experiência com o logrotate + apache, que era problemático:

Ao girar logs, devemos notificar o apache que um log está sendo rotacionado, pois mesmo que o logrotate renomeie access.log para access.log.1, o apache continuará gravando no access.log.1, já que ele está gravando no apache. inode, e renomear o arquivo não afeta o número do inode.

No debian etch (e provavelmente em muitas outras distribuições), o logrotate está sendo usado para girar os logs do apache. Agora, o apache tem um reinício gradual que avisa os processos-filhos do apache para sair assim que terminarem de exibir conexões, apache, em seguida, relê sua configuração, gera novos processos filho, que começam a gravar em um novo arquivo de log (no caso do anterior foi girado).

Isso soa como uma ótima solução, porém o reinício normal nem sempre funciona em certas condições (como carga pesada), então os desenvolvedores debian decidiram usar uma reinicialização do apache em vez de uma reinicialização normal, na configuração do logrotate do apache. Infelizmente isso faz com que todas as conexões sejam descartadas de uma só vez, o que é muito ruim para sites muito carregados. Além disso, o reinício do apache também pode causar problemas como parar e não iniciar o apache (também em certas situações de carga), veja os links abaixo para maiores detalhes.

O resultado é que logrotate é ótimo, mas pode levar a certos problemas para certos programas. Eu não tenho muita experiência com o cronolog, mas como ele grava logs através de um pipe, ele não requer nenhum recarregamento do apache quando ele está girando os arquivos de log, o que basicamente resolve tudo o que é descrito acima.

Erros relacionados do logrotate / apache debian:

  1. Bug do Debian # 301702
  2. Bug do Debian # 400455
por 05.06.2009 / 11:04
3

Eu prefiro o cronolog, mas não é uma preferência muito strong.

logrotate onde é iniciado pelo cron, e se um sistema está inativo por algum motivo quando a rotação deveria ter acontecido, então seus arquivos de log não serão rotacionados.

Eu também gosto de ter arquivos de log com a data (% Y% m.combined.access.log) no nome, porque eu mantenho esses logs por um longo tempo. Na maioria dos sistemas, por padrão, o logrotate apache nomeará os arquivos access.log, access.log.1, etc. Pode ser possível usar uma data nos arquivos de log com logrotate, mas eu não consegui descobrir como fazer a última vez que eu olhei.

    
por 05.06.2009 / 10:07
2

Apenas usado logrotate. É o que o Debian usa por padrão e eu nunca tive nenhuma reclamação.

    
por 05.06.2009 / 09:52
2

Eu quase exclusivamente uso cronolog over logrotate . logrotate vem com o Debian, e eu permito que ele continue trabalhando para os serviços do sistema, como os logs do servidor de e-mail. Mas, para os arquivos de log Apache e lighttpd , é tudo cronolog .

Uma das razões pelas quais eu uso cronolog é que toda a configuração acontece na linha do arquivo de log da configuração do servidor web

por exemplo. em um arquivo lighttpd config, você poderia colocar:

accesslog.filename = "|/usr/bin/cronolog --symlink=/var/log/webs/access.log /var/log/webs/%Y/%W-access.log"

E todos recebem um novo arquivo de log toda semana sem qualquer outra configuração. Ou você pode ser criativo e fazer algo como:

accesslog.filename = "|/usr/bin/cronolog --symlink=/var/log/webs/access.log /var/log/webs/%Y/%m/%a-access.log"

E obtenha um arquivo de log que mostre o tráfego por dia da semana. por exemplo. todos os domingos, todas as terças-feiras.

O que é melhor é que, mesmo que o servidor esteja inativo por algum tempo, o arquivo de log correto será usado na reinicialização.

    
por 06.03.2011 / 21:16