Hi.
Currently, my logstash filter looks something like this:
filter {
if ('text1' in [message]) {
grok {
...
add_tag => [ "connection_established" ]
}
aggregate {
...
}
elapsed {
start_tag => "connection_established"
end_tag => "connection_delete"
unique_id_field => "conn_fingerprint"
}
}
else if ('text2' in [message]) {
grok {
...
add_tag => [ "connection_delete" ]
}
aggregate {
...
}
elapsed {
start_tag => "connection_established"
end_tag => "connection_delete"
unique_id_field => "conn_fingerprint"
add_field => {
"connection_duration" => "%{elapsed_time}"
}
}
}
}
But, checking results, I see that elapsed plugin is not working correctly - for every "end event" (events with tag connection_delete
) I get tag elapsed_end_without_start
. (edit: of course, I imply "start events" are present, i.e. are present and are parsed correctly the same way as "end events", and "start event" 's timestamps are earlies than "end events". unique_id_field
value is also equal for related start and end events).
I've experimented around a bit (my pipeline.workers
was already 1
since I use aggregate plugin; also tried to set pipeline.batch.size
to 1
- no difference), but haven't reach any progress.
My main question is: can I use elapsed plugin like that? (when it's configuration is defined in two different branches of logstash config)
Or, maybe, it is strongly required that elapsed configuration is mentioned only once?