logrotate por tamanho - preciso alterar o cron?

10

Minha configuração atual de logrotate fica assim (usando o logrotate 3.8.7)

"/var/log/haproxy.log" {
  daily
  size 250M
  rotate 1
  create 644 root root
  missingok
  compress
  notifempty
  copytruncate
}

É executado com êxito uma vez por dia, mas quando o tamanho excede 250M, não é rotacionado. Por isso, aguarda até o final do dia girar, independentemente do tamanho.

Eu li que existe a opção maxsize, e depois de mudar size 250Mpara maxsize 250Mela ainda não funciona.

Preciso definir um cron para executar o logrotate de hora em hora, ou o logrotate é executado automaticamente porque está ouvindo o tamanho do arquivo e há outra coisa errada acontecendo?

Hommer Smith
fonte

Respostas:

7

Sim, você precisa executar logrotatemais de uma vez por dia para conseguir isso. Isso é respondido no segundo parágrafo da página de manual logrotate(8) :

Normalmente, logrotateé executado como um trabalho cron diário. Ele não modifica um log várias vezes em um dia, a menos que o critério desse log seja baseado no tamanho do log e logrotateesteja sendo executado várias vezes por dia, ou a menos que a opção -fou --forceseja usada.

Se você deseja executar a logrotatecada hora, em vez de diariamente, é possível movê-lo:

mv /etc/cron.daily/logrotate /etc/cron.hourly

Desde 3.8.1 houve maxsize. A diferença entre sizee maxsizeé descrita aqui:

maxsize Tamanho

Arquivos de log são giradas durante a crescer mais do que o tamanho bytes antes mesmo do intervalo de tempo especificado adicionalmente ( daily, weekly, monthlyou yearly). A sizeopção relacionada é semelhante, exceto que é mutuamente exclusiva com as opções de intervalo de tempo e faz com que os arquivos de log sejam girados sem levar em consideração o último tempo de rotação. Quando maxsizeé usado, o tamanho e o carimbo de data e hora de um arquivo de log são considerados.

Isso tornaria os dois adequados para o seu uso: sizesem nenhum intervalo e maxsizese também for necessário. No entanto, isso não altera o fato de que, por padrão, logrotateé executado apenas diariamente. Esse intervalo é adequado para a maioria, pois na maioria dos casos leva muito mais que um dia para um log crescer novamente 250M.

Esa Jokinen
fonte
1
FYI há uma directiva maxsize, a partir de 8,1: hpux.connect.org.uk/hpux/Sysadmin/logrotate-3.8.7/...
Hommer Smith
Obrigado por perceber que estava lendo uma versão antiga do manual, @HommerSmith! Corrigi minha resposta de acordo.
Esa Jokinen