Apache2 e logrotate: delaycompress needed?

8

No momento, estou vendo o tamanho do arquivo dos meus logs do Apache quando eles se tornaram enormes. Na minha configuração de logrotate, tenho delaycompress habilitado. O Apache realmente precisa disso (como a documentação do logrotate diz que alguns programas ainda escrevem no arquivo antigo) ou é seguro desativar o delaycompress ?

Aqui está minha configuração de logrotate:

/var/log/apache2/*.log {
    weekly
    missingok
    rotate 26 
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
            if [ -f /var/run/apache2.pid ]; then
                    /etc/init.d/apache2 restart > /dev/null
            fi
    endscript
}
    
por j0nes 14.06.2010 / 14:26

2 respostas

7

Se você estiver fazendo uma reinicialização do Apache (ou até mesmo 'graciosa'), ele fechará as alças de arquivo abertas e as abrirá novamente. Você não deve precisar de delaycompress porque o arquivo foi fechado e reaberto como parte de sua reinicialização posterior.

rotate access_log -> access_log.1 (rename action, no INODE change)
apache still writing to access_log.1 (same open FD on same INODE)
apache restart (close FD, release INODE writing)
apache writing to access_log (new FD to a new INODE)

Uma reinicialização é uma má idéia - e se o arquivo de configuração fosse acidentalmente alterado e não fosse mais válido? Seu apache não será iniciado novamente. Em vez disso, envie um HUP para o processo pai, que diz para fechar / reabrir os identificadores de arquivo.

postrotate
  /bin/kill -HUP 'cat /var/run/apache2.pid 2>/dev/null' 2>/dev/null || true
endscript

cat falhará se o PID estiver ausente (ou vazio, ou inválido), causando a morte também falhará, assim você não precisará do bloco if..then ao redor dele.

    
por 20.06.2010 / 09:24
0

Hrm, neste caso, provavelmente, já que o Apache mantém os logs abertos.

Uma coisa que você pode tentar é o script rotatelogs . Faz parte do pacote apache2-utils , pelo menos aqui na minha estação de trabalho Ubuntu. Outra abordagem seria rotacioná-los diariamente, em vez de semanalmente, para que você esteja armazenando menos antes da compactação.

    
por 14.06.2010 / 15:03