我想配置logstash來管理我的各種日誌源,其中之一是Mongrel2。通過Mongrel2使用的格式是tnetstring
,其中一個日誌消息將採取的形式鏈接grost過濾器模式爲logstash
86:9:localhost,12:192.168.33.1,5:57089#10:1411396297#3:GET,1:/,8:HTTP/1.1,3:200#6:145978#]
我想寫我自己的神交模式來提取上述格式的某些字段。我嘗試提取主機時收到this question的幫助。所以,如果在grok-patterns
我定義
M2HOST ^(?:[^:]*\:){2}(?<hostname>[^,]*)
然後在logstash的conf指定
filter {
grok {
match => [ "message", "%{M2HOST}" ]
}
}
它按預期工作。我現在遇到的問題是我想指定多個模式,例如M2HOST,我試圖在同一神交圖案定義其他的人M2ADDR等文件
M2HOST ^(?:[^:]*\:){2}(?<hostname>[^,]*)
M2ADDR ^(?:[^:]*\:){3}(?<address>[^,]*)
和改變logstash的conf
filter {
grok {
match => [ "message", "%{M2HOST} %{M2ADDR}" ]
}
}
,但現在我只想找到錯誤_grokparsefailure
。
在這裏你的問題是拼接,認爲用他們的正則表達式替換M2HOST和M2ADDR,你會得到'^(?:[^:] * \:){2}(? [^,] *)^(?:[^:] * \ :) {3}(? [^,] *)'你的比賽中間有一個起跑線,顯然不能工作。使用pultiples ALIASES的主要想法是將正則表達式部分拆分爲重用它們,但不要將它們奇蹟般地合併。 –
Tensibai
2014-09-24 14:56:02
啊好的。我想要的是將M2HOST正則表達式應用於消息,然後將M2ADDR應用於消息。你知道正確的語法是什麼嗎? – 2014-09-24 14:57:43
好吧,我會和你已經知道的grok測試工作,trynig匹配每個領域,一旦完成,你可能會分裂有趣的部分。這個例子我會說(測試)'(?:[^:] *:){2}(? [^,] *)[^:] * :(? [^,] *)'would do –
Tensibai
2014-09-24 15:00:06