A entrada syslog usa grok internamente, sua mensagem provavelmente não está seguindo o padrão syslog 100%.
A solução neste link funcionou para mim: link
As principais informações do link são:
Replace the existing syslog block in the Logstash configuration with:
input {
tcp {
port => 514
type => syslog
}
udp {
port => 514
type => syslog
}
}
Next, replace the parsing element of our syslog input plugin using a grok filter plugin.
filter {
if [type] == "syslog" {
grok {
match => { "message" => "<%{POSINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
}
}
}
Você pode editar a sintaxe de correspondência de filtro ("grok") agora, para corresponder ao formato desejado. Também é possível oferecer suporte a várias sintaxes diferentes com o uso criativo de if
, else if
e else
.