2016-08-09 4 views
0

Ich habe ein Problem mit externen Daten (die ich nicht kontrollieren kann!), Die in unsere ELK-Umgebung importiert werden. Die Daten enthalten manchmal einen zukünftigen Zeitstempel, dh einen für morgen oder noch weiter in der Zukunft nehmen wir heute zum Beispiel den 09.08.2016 BST und ich habe Indizes mit Daten vom 10.08.2016 BST und sogar vom 08.09.2016 BST erstellt . Da die Daten keinen Nutzen haben, möchte ich sie entfernen, bevor sie überhaupt in ElasticSearch eingeht.ELK Löschen von Indizes, die mit einem zukünftigen Datum erstellt wurden

Irgendwelche Ideen?

Danke Darren.

+0

Wenn dies Logstash durchläuft, könnten Sie diese Ereignisse erkennen, bevor sie in die Ausgabe von elasticsearch eintreten und sie löschen. – Val

+0

Ich habe versucht, davon weg zu finden, aber kann nicht finden, einen Datum Vergleich in Logstash –

+0

zu tun Sie können es mit dem 'Ruby' Filter – Val

Antwort

1

Hier ist ein Beispiel mit einem ruby Filter. Zur Veranschaulichung wird die Botschaft, die ich an stdin senden ausschließlich 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 
    } 
} 

So ein Datum mit dem Format zusammengesetzt, wenn Sie mit der obigen Konfiguration starten logstash, erhalten Sie die folgende Ausgabe:

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" 
} 
+0

Vielen Dank dafür. Es hat Spaß gemacht –

Verwandte Themen