logstash-config循环遍历字段



ruby/logstash noob此处使用ELK堆栈。

我有一堆字段

〔消息〕〔详细信息〕〔读出〕〔值1〕

【消息】【详情】【读数】【数值2】

【消息】【详情】【读数】【数值3】

我想在logstash配置中使用ruby循环使用它。

然后我想对每个执行一个简单的操作,例如将它们从十六进制更改为十进制,例如

event.set('[currField]', event.get('[currField]').to_s.hex);

但是我用谷歌找不到正确的语法。。感谢任何帮助。

我知道字段的名称,所以在最坏的情况下,我必须对它们进行硬编码,但如果可能的话,我希望避免这种情况。

编辑:我还没有测试我的配置,所以我不知道是否"读出";将是一个哈希图;im使用grok过滤器在配置中添加值

"(?<[Message][Detail][Readout][Value1]>(?<=0x.{8})([A-F0-9]{2}))",
"(?<[Message][Detail][Readout][Value2]>(?<=0x.{8})([A-F0-9]{2}))" 

etc

伪:

event.get('[Message][Detail][Readout]') each { |k, v|
event[k] = newValue;
}

您可以使用.each来迭代[Message][Detail][Readout]哈希。您的伪代码将在顶层设置值。要覆盖它们,请使用

ruby {
code => '
readout = event.get("[Message][Detail][Readout]")
if readout
readout.each { |k, v|
event.set("[Message][Detail][Readout][#{k}]", v.to_s.hex)
}
end
'
}

最新更新