Ошибка синтаксического анализа Logstash при использовании Time.parse под ruby ​​fiter - PullRequest
0 голосов
/ 07 января 2019

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, а другие циклы выполнения работают нормально?

Может быть, другое решение, чтобы просто получить разницу во времени в секундах?

спасибо!

...