Precisamos manter apenas um arquivo de log de cada serviço em nossos servidores Ubuntu 20.04. Modifiquei o /etc/logrotate.conf
arquivo da seguinte forma:
weekly
su root adm
rotate 0
create
ifempty
include /etc/logrotate.d
E para um serviço específico, pense misc
por exemplo, que faz os vmware-network.log
arquivos de log, tenho um arquivo de configuração no /etc/logrotate.d/misc
qual está o seguinte:
/var/log/vmware-network.*.log {
su root root
rotate 0
daily
missingok
ifempty
}
Agora, quando eu testo meu logrotation com logrotate -fv /etc/logrotate.conf
, ele não exclui nenhum dos vmware-network.*.log
arquivos, apenas os torna zero em tamanho. No entanto, quando eu uso logrotate -fv /etc/logrotate.d/misc
, ele mantém apenas um vmware-network.log
arquivo e exclui outros arquivos de log numerados.
logrotate
não faz o meu trabalho desejado, pois está lendo o arquivo de configuração padrão /etc/logrotate.conf
. Eu quero saber o que está fazendo essa diferença entre esses dois arquivos de configuração e como resolvê-lo.
PS:
Todos os outros arquivos de configuração
/etc/logrotate.d/
têm o mesmo comportamento. eles manterão um arquivo de log quando forem forçados a lê-los. Só mencioneimisc
aqui porque tem muitosvmware-network.log
arquivos e consigo ver facilmente a diferença que faz.As permissões e usuários/grupos dos arquivos de log mencionados
/var/log
são:-rw------- 1 root root vmware-network.log drwxrwxr-x 15 root syslog /var/log/
Eu tentei abordagens diferentes com configurações diferentes, mas nenhuma funcionou. Eu também adicionei
misc
logrotation configlogrotate.conf
e o executei, mas a saída ainda era a mesma.Um erro comum que encontrei foi:
error: skipping "/var/log/vmware-network.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation.
E defino
su
diretivas diferentes para diferentes arquivos de configuração, por exemplo,su root adm
para arquivos/etc/logrotate.d/rsyslog
. Embora não tenha me enviado o erro, ainda não está fazendo o trabalho.
Qualquer ajuda seria apreciada.
Tentei reproduzir seu problema em meus próprios servidores (Ubuntu 20.04) e descobri que você deve remover a
create
diretiva do significado do arquivo de configuração principal/etc/logrotate.conf
e adicioná-la (se necessário) em arquivos de subconfiguração existentes em/etc/logrotate.d/<CONFIG_FILE>
.Embora pareça que essa abordagem resolva seu problema, não sei exatamente qual é o motivo por trás disso, então não posso fornecer motivos baseados em referência. Eu encontrei isso por tentativa e erro.