在logstash

时间:2016-09-30 08:53:49

标签: logstash logstash-grok logstash-configuration

我有一个很长的logstash grok过滤器:

match => { 'message' => '%{MONTH:month} %{NUMBER:day} %{TIME:time} %{WORD:log_host} %{WORD:generator}\[%{NUMBER:unknown}\]: %{IP:connIP}:%{NUMBER:connPort} \[.*\] %{WORD:namespace}\~? %{NOTSPACE:unknown} %{NOTSPACE:unknown} %{NUMBER:res_statuscode} %{NUMBER:unknown} (?<unknown>\-.*\-) %{NOTSPACE:unknown} %{NOTSPACE:unknown} \"%{WORD:method} %{PATH:path} %{DATA:httpversion}\"' }

有什么方法可以在多行中解决这个问题?我尝试了以下方法:

match => { 'message' => '%{MONTH:month} %{NUMBER:day} %{TIME:time} %{WORD:log_host}'
                                ' %{WORD:generator}\[%{NUMBER:unknown}\]: %{IP:connIP}:%{NUMBER:connPort}'
                                ' \[.*\] %{WORD:namespace}\~? %{NOTSPACE:unknown} %{NOTSPACE:unknown}'
                                ' %{NUMBER:res_statuscode} %{NUMBER:unknown} (?<unknown>\-.*\-) %{NOTSPACE:unknown}'
                                ' %{NOTSPACE:unknown} \"%{WORD:method} %{PATH:path} %{DATA:httpversion}\"' }

但它给了我错误,即使用逗号分隔字符串也行不通:{:timestamp=>"2016-09-30T08:38:50.549000+0000", :message=>"fetched an invalid config" ...

在官方文档中没有提到处理这个问题:

1 个答案:

答案 0 :(得分:0)

错误信息清楚地表明配置文件有错误。

此链接可能有所帮助:https://discuss.elastic.co/t/grok-multiple-match-logstash/27870

   match => {"message" => ["(%{EXIM_DATE:exim_date} )(%{EXIM_MSGID:exim_msg_id} )(?<msg_c>Completed)",
                            "(%{EXIM_DATE:exim_date} )(%{EXIM_MSGID:exim_msg_id} )(?<msg_f>frozen)"
                           ]
             }