我开始使用 logstash 来管理 syslog。为了测试它,我从远程机器发送简单的消息并尝试用logstash解析它们。
唯一的 Logstash 配置,通过命令行使用:
input {
syslog {
type => syslog
port => 5514
}
}
filter {
grok {
match => { "message" => "hello %{WORD:who}" }
}
}
output {
stdout { }
elasticsearch {
host => "elk.example.com"
cluster => "security"
protocol => "http"
}
}
我确实收到了日志并且它们被正确解析(who
生成了一个字段)。同时,tags
包含_grokparsefailure
.
我发送的测试日志是hello rambo3
. 我认为它是
2015-01-29T09:27:48.344+0000 10.242.136.232 <13>1 2015-01-29T10:27:48.113612+01:00 AA1.example.com testlog.txt - - - hello rambo3
grok 调试器也同意:
为什么要_grokparsefailure
添加到标签中?
有趣的是,通过 pure 发送的相同数据tcp
被相同的过滤器正确解析(_grokparsefailure
不在标签中)