Yeah, I think you have to use ruby filter in order to accomplish what you want.
If I have understood correctly, you need to use 'tzinfo' rubygem in order to handle timezones the way you want to.
So, here's something to push you in the right direction.
ruby {
init => "['date', 'tzinfo'].each(&method(:require))"
code => "
tz = TZInfo::Timezone.get('Europe/Helsinki')
local = tz.utc_to_local(Time.at(event.get('epoch_time_integer_field')))
event.set('localtime', local.to_s)
event.set('timezone', tz.to_s)
"
}
This is completely untested and my ruby skills are close to zero, but it should be enough to give you an idea how to achive your goal. I also have no idea in which format you would like to save the local time etc etc.
Please note, that you need to deliver tzinfo gem to Logstash by yourself.