繁体   English   中英

logstash 配置循环遍历字段

[英]logstash config loop through fields

ruby/logstash noob 在这里使用 ELK 堆栈。

我有一堆字段

[消息][详细][读数][值1]

[消息][详细][读数][值2]

[消息][详细][读数][Value3]

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

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

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

但我无法使用谷歌找到正确的语法..任何帮助表示赞赏。

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

编辑:我还没有测试我的配置,所以我不知道“读数”是否会是 hash map; 我使用 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] hash。 您的伪代码会将值设置在顶层。 要覆盖它们,请使用

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
    '
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM