Logstash 如何根据日期删除日志存储中的给定事件?

Logstash 如何根据日期删除日志存储中的给定事件?,logstash,Logstash,我在logstash中设置了一个Kafka JSON流作为输入 我想删除日期在给定日期之前的事件(例如,今天的午夜) 我可以正确解析输入(它是json,所以是默认值),并且可以使用json编解码器将其打印到标准输出 如何筛选日期?是否有类似于: filter { if [date] <= "some date" { drop { } } } 过滤器{ 如果在日期{}过滤器之前[date],则进入ruby{}并整理服务器的当前时间: event['server_timest

我在logstash中设置了一个Kafka JSON流作为输入

我想删除日期在给定日期之前的事件(例如,今天的午夜)

我可以正确解析输入(它是json,所以是默认值),并且可以使用json编解码器将其打印到标准输出

如何筛选日期?是否有类似于:

filter {
  if [date] <= "some date" {
    drop { }
  }
}
过滤器{

如果在日期{}过滤器之前[date],则进入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时,它似乎减少了毫秒,因此请注意。

在日期{}过滤器之前,请进入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时,它似乎下降了毫秒,所以要小心