2017-05-27 179 views
0

我試着寫一個grok過濾器爲以下日誌,但得到grokfailure。我是logstash的新手,請幫助我。logstash爲自定義日誌

日誌: msg.repository.routed.ABC_MAS:101 :: 20170526-05:03:08:從遠程主機在t-速率< 0.068>和f-大小< 68>到TMP DIR MSG得到。 repository.routed.ABC_MAS:101 :: 20170526-05:03:07:從遠程主機以t-rate < 0.068>和f-size < 68>獲取到tmp目錄 msg.repository.routed.BCD_MAS:101 :: smsp連接到1.2.2.1(msg),timeOut:1000 msg.repository.routed.ABC_MAS:101 :: 20170526-00:04:37:sftp連接到1.2.2.1(msg) ,timeOut:1000

我使用的Grok模式: filter { grok {= {「message」=>'(?:%{GREEDYDATA:pullpathinfo}):%{NUMBER:thread} ::%{NUMBER:date} - %{NUMBER:HOUR}:%{NUMBER :%{數字:SECOND}:(?:sftp連接到%{IPORHOST:remoteip}%{GREEDYDATA:msg})'} match => {「message」=>'(?:%{GREEDYDATA: ):%{NUMBER:thread} ::%{NUMBER:date} - %{NUMBER:HOUR}:%{NUMBER:MINUTE}:%{NUMBER:SECOND}:(?:got \ <%{GREEDYDATA: %{GREEDYDATA:rate_size})'} } }

回答

0

要開發grok模式,我建議您使用Grok Debugger。它可以讓你逐步建立grok模式。

對於後續日誌(在你的問題的日誌行):

msg.repository.routed.ABC_MAS:101::20170526-00:04:37: sftp connected to 1.2.2.1(msg), timeOut:1000 

以下神交模式將工作:

%{USERNAME:pullpathinfo}:%{NUMBER:thread}::%{NUMBER:date}-%{TIME:time}: sftp connected to %{IPORHOST:remoteip}%{GREEDYDATA:msg} 

後續的變化是相關的:

  • 格羅克模式必須準確的模式中的每個字符。這也爲神交模式之間的每一個空間,真正的(%{WORD} %{WORD}是不一樣的%{WORD}%{WORD}。在你的模式有%{IPORHOST:remoteip}%{GREEDYDATA:msg}之間太多的空間。
  • %{USERNAME},而不是%{GREEDYDATA}(GREEDYDATA只應該用於其它部分即使模式USERNAME有一個不適合的名稱,它後面的模式看起來很合適,因爲它包括[a-zA-Z0-9._-]+(但不包括冒號:
  • %{TIME}而不是`%{NUMBER :HOUR}:%{NUMBER:MINUTE}:%{NUMBER:SECOND}

我希望這有助於。