有没有一种方法可以将十进制格式的ip地址转换成正常的人类可读的logstash格式?

有没有一种方法可以将十进制格式的ip地址转换成正常的人类可读的logstash格式?,logstash,Logstash,我正在分析logstash中的csv文件,其中包含网络流量统计信息。这些统计数据以十进制格式报告ip地址。我想以点四元(人类可读)格式将它们存储在logstash中。有没有办法通过mutate实现这一点?您应该可以使用如下ruby过滤器: filter { ruby { code => 'event["ip_as_dotted_quad"] = [event["your_field_here"].to_i].pack("N").unpack("C4").join(".")'

我正在分析logstash中的csv文件,其中包含网络流量统计信息。这些统计数据以十进制格式报告ip地址。我想以点四元(人类可读)格式将它们存储在logstash中。有没有办法通过mutate实现这一点?

您应该可以使用如下ruby过滤器:

filter {
  ruby {
    code => 'event["ip_as_dotted_quad"] = [event["your_field_here"].to_i].pack("N").unpack("C4").join(".")'
  }
}
您只需在此处填写
您的\u字段
。如果已将字段转换为整数,则可以省略
.to\u i


(赊账到期时赊账——我在本页底部找到了ip地址片段:但在此处对其进行了修改。)

在Logstash 7.9.x中,这是有效的:

filter {
    ruby { code => '
        input = event.get("your_field_here").to_i;
        result = IPAddr.new(input, Socket::AF_INET).to_s;
        event.set("ip_as_dotted_quad", result);
        '
    }
}

多亏了@Aaron Nimocks的代码。

什么是“十进制”IP地址格式,如果与虚线四元组不一样的话?维基百科似乎没有一个清晰的定义,但这个网页会解释一下:啊,32位是一个整数。在C中,它被称为an。几年后,但当试图将protobuf字节字符串转换为有用的格式时,这会有所帮助。