Rotação e gravação contínua de grandes arquivos de log com o rsyslogd

1

Eu tenho um arquivo de log extremamente ocupado (vamos chamá-lo de /var/log/service.log ) que também é frequentemente pesquisado por razões de solução de problemas. Saída para ele é quase contínua e 24/7. Provavelmente coloca em torno de 1-2 GB / dia, mas precisamos de tudo isso.

Como fgrep de um arquivo de log grande é impraticavelmente lento, é necessário girar com frequência. Eu tenho logrotate definido para ser executado em /etc/cron.hourly , com uma diretiva hourly e um limite de tamanho de 512M ou mais.

Isso funciona como esperado: o arquivo é girado de /var/log/service.log para /var/log/service.log-20150810 ou o que você tem. O problema é que a renomeação é apenas uma mudança estética na entrada inode / directory, assim rsyslogd continua escrevendo para /var/log/service.log-20150810 agora e por algum tempo, enquanto o recém criado /var/log/service.log fica vazio. Em algum momento, rsyslogd decide começar a escrever para o novo, mas não tenho clareza sobre sua rima ou razão para fazê-lo.

De qualquer forma, o que eu preciso é alguma maneira de "chutar" o rsyslogd para dizer a ele para começar a escrever para um novo e puro /var/log/service.log após a rotação do log. Enviando SIGHUP não parece fazer o truque. Quaisquer idéias que não envolvam potencialmente perder muitas entradas de log (ou seja, reiniciar rsyslogd ) serão apreciadas!

(Nota: Percebi que o esquema de nomenclatura logrotate levaria a /var/log/service.log.1 e outras coisas, por isso estou um pouco perplexo ao ver /var/log/service.log-20150810 ao lado dele. Será que rsyslogd faz sua própria rotação internamente? também existem algumas implicações adversas para isso?)

Muito obrigado antecipadamente!

    
por Alex Balashov 11.08.2015 / 18:57

0 respostas