在Logstash中提取字段

时间:2013-07-15 17:16:09

标签: logstash kibana

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

谢谢!

1 个答案:

答案 0 :(得分:4)

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

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

例如:

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

(请使用上述模式中的Grok Debugger