Você não precisa da linha "modelo" em seu analisador. Esta opção especifica qual parte da mensagem de log você quer analisar com o analisador de CSV, e neste momento é provavelmente o padrão ($ {MESSAGE}).
Estou tentando analisar as mensagens de log recebidas de uma porta do udp e inseri-las em um banco de dados MYSQL. Meu destino no meu arquivo syslog-ng.conf é o seguinte:
source syslog_udp {
udp(port(<port num>) flags(no-parse));
};
O analisador que escrevi é o seguinte:
parser p_logparser{
csv-parser(columns("<column1>", "<column2>", ...)
flags(strip-whitespace)
delimiters(",")
template("${<column1}\n")
);
};
Também estou usando um filtro para "descartar" uma determinada parte da mensagem de log:
filter log_filter { not (match("<string>") and match("<string>"));};
Por fim, quero poder gravar o conteúdo de "column1" em um banco de dados MYSQL, mas, para fins de teste, estou atualmente gravando em um arquivo:
destination d_file {
file("<path>/${ISODATE}" template("Testing : ${column1}"));
};
log {
source(syslog_udp);
parser(p_logparser);
filter(log_filter);
destination(d_file);
};
No entanto, quando eu abro o arquivo descrito em d_file, tudo o que posso ver é "Testando:" e o conteúdo da coluna1 não está lá. Eu tenho a sensação de que é porque o meu analisador não está criando as macros suaves corretamente. O que estou fazendo de errado?
Você não precisa da linha "modelo" em seu analisador. Esta opção especifica qual parte da mensagem de log você quer analisar com o analisador de CSV, e neste momento é provavelmente o padrão ($ {MESSAGE}).