2016-09-30 56 views
2

多行神交过滤器我有一个很长的logstash神交过滤器:定义了在logstash

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" ...

有没有提及的官方文件在处理这样的:

+0

激活换行,在你喜欢的编辑器? – baudsp

+0

另一种解决方案是将grok模式分成两部分,第一个过滤器将消息的末尾留给第二个过滤器进行解析。但要小心你的表演(查看[博客文章](https://www.elastic.co/blog/do-you-grok-grok))。 – baudsp

+0

@baudsp(1)无论每个人如何设置编辑器,它都应该是一个提高团队可见性的解决方案,所以这个解决方案不会。 (2)这不是一个理想的解决方案,因为我真的想匹配整个模式(如果不匹配会失败),但如果我需要像这样管道来增加可见性,我会牢记它。 –

回答

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)" 
          ] 
      }