Logstash Can';从Netflow输入获取geoip定位的日志存储

Logstash Can';从Netflow输入获取geoip定位的日志存储,logstash,geoip,Logstash,Geoip,我试图使用Logstash从Netflow源解析并地理定位IP地址,它可以将数据放入Elasticsearch,但它不会放入geoip信息。这是我在logstash中使用的配置文件 input { udp { host => localhost port => 5555 codec => netflow } } filter { ge

我试图使用Logstash从Netflow源解析并地理定位IP地址,它可以将数据放入Elasticsearch,但它不会放入geoip信息。这是我在logstash中使用的配置文件

input {
        udp {
                host => localhost
                port => 5555
                codec => netflow
        }
}

filter {
        geoip {
                target => "geoip"
                source => "ipv4_dst_addr"
                add_tag => ["geoip"]
                add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}"$
                add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" $
        }
}

output {
        stdout { }
        elasticsearch { host => "127.0.0.1" }
}

更多可能有用的信息,请使用Logstash 1.4.2和Elasticsearch 1.3.4。

找到这个问题的答案了吗

如果没有,请注意,您需要使用mutate将坐标转换为float

然而,Logstash 1.3及以上版本中的geoip过滤器直接添加了一个位置字段,因此您不必使用add_字段,甚至不必使用转换器。如果您尝试这两种解决方案,请告诉我如何进行。多谢各位


旁注:建议使用Elasticsearch的Logstash 1.4.2版本是1.1.1,我刚刚花了一些时间来研究它,它最终成为Netflow编解码器代码中的一个bug(特别是
Netflow/util.rb
中的
IP4Addr
类)

您应该能够使用
mutate
过滤器解决此问题,如下所示:

filter {
    mutate {
        convert => { 
            "[netflow][ipv4_src_addr]" => "string"
            "[netflow][ipv4_dst_addr]" => "string"
        }
    }
    geoip {
        source => "[netflow][ipv4_src_addr]"
        target => "src_geoip"
    }
    geoip {
        source => "[netflow][ipv4_dst_addr]"
        target => "dst_geoip"
    }
}

我已经提交了一个配置文件,但目前,请尝试该配置。

我现在放弃了使用straight Netflow,我正在使用Bro将流数据推送到Logstash,并找到了一个很好的配置文件,该文件添加到geoip数据中。我计划在一周左右的时间内重新访问Netflow,因为我需要能够使用这种输入格式。我试试你的建议。非常感谢。