Skip to content

Instantly share code, notes, and snippets.

@msvitok77
Created July 27, 2017 12:25
Show Gist options
  • Save msvitok77/9fd2a1e5fddeb9a79587a0d2761b7298 to your computer and use it in GitHub Desktop.
Save msvitok77/9fd2a1e5fddeb9a79587a0d2761b7298 to your computer and use it in GitHub Desktop.
Delete old logstash storages
import urllib.request
from datetime import datetime, timedelta
import sys
server = ''
def delete_one(what):
"""Deletes one logstash storage"""
global server
print('Deleting: {}, server: {}'.format(what, server))
opener = urllib.request.build_opener(urllib.request.HTTPHandler)
request = urllib.request.Request('http://{}/{}'.format(server, what))
request.get_method = lambda: 'DELETE'
opener.open(request)
def delete_older_than(data, days):
"""Deletes logstash storages older than 'days'"""
marker = datetime.now() - timedelta(days=days)
for line in data[1:]:
items = line.split()
name = items[2].decode('utf8')
if name.startswith('logstash'):
a_date = datetime.strptime(name[-10:], '%Y.%m.%d')
if a_date < marker:
delete_one(name)
if __name__ == '__main__':
if len(sys.argv) != 3:
print("\nExpecting number of days and server.\n\tExample: python3 main.py 7 10.232.1.221:9200\n")
sys.exit()
days = int(sys.argv[1])
server = sys.argv[2]
with urllib.request.urlopen('http://{}/_cat/indices?v'.format(server)) as resp:
data = resp.readlines()
delete_older_than(data, days)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment