使用 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)
        '
    }