_grokparsefailure成功比赛

时间:2015-01-29 13:43:37

标签: logstash syslog grok logstash-grok

我开始使用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调试器也同意:

enter image description here

为什么_grokparsefailure会添加到代码中?

有趣的是,通过纯tcp发送的相同数据由同一过滤器正确解析(_grokparsefailure不在标签中)

1 个答案:

答案 0 :(得分:2)

_grokparsefailure不会由您自己的过滤器grok添加。当您使用syslog输入时,系统日志格式必须遵循RFC3164,如here中所述。

通常,Syslog输入将解析日志并添加相应的field,如log severity。所以,有一个grok行动。但是,从远程服务器发送的日志格式为RFC 5424。因此,logstash无法解析日志,然后添加_grokparsefailure标记。

相关问题