ELK删除使用未来日期创建的索引

时间:2016-08-09 13:20:09

标签: elasticsearch logstash

我有一个外部数据问题(我无法控制!)被导入我们的ELK环境。数据有时包含未来的时间戳,即明天或未来的一个时间段,例如今天是09/08/2016 BST和我的索引创建日期为2016年8月10日BST甚至08/09/2016 BST 。由于数据没有任何用处,我想做的就是在它进入ElasticSearch之前删除它。

有什么想法吗?

由于 达伦。

1 个答案:

答案 0 :(得分:1)

以下是使用ruby过滤器的示例。 出于说明目的,我发送给stdin的消息仅由格式为dd/MM/yyyy

的日期组成
input {
   stdin {}
}
filter {
   date {
      match => ["message", "dd/MM/yyyy"]
   }
   ruby {
      code => "
         if event['@timestamp'] > Time.now 
           event.cancel
         end
      "
   }
}
output {
   stdout {
      codec => rubydebug
   }
}

因此,如果您使用上面的配置启动logstash,您将获得以下输出:

10/08/2016  <--- today is accepted 
{
       "message" => "10/08/2016",
      "@version" => "1",
    "@timestamp" => "2016-08-09T22:00:00.000Z",
          "host" => "iMac-de-Consulthys.local"
}
11/08/2016  <--- tomorrow is dropped
10/09/2016  <--- a date in a month from now is dropped
09/07/2016  <--- a date a month ago is accepted
{
       "message" => "09/07/2016",
      "@version" => "1",
    "@timestamp" => "2016-07-08T22:00:00.000Z",
          "host" => "iMac-de-Consulthys.local"
}