Estou tentando configurar o syslog-ng para analisar corretamente as mensagens compatíveis com RFC5424, até agora, com pouco sucesso. De acordo com a documentação do syslog-ng,
O aplicativo syslog-ng OSE pode analisar automaticamente mensagens de log que estejam em conformidade com os formatos de mensagem RFC3164 (BSD ou legacy-syslog) ou RFC5424 (IETF-syslog). Se o syslog-ng OSE não puder analisar uma mensagem, isso resultará em um erro.
Isso sugere que nenhum parâmetro extra é necessário para o syslog-ng para realmente analisar essas mensagens. No entanto, isso simplesmente 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 coleta logs de fontes remotas, mas não os analisa. Enviando a seguinte mensagem (que é copiada do 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
Como você pode ver, a mensagem não é analisada. Ao contrário da documentação, isso não resulta em um erro: de acordo com a documentação, se a on-error
opção estiver definida como fallback-to-string
, o syslog-ng deve "registrar uma mensagem de erro na fonte internal()", mas nenhum registro é feito.
Tenho a sensação de que estou perdendo algo muito básico aqui, porque realmente deveria funcionar. o que estou perdendo?