Hier ist eine Antwort auf eine sehr ähnliche Frage : logstash name fields dynamically
Aus diesem präzisen Fall der ruby
Filter muss ein bisschen mehr beteiligt sein, um verschiedene Dinge
filter {
ruby {
code => "
newhash = {}
event.to_hash.each {|key, value|
re = /(\w::[a-z]+)_(\d+_\d+_\d+_\d+)_(\d+)_(\d+_\d+_\d+_\d+)_(\d+)/
if key =~ re then
field, bIP, bport, cIP, cport = key.match(re).captures
newhash[field] = event[key]
newhash['bIP'] = bIP.gsub('_', '.')
newhash['bport'] = bport
newhash['cIP'] = cIP.gsub('_', '.')
newhash['cport'] = cport
event.remove(key)
end
}
newhash.each {|key,value|
event[key] = value
}
"
}
}
So zu erfassen, wenn Sie ein Feld wie "A::field_1_2_3_4_22_5_6_7_8_365" => "6"
in Ihrem Fall haben, wird Ihre Veranstaltung dann die folgenden Felder enthalten:
{
"A::field" => "6",
"bIP" => "1.2.3.4",
"bport" => "22",
"cIP" => "5.6.7.8",
"cport" => "365"
}
Können Sie das ausprobieren? – Val