在Ruby Fiter下使用Time.parse时,Logstash解析失败

时间:2019-01-07 20:30:32

标签: elasticsearch logstash

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并且其他运行周期运行得很好?

也许只是以秒为单位获取时差的其他解决方案?

谢谢!

0 个答案:

没有答案