【问题标题】:How can I aggregate terms based on a string prefix in Kibana4?如何根据 Kibana4 中的字符串前缀聚合术语?
【发布时间】:2015-05-24 00:21:43
【问题描述】:

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

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

我想在 Kibana4 中使用顶级记录器(ab)作为内部切片,并使用二级记录器(a.b,@ 987654325@, b.c) 作为外部“甜甜圈”。

“展开”饼图和 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"(未修改的值)。

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

这有可能吗?

【问题讨论】:

  • 抱歉,您的问题到底是什么?
  • 简而言之:我有一个像foo.bar.baz.qux 这样的术语。我想将其索引为foofoo.barfoo.bar.baz.qux

标签: elasticsearch logstash kibana-4


【解决方案1】:

只要您有固定数量的级别,您就可以简单地定义 3 种模式,例如。

FirstLevel:%{DATA:firstLevel}。 FirstAndSecondLevel: %{GREEDYDATA:firstAndSecondLevel}。 完整路径:%{GREEDYDATA:fullPath}

然后,您可以使用 he grok 过滤器将所有三种模式应用于您的消息。您可以使用其中一种模式执行 3 个单独的 grok 过滤器,也可以将所有三种模式放在一个 grok 过滤器中并将 break_on_match 设置为 false。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多