Acabei de descobrir um problema que não entendo (SLES15 SP2):
Eu tinha configurado incorretamente um logrotate
serviço (em /etc/logrotate.d
). No SLES 15 logrotate.service
é acionado logrotate.timer
diariamente.
No entanto, meu serviço mal configurado parece registrar uma mensagem de erro apenas uma vez (que foi a principal razão pela qual não descobri o problema por um longo tempo).
Alguém pode explicar o que está acontecendo? Outros serviços logrotate parecem ser executados (não tenho certeza).
Alguns detalhes
O erro de logrotate foi causado por uma postrotate
ação com falha, especificamente a falha ao enviar SIGHUP
para o processo em execução.
Mensagens do Syslog:
Dec 18 00:00:20 h16 systemd[1]: Starting Rotate log files...
Dec 18 00:00:20 h16 logrotate[41799]: Failed to kill unit \x7b__SERVICE__\x7d.service: Unit \x7b__SERVICE__\x7d.service is not loaded.
Dec 18 00:00:20 h16 logrotate[41799]: error: error running shared postrotate script for '/var/log/iotwatch/MD10/*.log '
Dec 18 00:00:20 h16 systemd[1]: logrotate.service: Main process exited, code=exited, status=1/FAILURE
Dec 18 00:00:20 h16 systemd[1]: Failed to start Rotate log files.
Dec 18 00:00:20 h16 systemd[1]: logrotate.service: Unit entered failed state.
Dec 18 00:00:20 h16 systemd[1]: logrotate.service: Failed with result 'exit-code'.
Parece que eu estava confuso sobre a ausência de mais mensagens de erro, supondo que isso seria causado pela
logrotate
não execução.No entanto, quando a
postrotate
ação falhou, isso significava que o arquivo de log antigo foi renomeado, mas (devido à falha empostrotate
) o daemon continuou a gravar no arquivo renomeado (em vez de ser acionadopostrotate
para criar um novo para gravar).Por sua vez, isso significava que
logrotate
não encontraria um arquivo de log para girar, o que consequentemente também significava que nenhumapostrotate
ação deveria ser executada. Então, finalmente, quando nopostrotate
é executado, ele não pode acionar um erro, portanto, não há mensagens no syslog.