Logstash версия 6.4.2
Вот код:
filter{
if [@metadata][isDropMode] == "true" {
if [@metadata][mode] == "a" {
date{
match => ["time", "yyyyMMdd-HH:mm:ss","yyyyMMdd-HH:mm:ss.SSS"]
timezone => "%{timeZone}"
target => "time"
}
}
if [@metadata][mode] == "b" {
mutate { add_field => { "time" => "%{bTime}" } }
}
ruby {
init => "require 'time'"
code =>
"
t1 = Time.now.utc
t2 = event.get('time').to_s
event.set('timeDistance', (t1 - Time.parse(t2)).to_s)
timeDistance = event.get ('timeDistance')
if (timeDistance.to_f > 30.0)
event.set('[@metadata][drop]', 'true')
end
"
}
}
}
Генерация _rubyexception несовместима при некоторых циклах выполнения, этот код завершается ошибкой, в то время как при других циклах выполнения код работает просто отлично.
данные о событиях одинаковы для каждого цикла.
проблемная строка: Time.parse
Есть идеи, почему Time.parse
просто непредсказуемо? почему каждый цикл всех событий получает _rubyexception, а другие циклы выполнения работают нормально?
Может быть, другое решение, чтобы просто получить разницу во времени в секундах?
спасибо!