[英]logstash grok - how to do conditional pattern matching?
我在同一個日志文件中有這三個日志行:
INFO [2015-08-27 18:46:14,279] ({qtp243745864-44} NotebookServer.java[onMessage]:101) - RECEIVE << RUN_PARAGRAPH
INFO [2015-08-27 18:46:14,322] ({qtp243745864-44} NotebookServer.java[broadcast]:253) - SEND >> NOTE
INFO [2015-08-27 18:46:16,809] ({pool-1-thread-2} RemoteInterpreter.java[init]:144) - Create remote interpreter org.apache.zeppelin.markdown.Markdown
我想使用grok解析它們但未能獲得正確的字段:1)如何解析括號內的數據? 2)日志行的最后一部分是示例中的(CMD方向cmd_data)或(cmd信息):
cmd=Receive or SEND
cmd_direction=<< or >>
cmd_data=RUN_PARAGRAPH or NOTE
但最后一行是CMD信息,它不符合相同的格式。
我試圖找到匹配第一和第二但不是第三的正確規則。 最終結果應該是or(cmd + cmd_data)還是(cmd_info)字段有什么幫助嗎?
Logstash在配置文件中有條件,因此您可以有條件地匹配事物。
例如:
if ([mesage] =~ /(RECEIVE|SEND)/) {
grok {
// do your grok here
}
} else if ([message] =~ /RemoteInterpreter/) {
grok {
// do some other grok here
}
}
如果您需要有關grok
s應該是什么的幫助,請嘗試使用grok調試器
我有類似的問題......
它幫助了我:
if ("SEND" in [message]) {
grok {
// do your grok here
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.