0

我正在尝试将一些代码集成到现有的 ELK 堆栈中,并且我们仅限于使用 filebeats + logstash。我想有一种方法来配置一个 grok 过滤器,该过滤器将允许不同的开发人员以预定义的格式记录消息,以便他们可以捕获自定义指标,并最终构建 kibana 仪表板。

例如,一个团队可能会记录以下消息:

metric_some.metric=2
metric_some.metric=5
metric_some.metric=3

另一个团队可能会从另一个应用程序记录以下消息:

metric_another.unrelated.value=17.2
metric_another.unrelated.value=14.2

有没有办法配置一个 grok 过滤器,它将metric_作为新字段捕获之后的所有内容以及值?我在这里读到的所有内容似乎都表明您需要提前知道字段名称,但我的目标是能够开始记录新指标而无需添加/修改 grok 过滤器。

注意:我意识到 Metricsbeat 在这里可能是一个更好的解决方案,但由于我们正在与我们无法控制的现有 ELK 集群集成,这对我来说不是一个选择。

4

1 回答 1

2

由于您的消息似乎是一系列键值对,因此您可以使用kv过滤器而不是grok.

使用grok时需要给目标字段kv命名,与目标字段的名称相同key

以下配置应该适用于您的情况。

filter { kv { prefix => "metric_" } }

对于事件,metric_another.unrelated.value=17.2您的输出将类似于{ "another.unrelated.value": "17.2" }

于 2019-02-14T19:55:58.567 回答