3

我正在使用 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 中使用的字段?

谢谢!

4

1 回答 1

4

如果您在正确匹配模式时遇到任何困难,使用Grok 调试器是一个很好的解决方案。

对于您给定的问题,您可以将搜索数据分离到另一个变量中,并将其他不同的数字保存在另一个(垃圾)变量中。

例如:

(?<SEARCH_FIELD>Comp\d+)%{GREEDYDATA:trash_variable}]

(请在上述模式中使用Grok 调试器)

于 2013-07-24T10:23:39.533 回答