使用 ruby 过滤器在日志存储中将十六进制字符串转换为二进制并将二进制转换为十进制
HEXADECIMAL string to Binary and Binary to decimal in log-stash using ruby filter
我正在使用 logstash,我正在使用 ruby 过滤器将 HEX 更改为十进制,这对一组数据非常有效。我为此使用的是 ;
ruby{
code => "event.set('xxx', event.get('xx').hex)"
}
我正在寻找类似的东西,它可以将 HEX 转换为二进制,然后在我理解 patterm.The 之后也将其转换为十进制,我需要这样做的原因是因为我从十六进制值中选取不均匀的位,例如
十六进制字符串 - “ABC”
二进制 - “101010111100”
然后我将使用 GROK 仅选择前三位“101”并转换为我想要的值的十进制字段,例如下一个“010”到另一个字段。我刚刚得到两个 conversions.Not Grok
的帮助
您可以使用 to_i 和 to_s 并指定基数
来进行转换
mutate { add_field => { "[HexNum]" => "4a" } }
ruby {
code => '
hexNum = event.get("HexNum")
event.set("binNum", hexNum.to_i(16).to_s(2))
'
}
然后您可以使用您的 grok 过滤器挑选出您想要的 [binNum] 部分并将它们放入几个字段中,然后将它们转换为十进制
ruby {
code => '
event.set("field1", event.get("field1").to_i(2).to_s)
event.set("field2", event.get("field2").to_i(2).to_s)
'
}
我正在使用 logstash,我正在使用 ruby 过滤器将 HEX 更改为十进制,这对一组数据非常有效。我为此使用的是 ;
ruby{
code => "event.set('xxx', event.get('xx').hex)"
}
我正在寻找类似的东西,它可以将 HEX 转换为二进制,然后在我理解 patterm.The 之后也将其转换为十进制,我需要这样做的原因是因为我从十六进制值中选取不均匀的位,例如
十六进制字符串 - “ABC” 二进制 - “101010111100”
然后我将使用 GROK 仅选择前三位“101”并转换为我想要的值的十进制字段,例如下一个“010”到另一个字段。我刚刚得到两个 conversions.Not Grok
的帮助您可以使用 to_i 和 to_s 并指定基数
来进行转换 mutate { add_field => { "[HexNum]" => "4a" } }
ruby {
code => '
hexNum = event.get("HexNum")
event.set("binNum", hexNum.to_i(16).to_s(2))
'
}
然后您可以使用您的 grok 过滤器挑选出您想要的 [binNum] 部分并将它们放入几个字段中,然后将它们转换为十进制
ruby {
code => '
event.set("field1", event.get("field1").to_i(2).to_s)
event.set("field2", event.get("field2").to_i(2).to_s)
'
}