将 grok 与 logstash 结合使用的自定义指标

Custom metrics using grok with logstash

我正在尝试将一些代码集成到现有的 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_ 之后的所有内容作为新字段连同值一起捕获?我读过的所有内容 here 似乎都表明您需要提前知道字段名称,但我的目标是能够开始记录新指标而无需 add/modify grok 过滤器。

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

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

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

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

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

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