【发布时间】:2020-12-27 19:11:35
【问题描述】:
ruby/logstash noob 在这里使用 ELK 堆栈。
我有一堆字段
[消息][详细][读数][值1]
[消息][详细][读数][值2]
[消息][详细][读数][Value3]
我想在 logstash 配置中使用 ruby 循环。
然后我想对每个执行一个简单的操作,例如将它们从十六进制更改为十进制,例如
event.set('[currField]', event.get('[currField]').to_s.hex);
但我无法使用谷歌找到正确的语法.. 任何帮助表示赞赏。
我知道字段的名称,所以在最坏的情况下我必须对它们进行硬编码,但如果可能的话我想避免这种情况。
编辑:我还没有测试我的配置,所以我不知道“读出”是否会是一个哈希映射;我使用 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;
}
【问题讨论】:
-
所以 [Message][Detail][Readout] 是一个哈希值,您想遍历成员吗?
-
不,它们是单独的字段,但都带有 [Readout] 前缀
-
您是说字段名称包含方括号,还是 [Message] 是包含 [Detail] 哈希的对象?
-
不,我认为这就是您在 logstash 配置中访问它们的方式。当我在 kibana 中查看它们时,认为它们带有点。
Message.Detail.Readout.Value1 -
老实说我不确定我会在原始消息中查找它
标签: ruby logstash logstash-configuration elk