如何在Kibana4中基于字符串前缀聚合术语?



流入Kibana实例的一个字段包含Python应用程序的记录器名称。这些名称表示应用程序结构,用点分隔。例如,我们可以有以下日志记录器:

a
a.b
a.b.c
a.d
b.c

我想在Kibana4中使用顶级记录器(ab)作为内部切片,并使用第二级记录器(a.b, a.d, b.c)作为外部"甜甜圈"建立一个2级饼图。

"展开"饼图并对预期结果进行ascii化,如下所示:

==============++++   <-- representing the main aggregation (inner slices)
----oooooooooo****   <-- representing the sub-aggregation (outer donut)
With:
    =: a
    +: b
    -: a.b
    o: a.d
    *: b.c

在Kibana3中,记录器名称实际上被分割成单独的令牌,因此我将有令牌abcd可用。Kibana4似乎并没有把它们分开。

我试图将自定义索引映射设置"index"附加到"analyzed",但仍然留下字段"未拆分"。经过额外的思考,这并不能真正帮助我得到我想要的输出。

相反,接收传入消息并在索引中存储两个附加字段可能会有所帮助,这两个字段分别表示顶级和第二级记录器名称。因此,"a.b.c"的传入值将被存储为索引中的"a"(根记录器)、"a.b"(第一级记录器)和"a.b.c"(未修改的值)。

这样,我就可以使用根级记录器作为主聚合,第一级记录器作为子聚合来设置饼状图。

这是可能的吗?

只要你有固定数量的关卡,你可以简单地定义3个模式,如:

FirstLevel: %{数据:FirstLevel}。FirstAndSecondLevel: % {GREEDYDATA: FirstAndSecondLevel}。FullPath: % {GREEDYDATA: FullPath}

然后,您可以使用grok过滤器将所有三种模式应用于您的消息。你可以使用三个单独的grok过滤器,每个过滤器使用一个模式,或者你可以将所有三个模式放在一个grok过滤器中,并将break_on_match设置为false。

您应该能够在kibana中对这些字段进行分组。

相关内容

  • 没有找到相关文章

最新更新