2016-03-21 7 views
0

Ich bin auf der Suche nach einer Möglichkeit, alte Logstash-Indizes mit einem Skript zu entfernen, meine Logstash-Indexe werden logstash-2016.02.29, logstash-2016.03.01 ... in dem Moment, dass ich eine Erweiterung in Chrome genannt Sense, um die Indizes zu entfernen. siehe Screenshot, oder ich kann auch verwenden curl die Indizes zu entfernen, curl -XDELETE 'http://myIpAddress:9200/logstash-2016.02.29'Entfernen Logstash Index/s mit einem Bash-Skript

enter image description here

Ich möchte ein Skript schreiben, die täglich laufen würde, und entfernen Sie logstash Index älter als 2 Wochen ab Elasticsearch. Ist das möglich und wenn ja, wie kann ich es mit dem Datum aus dem Indexnamen machen?

G

+1

Diese Antwort helfen könnten: http://stackoverflow.com/questions/33430055/removing- old-indexes-in-elasticsearch/33430132 # 33430132 (Kurator-Tool) – Val

+0

hey val, danke, dass es aussieht, als könnte es den Job machen. Ich werde es später testen und mein Skript sowie den Link zu deinem Vorschlag posten. – Gman

Antwort

0

einfach den Befehl find verwenden:

find . logstash* -mtime +14 -type f -delete 

Dies sucht im aktuellen Verzeichnis und unten, für alle Dateien, deren Name beginnt mit „logstash“, die älter als 14 Tage und löscht sie dann.

Wenn die Datei mal völlig unzuverlässig sind, und Sie haben die Dateinamen zu verwenden, so etwas wie dies versuchen:

#!/bin/bash 
testdate=$(date -d '14 days ago' '+%Y%m%d') 
for f in ./logstash-[0-9][0-9][0-9][0-9].[0-9][0-9].[0-9][0-9]; do 
    dt=$(basename "${f//.}") 
    dt=${dt#logstash-} 
    [ $dt -le $testdate ] && rm -f "$f" 
done