Quase toda vez que o syslog-ng grava no arquivo de log atual, ele toca o arquivo de log de 6 dias antes. Não está gravando nenhum dado nos arquivos de log antigos, apenas atualizando seu último registro de data e hora modificado. Captura de tela dos arquivos de log
Não tenho 100% de certeza de que parou de atualizar o último registro de data e hora modificado dos arquivos entre os dias 26 e 27 antes do meio-dia dos últimos dois dias, mas acho que isso pode ser apenas coincidência. Eu reiniciei o serviço syslog-ng e o serviço syslog do host VMware em torno desse período nos últimos dois dias e isso pode ter impedido o toque em arquivos antigos. Dito isto, reiniciei os serviços esta manhã e ainda está acontecendo.
No momento, estamos capturando logs de 24 hosts VMware. Os arquivos de log de cada host são armazenados em seu próprio diretório com um novo arquivo a cada dia. Isso só acontece com os arquivos de log de um host. Todos os nomes de host são muito semelhantes (group1-esx01… 08, group2-esx01… 08, group3-esx01… 08), portanto, não parece que um problema de filtragem explica por que isso acontece apenas com os logs localizados em uma pasta .
Nós usamos o arquivo padrão syslog-ng.conf e colocamos nossas configurações em um único arquivo localizado no diretório conf.d. Esse arquivo é assim:
#Global network listener
source s_network {
network(
ip("1.1.1.1")
port(1514)
max-connections(100)
transport("tls")
tls(
key_file("/etc/syslog-ng/cert/PrivateKey.pem")
cert_file("/etc/syslog-ng/cert/PublicKey.pem")
peer_verify(optional-untrusted)
)
);
};
#VMware
#Dir for each host, file for each day.
destination d_vmware {
file(
"/var/log/vmware/$HOST/$YEAR$MONTH$DAY.log"
perm(0644)
create_dirs(yes)
);
};
#Only get data from machines who's hostname starts with the prefixes of the various blade groups.
filter f_vmware {
host("group1-esx*" type(glob)) or
host("group2-esx*" type(glob)) or
host("group3-esx*" type(glob));
};
#From global listener to VMware dest
log {
source(s_network);
filter(f_vmware);
destination(d_vmware);
};
Eu acho que encontrar alguém que tenha experimentado isso antes é bem provável. No entanto, espero que alguém pelo menos tenha uma ideia de por onde começar.
Obrigado pelo seu tempo.
Editar: Atualização rápida, às 12h12min, o arquivo 20170728.log parou de ter seu último registro de data e hora modificado atualizado e o arquivo 20170729.log começou a ter seu último registro de data e hora modificado atualizado.
Desde então, configurei 20170729.log para ser imutável e recebo 'permissão negada' ao tentar tocar o arquivo como root, como esperado. No entanto, ainda está sendo atualizado seu último horário modificado! Eu não estou vendo o syslog-ng relatar qualquer erro também. Coisas estranhas.
Edit2: Eu encontrei a solução! Por padrão, o syslog-ng usa o registro de data e hora nas mensagens que recebe como o registro de data e hora da entrada de log, o que faz sentido. Então, havia uma boa chance de o problema ser com o host enviando as mensagens de log para o servidor syslog-ng. Acho que estava enviando uma mensagem vazia com a data errada no timestamp regularmente. De qualquer forma, em vez de mergulhar fundo em tudo o que pode gerar mensagens de log no ESXi, acabei de migrar as VMs do host afetado e reiniciei-as. Isso parece ter resolvido o problema por enquanto, e isso é bom o suficiente para mim, já que estaremos substituindo esse conjunto de servidores no futuro próximo.