Hi,
I've got the following setup: Netflow -> remote logstash -> file -> file transfer -> server logstash -> Elasticsearch.
On the server logstash I'm trying to parse the netflow file but the log outputs kv filter has no support for this type of data kv filter has no support for this type of data {:type=>Hash, :value=>{"output_snmp"=>3, "forwarding_status"=>{"reason"=>0, "status"=>1}, "in_pkts"=>1, "ipv4_dst_addr"=>"10.0.10.10", "first_switched"=>"2017-11-17T20:07:07.999Z", "flowset_id"=>257, "l4_src_port"=>1030, "version"=>9, "application_id"=>"0:0", "flow_seq_num"=>12691, "ipv4_src_addr"=>"10.0.0.111", "in_bytes"=>92, "protocol"=>17, "flow_end_reason"=>2, "last_switched"=>"2017-11-18T13:51:07.999Z", "input_snmp"=>0, "out_pkts"=>1, "out_bytes"=>64, "l4_dst_port"=>8888}}
. Stdout doesn't look totally correct either.
Netflow file
{"@version":"1","host":"172.16.10.111","netflow":{"output_snmp":3,"forwarding_status":{"reason":0,"status":1},"in_pkts":1,"ipv4_dst_addr":"10.0.10.10","first_switched":"2017-11-17T20:07:07.999Z","flowset_id":257,"l4_src_port":1030,"version":9,"application_id":"0:0","flow_seq_num":12691,"ipv4_src_addr":"10.0.0.111","in_bytes":92,"protocol":17,"flow_end_reason":2,"last_switched":"2017-11-18T13:51:07.999Z","input_snmp":0,"out_pkts":1,"out_bytes":64,"l4_dst_port":8888},"@timestamp":"2017-11-15T02:19:26.000Z","type":"netflow","tags":["Test"]}
server config file
input {
file {
path => "/home/test3.txt"
sincedb_path => "/dev/null"
start_position => "beginning"
codec => json {
}
}
}
filter {
kv {
source => "netflow"
value_split => ":"
field_split => ","
}
}
output {
stdout {
codec => rubydebug
}
}
stdout
{
"path" => "/home/test3.txt",
"netflow" => {
"output_snmp" => 3,
"forwarding_status" => {
"reason" => 0,
"status" => 1
},
"in_pkts" => 1,
"ipv4_dst_addr" => "10.0.10.10",
"first_switched" => "2017-11-17T20:07:07.999Z",
"flowset_id" => 257,
"l4_src_port" => 1030,
"version" => 9,
"application_id" => "0:0",
"flow_seq_num" => 12691,
"ipv4_src_addr" => "10.0.0.111",
"in_bytes" => 92,
"protocol" => 17,
"flow_end_reason" => 2,
"last_switched" => "2017-11-18T13:51:07.999Z",
"input_snmp" => 0,
"out_pkts" => 1,
"out_bytes" => 64,
"l4_dst_port" => 8888
},
"@timestamp" => 2017-11-15T02:19:26.000Z,
"@version" => "1",
"host" => "172.16.10.111",
"type" => "netflow",
"tags" => [
[0] "Test"
]
}
How can I make logstash parse the file correctly?