【问题标题】:How to drop a given event in logstash based on date?如何根据日期在logstash中删除给定事件?
【发布时间】:2015-07-15 06:05:40
【问题描述】:

我有一个 Kafka JSON 流,我在 logstash 中设置为我的输入。

我想删除日期早于给定日期(例如,今天的午夜)的事件。

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

如何过滤日期?有没有类似的东西:

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

【问题讨论】:

    标签: logstash


    【解决方案1】:

    在您的日期{}过滤器之前,放入 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 时,它​​似乎会下降毫秒,所以要小心。

    【讨论】:

      猜你喜欢
      • 2014-08-14
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 2020-09-03
      • 2021-09-21
      • 2020-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多