Syslog-ng - arquivo de log com 6 dias de idade tocado ao gravar no arquivo de log de hoje

1

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.

    
por psitsyseng 03.08.2017 / 20:31

0 respostas