Created
July 27, 2017 12:25
-
-
Save msvitok77/9fd2a1e5fddeb9a79587a0d2761b7298 to your computer and use it in GitHub Desktop.
Delete old logstash storages
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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