logstash 如何在Kibana/ELK中进行“不存在的地方”类型过滤?

ftf50wuq  于 2022-12-09  发布在  Logstash
关注(0)|答案(5)|浏览(193)

我正在使用ELK从我的日志文件创建 Jmeter 板。我有一个日志文件,其中的条目包含一个ID值和一个“成功”/“失败”值,显示具有给定ID的操作是成功还是失败。每个操作/ID可以失败无限次,最多成功一次。在我的Kibana Jmeter 板中,我希望显示每个操作ID具有“失败”值的日志条目的计数。但我想过滤掉ID存在“成功”日志条目的情况。也就是说,我只对从未成功的操作感兴趣。有什么技巧可以实现这一点吗?

fkvaft9z

fkvaft9z1#

这在Kibana 5搜索栏中很容易。只需添加一个过滤器

!(_exists_:"your_variable")

您可以切换筛选器或将反向查询编写为

_exists_:"your_variable"

在Kibana 4和Kibana 3中,您可以使用现在已弃用的此查询

_missing_:"your_variable"
    • 注意:**在Elasticsearch 7.x中,Kibana现在有一个下拉菜单,可以在搜索栏中选择KQL或Lucene样式的查询。请注意,_exists_:FIELD等语法是Lucene语法,您需要相应地设置下拉菜单。
zwghvu4y

zwghvu4y2#

在较新的ELK版本中(我认为在Elasticsearch 6之后),您应该使用field:*来检查字段是否存在,使用not field:*来检查字段是否丢失。
elastic search reference: https://www.elastic.co/guide/en/elasticsearch/reference/6.5/query-dsl-query-string-query.html#_wildcards

56lgkhnf

56lgkhnf3#

! (_exists_:NAME)对我不起作用。我使用来自以下方面的建议:
https://discuss.elastic.co/t/kibana-5-0-0--missing--is-not-working-anymore/64336

NOT _exists_:NAME
    • UPDATE**我遇到的问题是ES语法禁止在否定运算符后使用空格。请使用下列之一:
NOT _exists_:FIELD
!_exists_:FIELD
-_exists_:FIELD

检查教程:https://www.timroes.de/2016/05/29/elasticsearch-kibana-queries-in-depth-tutorial/

    • 注意:**在Elasticsearch 7.x中,Kibana现在有一个下拉菜单,可以在搜索栏中选择KQL或Lucene风格的查询。请注意,_exists_:FIELD等语法是Lucene语法,您需要相应地设置下拉菜单。
js81xvg6

js81xvg64#

在较新版本的Kibana中,默认语言现在是KQL(Kibana查询语言),而不是Lucene。所以这里的大多数答案都已经过时了。如果字段存在,查询如下:

your_variable:*

回答你的问题,你可以直接否定它:

not your_variable:*

您可以在此处找到更多文档:https://www.elastic.co/guide/en/kibana/7.15/kuery-query.html
如果您单击搜索字段中的按钮,也可以切换回Lucene,但在我看来,新语言更容易使用:

9gm1akwq

9gm1akwq5#

一个选择是在Kibana中为这个条件创建一个自己的查询。然后让你的面板只为使用这个查询而进行计数。

value:failure

More information here: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#query-string-syntax

相关问题