我有一个Kafka JSON流,我在logstash中设置为输入。
我想放弃日期在指定日期之前的事件(例如,今天的午夜)。
我可以正确解析输入(它是json,所以它是默认的),我可以使用json编解码器将其打印到stdout。
如何过滤日期?是否有类似的东西:
filter {
if [date] <= "some date" {
drop { }
}
}
答案 0 :(得分:3)
在您的日期{}过滤器之前,请放入ruby {}并收集服务器的当前时间:
event['server_timestamp'] = event['@timestamp']
然后正常使用您的日期{}过滤器将@timestamp重置为事件的时间。
之后,再次放入ruby {}来计算差异:
event['lag'] = ( ( event['server_timestamp'] - event['@timestamp'] ) ).to_f
然后回到logstash中,检查对你的约束的滞后:
# seconds!
if [lag] > 60 {
drop{}
}
如果您不想与服务器的时间进行比较,您可以随时使用。当我尝试使用ruby的Datetime时,它似乎下降了几毫秒,所以要注意这一点。