Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logstash中的字段提取_Logstash_Kibana - Fatal编程技术网

Logstash中的字段提取

Logstash中的字段提取,logstash,kibana,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 { gro

我使用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+)"
    }
}
过滤器{
格罗克{
类型=>“mylog”
模式=>“(?Comp\d+\u db\d+\ud+\ud+\ud+)”
}
}
理想情况下,我希望提取Comp40_db40_3720_18_25(数字的数量可以变化,但在每个部分中总是至少有1个数字由_分隔)和client_login(也可以是client_logout)。然后,我可以搜索CLIENT_NAME=Comp40。。。客户名称=Comp55等

我的配置中是否遗漏了一些东西,使其成为我可以在Kibana中使用的字段


谢谢

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

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

例如:

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

(请在上面的模式中使用)

正则表达式看起来不错,不过我会使用类似于(?Comp[\u a-z\d]+)的东西。你能告诉我什么不起作用吗。顺便说一下,我假设您的conf文件中也定义了elasticsearch输出。我想我所期待的是,如果我点击LHS上的@fields.client_名称(在列下),它会显示它提取的所有字段的计数,甚至是它们的列表,即Comp40..、Comp55等等。这有意义吗?我想我想要的最好的例子是Logstash/Kibana演示()。如果你点击@message,你可以看到该类型的5个左右的顶级“类别”的分类。