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并且其他运行周期运行得很好?
也许只是以秒为单位获取时差的其他解决方案?
谢谢!