diff --git a/README.md b/README.md index 4108a56..2c6e7ca 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Graylog Archiver -Archives graylog indices to `backup_dir`, keeping the latest ones (`max_indices`). +Archives graylog indices (`index_prefix`) to `backup_dir`, keeping the latest ones (`max_indices`). For example, if you have the following indices: @@ -33,6 +33,7 @@ Create a configuration file for graylog archiver `graylog_archiver.json`: "elasticsearch": { "hosts": "localhost" }, + "index_prefix": "graylog", "max_indices": 3, "backup_dir": "/srv/backups/elasticsearch/graylog", "delete": false diff --git a/graylog_archiver/cli.py b/graylog_archiver/cli.py index 58239f7..2d826c4 100644 --- a/graylog_archiver/cli.py +++ b/graylog_archiver/cli.py @@ -25,6 +25,7 @@ def main(): archiver = GraylogArchiver( es=Elasticsearch(**args.config.get("elasticsearch")), + index_prefix=args.config.get("index_prefix"), max_indices=args.config.get("max_indices"), backup_dir=args.config.get("backup_dir"), delete=args.config.get("delete") diff --git a/graylog_archiver/graylog_archiver.py b/graylog_archiver/graylog_archiver.py index 1813379..53f09d2 100644 --- a/graylog_archiver/graylog_archiver.py +++ b/graylog_archiver/graylog_archiver.py @@ -5,13 +5,14 @@ class GraylogArchiver: - def __init__(self, es, max_indices, backup_dir, delete=False): + def __init__(self, es, index_prefix, max_indices, backup_dir, delete=False): self.es = es + self.index_prefix = index_prefix self.max_indices = max_indices self.backup_dir = backup_dir self.delete = delete self.logger = logs.create_logger() - self.graylog = GraylogElasticsearch(es, max_indices, backup_dir) + self.graylog = GraylogElasticsearch(es, index_prefix, max_indices, backup_dir) def archive(self): self.logger.info("Indices: %s" % self.graylog.indices()) diff --git a/graylog_archiver/graylog_elasticsearch.py b/graylog_archiver/graylog_elasticsearch.py index f8d6368..fcfc88e 100644 --- a/graylog_archiver/graylog_elasticsearch.py +++ b/graylog_archiver/graylog_elasticsearch.py @@ -15,13 +15,14 @@ def sort_indices(indices): class GraylogElasticsearch: - def __init__(self, es, max_indices, backup_dir): + def __init__(self, es, index_prefix, max_indices, backup_dir): self.es = es + self.index_prefix = index_prefix self.max_indices = max_indices self.backup_dir = backup_dir def indices(self): - return list(self.es.indices.get_mapping().keys()) + return list(filter(lambda x: x.startswith(self.index_prefix), list(self.es.indices.get_mapping().keys()))) def indices_to_archive(self): indices_sorted = sort_indices(self.indices()) diff --git a/test/config.json b/test/config.json index 3f30a61..bcab5c0 100644 --- a/test/config.json +++ b/test/config.json @@ -4,6 +4,7 @@ {"host" : "localhost", "port": 9201} ] }, + "index_prefix": "graylog", "max_indices": 1, "backup_dir": "/srv/containers/elasticsearch_backups", "delete": false