Logrotate: scp rotacionou o arquivo para outro local

1

Eu tenho um arquivo de log, que deve girar depois de atingir um tamanho específico (digamos 50MB). Após a rotação, ele deve ser compactado e a data deve ser anexada ao nome do arquivo girado. Agora, o arquivo girado deve ser copiado para um servidor de arquivos.

Para isso, escrevi uma configuração que não funciona.

/var/log/test.log {
    compress
    missingok
    size 50M
    rotate 6
    create
    dateext
    postrotate
        rsync -avzr /var/log/test.log* REMOTE-HOST:/path/to/directory/
    endscript
}

Quando eu executar o diretório ls /var/log/test.log* (no sistema local), posso encontrar o arquivo girado test.log-20150211.gz e um arquivo vazio test.log . Onde como, em REMOTE-HOST, a versão descompactada do arquivo girado test.log-20150211 e o arquivo de log vazio test.log foi encontrado.

Minha preocupação é que

  1. Por que o arquivo de log compactado não foi transferido para o REMOTE-HOST?
  2. O que deve ser feito para transferir SOMENTE o arquivo girado?

Editar:

Também descobri que, depois que os logs foram girados, o serviço syslog parou (o processo de log foi encontrado interrompido, quando verifique executando tailf test.log ). O serviço foi necessário para ser reiniciado novamente. Devo também adicionar service syslog restart na seção postrotate ?

    
por Mandar Shinde 11.02.2015 / 12:31

1 resposta

2

Why compressed log file was not transferred to the REMOTE-HOST?

A compactação é praticamente a última coisa a acontecer, então postrotate ainda está acontecendo antes que logrotate tenha chegado tão longe. Você pode verificar a página man do exemplo de postrotate :

After the log file has been rotated (but before the old version of the log has been compressed), the command /sbin/killall -HUP syslogd [from the postrotate script] will be executed.

Talvez seja melhor executar o rsync como um trabalho de rotina.

What should be done in order to transfer ONLY the rotated file?

Seu rsync está apenas correspondendo ao nome do arquivo original (já que * também corresponderá a arquivos sem mais caracteres) Use um nome de origem mais específico para eliminar essa correspondência:

rsync -avzr /var/log/test.log-* REMOTE-HOST:/path/to/directory/
    
por 11.02.2015 / 13:12