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