我正在使用 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 中使用的字段?
谢谢!
最佳答案
如果您无法正确匹配模式,请使用 Grok Debugger是一个很好的解决方案。
对于给定的问题,您可以将搜索数据分离到另一个变量中,并将额外的变化数字保存在另一个(垃圾)变量中。
例如:
(?<SEARCH_FIELD>Comp\d+)%{GREEDYDATA:trash_variable}]
(请在上面的模式中使用Grok Debugger)
关于logstash - 在 Logstash 中提取字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17659963/