2017-08-08 312 views
2

我的問題是關於logstash中的grok過濾器。對於logstash過濾器,我需要解析一個日誌文件。 INFO [QuorumPeer [本身份識別碼= 1]/0 - 53135:0:0:0:0:0:0:0:2181:ZooKeeperServer 01:下面grok的自定義正則表達式

2017年7月31日09樣品日誌語句@ 617] - 以協商超時5000 建立的會話0x15d964d654646f4爲 客戶/10.191.202.89:56232

我想分析使用正則表達式,但沒有得到任何成功之間[]聲明?從上面的行

  1. QuorumPeer [本身份識別碼= 1]/0:0:0:0:0:0:0:0:2181應該被映射到線程ID。
  2. ZooKeeperServer應該被映射到類名
  3. 應與行號映射

有人可以幫我這個正則表達式?

+0

你可以添加你已經嘗試過? – TehSphinX

+0

你會發布你的整個配置文件,所以我可以看到所有這些是如何完成的?我一整天都在試圖弄清楚如何使自定義的正則表達式工作,甚至在kibana調試器中我都搞不清楚。謝謝 – Elijah

回答

1

您可以使用

\[(?<threadid>\w+[^/]*/[\d:]+):(?<classname>[^\]@]+)@(?<linenumber>\d+)\] 

詳細

  • \[ - 字面[
  • (?<threadid>\w+[^/]*/[\d:]+) - 組 「線程ID」:1+字字符,然後0+字符比/其他,/然後再輸入一個或多個數字或:(注意你可以調整這個您認爲合適的圖案,例如它也可以寫成(?<threadid>.*?[\d:]+)但它不會是安全的)
  • : - 冒號
  • (?<classname>[^\]@]+) - 組「類名」:1個或更多字符比]其他和@
  • @ - 一個@字符
  • (?<linenumber>\d+) - 組 「行號」:1個或多個數字
  • \] - 字面]

在線測試結果在grokdebug.herokuapp.com

enter image description here

+0

感謝您回答這個問題。我不想在正則表達式中硬編碼QuorumPeer。它不會在下面的語句的情況下工作:[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn @ 178] – BobCoder

+0

@BobCoder我更新了答案。 –