logstash 配置循环遍历字段
logstash config loop through fields
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);
但我无法使用 google 找到正确的语法。感谢任何帮助。
我知道字段的名称,所以最坏的情况我将不得不对它们进行硬编码,但我希望尽可能避免这种情况。
编辑:我还没有测试我的配置,所以我不知道“Readout”是否是一个哈希映射;我正在使用 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 菜鸟在这里使用 ELK 堆栈。
我得到了一堆字段
[Message][Detail][Readout][Value1]
[Message][Detail][Readout][Value2]
[Message][Detail][Readout][Value3]
我想在 logstash 配置中使用 ruby 循环。
然后我想对每个执行一个简单的操作,例如将它们从十六进制更改为十进制,例如
event.set('[currField]', event.get('[currField]').to_s.hex);
但我无法使用 google 找到正确的语法。感谢任何帮助。
我知道字段的名称,所以最坏的情况我将不得不对它们进行硬编码,但我希望尽可能避免这种情况。
编辑:我还没有测试我的配置,所以我不知道“Readout”是否是一个哈希映射;我正在使用 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
'
}