我正在使用Logstash(使用Kibana作为UI)。我想从我的日志中提取一些字段,以便我可以在UI的LHS上按它们进行过滤。
我日志中的示例行如下所示:
2013-07-04 00:27:16.341 -0700 [Comp40_db40_3720_18_25] client_login=C-316fff97-5a19-44f1-9d87-003ae0e36ac9 ip_address=192.168.4.1
在我的logstash conf文件中,我把它放在:
filter {
grok {
type => "mylog"
pattern => "(?<CLIENT_NAME>Comp\d+_db\d+_\d+_\d+_\d+)"
}
}
理想情况下,我想提取Comp40_db40_3720_18_25(数字的位数可以变化,但在每个由_分隔的部分中始终至少为1)和client_login(也可以是client_logout)。然后,我可以搜索CLIENT_NAME = Comp40 ... CLIENT_NAME = Comp55等
我在配置中遗漏了哪些内容,使其成为我可以在Kibana中使用的字段?
谢谢!
答案 0 :(得分:4)
如果您在使模式正确匹配时遇到任何困难,使用Grok Debugger是一个很好的解决方案。
对于您提出的问题,您可以将搜索数据分离到另一个变量中,并将其他不同的数字保存在另一个(垃圾)变量中。
例如:
(?<SEARCH_FIELD>Comp\d+)%{GREEDYDATA:trash_variable}]
(请使用上述模式中的Grok Debugger)