Logstash Can';从Netflow输入获取geoip定位的日志存储
我试图使用Logstash从Netflow源解析并地理定位IP地址,它可以将数据放入Elasticsearch,但它不会放入geoip信息。这是我在logstash中使用的配置文件Logstash Can';从Netflow输入获取geoip定位的日志存储,logstash,geoip,Logstash,Geoip,我试图使用Logstash从Netflow源解析并地理定位IP地址,它可以将数据放入Elasticsearch,但它不会放入geoip信息。这是我在logstash中使用的配置文件 input { udp { host => localhost port => 5555 codec => netflow } } filter { ge
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,因为我需要能够使用这种输入格式。我试试你的建议。非常感谢。