В бюджетных установках Elasticsearch приходится тчательно следить за использованием системных ресурсов, поэтому будем архивировать и удалять не используемые индексы в данный момент.

elastic-logo

Архивация индексов

Вот статья с примерами по резервному копированию elasticsearch.

Можно посмотреть curator для архивации, но пока будем разбираться с ручным вариантом, для общего понимания.

Нужно написать скрипт для резервирования. Будем архивировать по одному индексу, так проще контролировать пространство и восстанавливать только нужные.

У меня почему-то не получилось дообавлять репозитории на лету, пришлось добавить в /etc/elasticsearch/elastcsearch.yml:

path.repo: ["/es_snapshots", "/tmp/es_snapshots"]

Примерный алгоритм:

1. Создаем Snapshot репозиторий
curl -XPUT http://localhost:9200/_snapshot/log_archive -d '{ "type": "fs", "settings": { "location":"/es_snapshots", "compress":true}}'
2. Делаем снимок
curl -XPUT http://localhost:9200/_snapshot/log_archive/winlogbeat-2017.06.26?wait_for_completion=true -d '{ "indices":"winlogbeat-2017.06.26", "ignore_unavailable":true, "include_global_state":false }'
3. Удаляем индексы для которых сделали снимок
curl -XDELETE http://localhost:9200/winlogbeat-2017.06.26
4. Архивируем каталог со снимком
tar cjf /tmp/es_snaphots_winlogbeat-2017.06.26.tar.bz2 /es_snapshots
5. Перемещаем в какое-то хранилище
scp /tmp/es_snaphots_winlogbeat-2017.06.26.tar.bz2 username@backupserver:/elastic/archive/

rm -f /tmp/es_snaphots_winlogbeat-2017.06.26.tar.bz2
6. Удаляем Snapshot репозиторий
curl -XDELETE http://localhost:9200/_snapshot/log_archive
7. Ощищаем каталог со снмком
rm -fr /es_snapshots/*

Ручной скрипт:

#!/bin/sh

ES_INDEX=syslog-2017.06.30

curl -XPUT http://localhost:9200/_snapshot/log_archive -d '{ "type": "fs", "settings": { "location":"/es_snapshots", "compress":true}}'
curl -XPUT http://localhost:9200/_snapshot/log_archive/${ES_INDEX}?wait_for_completion=true -d '{ "indices":"'${ES_INDEX}'", "ignore_unavailable":true, "include_global_state":false }'
curl -XDELETE http://localhost:9200/${ES_INDEX}
tar cjf /tmp/es_snaphots_${ES_INDEX}.tar.bz2 /es_snapshots
curl -XDELETE http://localhost:9200/_snapshot/log_archive
rm -fr /es_snapshots/*
Востановление индексов
1. Разархивиуем
cd /tmp; tar xjf es_snaphots_winlogbeat-2017.06.26.tar.bz2
2. Подключаем репозиторий
curl -XPUT http://localhost:9200/_snapshot/log_archive_restore -d '{ "type": "fs", "settings": { "location":"/tmp/es_snapshots", "compress":true}}'
3. Восстанавливаем
curl -XPOST http://localhost:9200/_snapshot/log_archive_restore/winlogbeat-2017.06.26/_restore -d '{ "ignore_unavailable": true, "include_global_state": false}'
4. Отключаем репозиторий
curl -XDELETE http://localhost:9200/_snapshot/log_archive_restore

Ссылки