2016-05-31 89 views
0

我使用的是與elasticsearch 1.3.4和kibana 3.1.1 logstash-1.4.0(我知道我已經過時了,這是我現在可以做的最好的) 。Grok過濾器不工作,即使它在grok調試器中工作

日誌示例:

2016年5月31日16時05分33秒RequestManager [INFO]手動標誌LOLROFLin TRALALA 123456Was變爲真

我神交濾波器:

filter { 
    grok { 
     match => { "message" => "%{DATESTAMP:timestamp} %{WORD:clazz} %{NOTSPACE:level} %{GREEDYDATA:content}"} 
    } 

    if (!([stack_trace])) and (!([clazz] == "RequestAsset")) { 
     drop {} 
    } 
} 

我的問題是:

  1. 爲什麼我看不到kibana的grok字段?我只看到默認字段,但不是我的。 Grok調試器顯示成功,但kibana不起作用。

  2. 我的目標是放棄沒有堆棧跟蹤的任何日誌消息或不是來自類(在grok過濾器中稱爲clazz)「RequestAsset」。這應該工作嗎?我可以在單獨的過濾器中使用grok過濾器創建的字段嗎?

編輯:我意識到了什麼差錯,我用它已經的方式隔開日誌,其內容log4j的插件,和現場的消息已經不僅僅是信息本身。

回答

0

我在這grok debugger中測試了你的grok過濾器,失敗了。所以我改寫了它。

這裏是正確的grok過濾器。

filter { 
grok { 
    match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{WORD:clazz} %{NOTSPACE:level} %{GREEDYDATA:content}"} 
} 

if (!([stack_trace])) and (!([clazz] == "RequestAsset")) { 
    drop {} 
} 

TIMESTAMP_ISO8601 =>%{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?

如果你看到Kibana 「_grokparsefailure」,你知道你的神交過濾器失敗。

關於你的第二個問題,你不應該使用OR運算符嗎?

+0

我沒有看到兩者之間的任何區別?我也在你提到的grok調試器中嘗試過它們,但都沒有工作。我使用這一個,兩者都有效:https://grokdebug.herokuapp.com/ – user1137582

+0

對不起,我粘貼了錯誤的grok聲明。你應該檢查編輯。 –

0

我意識到出了什麼問題,我正在使用log4j插件,它已經將日誌分離到其內容中,並且字段消息本身就是消息本身。