syslog-ng não analisa mensagens

1

Estou tentando configurar o syslog-ng para analisar corretamente as mensagens RFC5424-compilant, até agora, com pouco sucesso. De acordo com a documentação do syslog-ng,

The syslog-ng OSE application can automatically parse log messages that conform to the RFC3164 (BSD or legacy-syslog) or the RFC5424 (IETF-syslog) message formats. If syslog-ng OSE cannot parse a message, it results in an error.

Isso sugere que nenhum parâmetro extra necessário para o syslog-ng realmente analisa essas mensagens. No entanto, isso não acontece.

Aqui está a parte relevante da minha configuração do syslog-ng:

template remote_message {
    template("${R_ISODATE} s=${SDATA} mesg=${MSGONLY}\n");
};

source s_remote {
    tcp(port(514));
    syslog(transport(tcp));
};

destination d_remote {
    file(
        "/var/log/remote.log"
        owner(root)
        group(root)
        create_dirs(yes)
        template(remote_message)
    );
};

log {
    source(s_remote);
    destination(d_remote);
};

O servidor escuta na porta 514 e seleciona registros de fontes remotas, mas não os analisa de forma alguma. Enviando a seguinte mensagem (que é copiada de texto RFC ):

<165>1 2003-10-11T22:14:15.003Z sender.computer.org evententry - ID47 [exampleSDID@32473 iut="3" eventSource="Application" eventID="1011"] Test message

produz a seguinte entrada de log:

2016-04-26T16:22:31+02:00 s= mesg=2003-10-11T22:14:15.003Z sender.computer.org evententry - ID47 [exampleSDID@32473 iut="3" eventSource="Application" eventID="1011"] Test message

Então, como você pode ver, a mensagem não é analisada. Ao contrário da documentação, isso não resulta em erro: de acordo com a documentação, se a opção on-error estiver definida como fallback-to-string , syslog-ng deve "registrar uma mensagem de erro na fonte interna ()", mas não esses registros são feitos.

Tenho a sensação de que estou sentindo falta de algo muito básico aqui, porque realmente deveria funcionar. O que estou perdendo?

    
por Lacek 26.04.2016 / 16:55

1 resposta

1

sua fonte parece estar um pouco confusa:

source s_remote {
    tcp(port(514));
    syslog(transport(tcp));
};

Isso é na verdade duas fontes:

  • a primeira linha escuta na porta 514 para mensagens RFC3164
  • a segunda linha escuta as mensagens RFC5424 na porta 601 (a porta padrão da fonte syslog ())

Portanto, se você enviar sua mensagem RFC5424 para a porta 601, ela deverá funcionar (a menos que algum firewall evite escutar na porta 601).

HTH

Robert Fekete

    
por 27.04.2016 / 10:54

Tags