我有一個看起來像這樣的日誌條目...Logstash:嵌套Grok搜索?將字段解析爲多個字段?
2014-02-25 00:00:03,936 INFO - something happened...bla bla bla
2014-02-25 00:00:03,952 INFO - ***Request Completed*** [ 78.002] mS [http://cloud.mydomain.local/schedule/search?param=45]
2014-02-25 00:00:04,233 INFO - something else happened...bla bla bla
我有一個神交過濾器正確解析線...
grok {
match => [ "message", "%{TIMESTAMP_ISO8601:logdate} %{WORD:severity}%{SPACE}- %{GREEDYDATA:body}" ]
}
我想解析附加數據如果「身體」以「***請求已完成***」開始,則從「身體」出來。即「elaspsedms」和「uri」。我怎樣才能做到這一點?
在其他地方有人建議我添加另一條消息進入這樣的神交過濾器...
grok {
match => [
"message", "%{TIMESTAMP_ISO8601:logdate} %{WORD:severity}%{SPACE}- \*\*\*Request Completed\*\*\* \[%{SPACE}%{NUMBER:elaspedms}\] mS \[%{URI:uri}\]",
"message", "%{TIMESTAMP_ISO8601:logdate} %{WORD:severity}%{SPACE}- %{GREEDYDATA:body}"
]
}
...這個工程,但對於時間線,「體」的價值確實不得到設置。理想情況下,我希望身體總是包含條目的最後部分和iff,條目是一個時間線,執行額外的elapsedms和uri分析。
任何想法,我可以做到這一點?
是否有解析字段的方法?這樣我可以嘗試將「body」解析爲elapsedms/uri,如果失敗,繼續。或者有沒有辦法在grok表達式中嵌套字段匹配?
想法?
編輯:如果'elaspedms'被設置,我可以只從'elaspedms'和'uri'創建主體而不是確保'body'總是被設置?