configuração e execução logrotate

3

Estou tentando configurar logrotate para girar e excluir arquivos de log todos os dias à meia-noite, mas nunca os usei antes. Então: (a) quero confirmar que minha configuração está correta e (b) preciso de ajuda para automatizar sua execução diária à meia-noite.

Meu software produz um arquivo de log grande em /abs/path/to/log/myapp-log.txt . Aqui está o que eu gostaria de acontecer:

  • Registre a data e hora de cada arquivo de log com a extensão de data em seu nome
  • Tenha apenas 1 arquivo de log em /abs/path/to/log/ a qualquer momento; Assim, toda vez que o log for rotacionado e um novo arquivo de log for criado, exclua o antigo

logrotate.conf :

/abs/path/to/log/myapp-log.txt {
    daily
    copytruncate
    create 700 myUser myGroup
    dateext
    maxage 1
    missingok
}

Algumas coisas que não tenho certeza aqui:

  • Preciso especificar daily se estou especificando maxage de 1?
  • O que exatamente o missingok está fazendo? Algo sobre ignorar um aviso do sistema se um arquivo de log não estiver lá? O que acontece se eu não especificar missingok e o arquivo de log não estiver lá?
  • Eu preciso mesmo de copytruncate se estou especificando daily / maxage 1 ? Essas três configurações parecem um pouco redundantes, mas não tenho certeza qual o papel que cada uma desempenha.

Em segundo lugar, como posso garantir que isso seja executado todos os dias à meia-noite? Cron? Eu só pergunto porque eu li em algum lugar que /etc/cron.daily/logrotate é executado automaticamente todos os dias, mas não tenho certeza de como isso é configurável. Agradecemos antecipadamente.

    
por pnongrata 13.12.2012 / 00:10

1 resposta

10
  1. Preciso especificar diariamente se estou especificando uma máx. de 1?

    Sim, você precisa de diariamente como deseja que esta seção seja executada todos os dias. Este controle como frequência de execução da seção, enquanto maxage controla por quanto tempo os arquivos rotacionados são mantidos. Eles são duas coisas diferentes.

  2. O que exatamente o missingok está fazendo?

    missingok significa que o logrotate não irá reclamar / gerar erro se o arquivo de log para rotação não existir. Se isso não for especificado e o arquivo de log destinado à rotação estiver ausente, o logrotate gerará um log de erros.

  3. Eu preciso mesmo de copytruncate se estou especificando daily / maxage 1?

    Se o copytruncate estiver funcionando para você agora, não o altere. Aplica-se ao arquivo de log original

    copytruncate instruct logrotate to creates the copy of the original file (i.e rotate the original log file) and truncates the original file to zero byte size. This helps the respective service that belongs to that log file can write to the proper file.

  4. Para executar o logrotate no meio da noite

    Existem 2 métodos para o fazer.

    • Método 1 - Alterar quando o cron diário é executado

      Procure as seguintes linhas em / etc / crontab

      25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
      

      Mude 25 6 (significa 6:25 AM) para 0 0 . Isso também altera o tempo de início da tarefa cron diária ALL para o meio da noite.

    • Método 2 - Use uma linha crontab personalizada

      Mova o logrotate para fora do cronograma diário padrão

      mv /etc/cron.daily/logrotate /etc/logrotate.cronjob
      

      Crie uma tarefa cron personalizada. Adicione a seguinte linha no / etc / crontab

      0 0 * * * root /etc/logrotate.cronjob
      
por 16.12.2012 / 18:41