2016-09-30 28 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)" 
          ] 
      }