Очистка elasticsearch с помощью curator
Моя статья по установке и настройке системы сбора логов на основе ELK Stack получилась не полной без одного важного раздела. Сегодня расскажу, как настроить автоматическую очистку индексов elasticsearch с помощью curator. С этим столкнется каждый, кто будет эксплуатировать систему, так как она очень требовательна к ресурсам. Очистка старых индексов увеличивает быстродействие.
Статья будет короткая, так как процесс очистки индексов в elasticsearch с помощью curator в базовом варианте очень прост.
Установка curator
Для начала установим curator. Сделать это можно разными способами. Самый простой — из репозитория packages.elastic.co от авторов продукта. Подключим его в CentOS 7.
# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch # mcedit /etc/yum.repos.d/curator.repo
[curator-5] name=CentOS/RHEL 7 repository for Elasticsearch Curator 5.x packages baseurl=https://packages.elastic.co/curator/5/centos/7 gpgcheck=1 gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch enabled=1
Подключаем репозиторий в Debian 8/Ubuntu
# wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - # mcedit /etc/apt/sources.list.d/curator.list
deb [arch=amd64] https://packages.elastic.co/curator/5/debian stable main
Отдельный репозиторий для Debian 9
# deb [arch=amd64] https://packages.elastic.co/curator/5/debian9 stable main
Устанавливаем curtator:
# yum install elasticsearch-curator # apt update && apt install elasticsearch-curator
Так же curator можно установить через pip. Для Debian/Ubuntu достаточно просто выполнить:
# apt install python-pip
Установка curator через pip:
# pip install elasticsearch-curator
Настройка curator для очистки elasticsearch
Сделаем для примера простое задание на закрытие и удаление индексов с шаблоном nginx-* старше 14-ти дней. Для этого создадим директорию для конфигов curator и сами конфиги.
# mkdir /etc/curator # touch /etc/curator/action.yml # touch /etc/curator/config.yml
Заполняем файлы следующим содержимым. Сначала общий конфиг.
# mcedit /etc/curator/config.yml
client:
hosts:
- 127.0.0.1
port: 9200
url_prefix:
use_ssl: False
certificate:
client_cert:
client_key:
ssl_no_validate: False
http_auth:
timeout: 30
master_only: False
logging:
loglevel: INFO
logfile:
logformat: default
blacklist: ['elasticsearch', 'urllib3']Дальше файл с необходимыми действиями:
# mcedit /etc/curator/action.yml
actions:
1:
action: close
description: >-
Close indices older than 14 days (based on index name).
options:
ignore_empty_list: True
delete_aliases: False
disable_action: False
filters:
- filtertype: pattern
kind: prefix
value: nginx-
- filtertype: age
source: name
direction: older
timestring: '%Y.%m.%d'
unit: days
unit_count: 14
2:
action: delete_indices
description: >-
Delete indices older than 14 days (based on index name).
options:
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern
kind: prefix
value: nginx-
- filtertype: age
source: name
direction: older
timestring: '%Y.%m.%d'
unit: days
unit_count: 14
Обращаю внимание на форматирование файла. Отступы в начале строки важны. Они должны быть именно такие, как у меня в примере.
Конфиг сделан на основе примеров из официальной документации. Рекомендую все подробности искать там. Запускаем очистку:
# /usr/bin/curator --config /etc/curator/config.yml /etc/curator/action.yml
В консоли увидите информативный вывод выполняемых команд по очистке индексов. После завершения очистки, не забудьте добавить задание в cron.
# crontab -e
4 4 * * * /usr/bin/curator --config /etc/curator/config.yml /etc/curator/action.yml
Очистка индексов будет выполняться каждый день в 4 утра.