将 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" }
我正在尝试将一些代码集成到现有的 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" }