#!/usr/bin/env python3 import requests, re, sys from datetime import datetime from datetime import timedelta import syslog overdue_days = int(sys.argv[1]) es_url = sys.argv[2] syslog.syslog(syslog.LOG_INFO, "clean indices before %d from %s" % ( overdue_days, es_url)) today = datetime.now() resp = requests.get(es_url + '/_cat/indices?v=true&s=index') for line in resp.iter_lines(): fields = re.split(r' +', str(line)) m = re.search(r'^(.*)-(\d\d\d\d)[\.\-](\d\d)[\.\-](\d\d)$', fields[2]) if m: d = datetime.strptime("%s %s %s" % ( m.group(2), m.group(3), m.group(4)), "%Y %m %d") delta = today - d if delta.days > overdue_days: try: syslog.syslog(syslog.LOG_INFO, "delete index %s, days: %d" % ( m.group(), delta.days)) resp = requests.delete(es_url + '/%s' % m.group()) if resp.status_code != 200: syslog.syslog(syslog.LOG_ERR, "failed %s" % str(resp.content) ) except Exception as e: syslog.syslog(syslog.LOG_ERR, "exception: %s" % repr(e))