gpt4 book ai didi

ruby - logstash 配置循环遍历字段

转载 作者:行者123 更新时间:2023-12-05 04:55:15 59 4
gpt4 key购买 nike

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

我有一堆字段

[Message][Detail][Readout][Value1]

[Message][Detail][Readout][Value2]

[Message][Detail][Readout][Value3]

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

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

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

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

我知道字段的名称,所以最坏的情况我将不得不对它们进行硬编码,但我希望尽可能避免这种情况。

编辑:我还没有测试我的配置,所以我不知道“Readout”是否是一个 HashMap ;我正在使用 grok 过滤器在配置中添加值

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

等等

伪:

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

关于ruby - logstash 配置循环遍历字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65469485/

59 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com